问财量化选股策略逻辑
该选股策略选股逻辑为:选择换手率在3%-12%之间,上市年份为2021年,周线MACD在零轴线之上。
选股逻辑分析
该选股策略注重选取市值较小但潜力股票,通过选择换手率在3%-12%之间,上市年份为2021年,以及周线MACD在零轴线之上的股票进行选股,旨在找到价值潜力更高的有成长性股票。
有何风险?
该选股策略存在以下风险:1、仅采用了单一技术指标,忽略了基本面的影响;2、MACD指标在市场波动较大时容易产生误判,使选股结果不稳定;3、过分注重历史数据,不能适应市场的不断变化。
如何优化?
可以考虑采用多个技术指标相结合,比如同时结合KD线、RSI、BOLL等指标进行选股,以提高选股的可靠性和稳定性。在选股时可以加入基本面因素,如市盈率、市净率等指标,以更全面地评估股票的价值潜力和成长性。
最终的选股逻辑
选择换手率在3%-12%之间,上市年份为2021年,周线MACD在零轴线之上的股票。
同花顺指标公式代码参考
MACD指标的计算公式:
- 计算EMA12:EMA12=昨日EMA12×11/13+今日收盘价×2/13
- 计算EMA26:EMA26=昨日EMA26×25/27+今日收盘价×2/27
- 计算DIFF:DIFF=EMA12-EMA26
- 计算DEA:DEA=昨日DEA×8/10+今日DIFF×2/10
- 计算MACD:MACD=(DIFF-DEA)×2
通达信指标公式代码:
EMAEXP(CLOSE,12);
EMAEXP(CLOSE,26);
DIFF:=EMA12-EMA26;
DEA:=EMAEXP(DIFF,9);
MACD:=2*(DIFF-DEA);
python代码参考
import pandas as pd
from pytdx.hq import TdxHq_API
from pytdx.util.best_ip import select_best_ip
api = TdxHq_API()
ip = select_best_ip('tdx')
def get_stock_list(api):
dataList = []
for market in [0,1]:
stock_list = api.get_security_list(market, 0)
results = [(stock['code'], pd.Timestamp(stock['ipo_date']).year, stock['ipo_price'], stock['ipo_amount']) for stock in stock_list if stock['code'][0] in ['0', '3', '6']]
dataList += results
return pd.DataFrame(dataList, columns=['stock_code','ipo_year','ipo_price','ipo_amount'])
def check_macd(api, stock_code):
now = pd.Timestamp.now()
df = api.to_df(api.get_security_bars(4 if stock_code[0] == '0' else 3, 0 if stock_code[0] == '0' else 1, stock_code, 4, 1000)) # 获取周线数据
df['datetime'] = pd.to_datetime(df['datetime'])
df = df.set_index('datetime').resample('W-MON').last() # 按周重采样
df['ema12'] = df['close'].ewm(span=12, adjust=False).mean()
df['ema26'] = df['close'].ewm(span=26, adjust=False).mean()
df['diff'] = df['ema12'] - df['ema26']
df['dea'] = df['diff'].ewm(span=9, adjust=False).mean()
df['macd'] = 2 * (df['diff'] - df['dea'])
last_macd = df.loc[:now]['macd'].iloc[-1]
if last_macd > 0:
return True
else:
return False
stock_list = get_stock_list(api)
# 获取符合条件的股票列表
condition1 = stock_list['ipo_year'] == 2021
condition2 = (stock_list['ipo_price'] >= 1) & (stock_list['ipo_amount'] > 1000000)
matched_stocks = []
for stock_code in stock_list[condition1 & condition2]['stock_code']:
if check_macd(api, stock_code):
matched_stocks.append(stock_code)
# 输出结果
print('下列股票符合选股策略:')
print(matched_stocks)
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
