问财量化选股策略逻辑
该选股策略包括五个条件:元宇宙、昨日股价大于250日均线、非ST、10点之前筛选出当天涨停股票、五部涨停战法。通过先筛选符合要求股票,再通过个股的当前情况判断其是否符合五部涨停战法标准,选择符合要求的个股进行投资。
选股逻辑分析
该选股策略主要通过以下五个条件选择符合要求的个股进行投资:
- 元宇宙:选择热门板块中的个股
- 昨日股价大于250日均线:判断个股目前的价格是否接近长期均线及相对稳定
- 非ST:排除ST股票,减小风险
- 10点之前筛选出当天涨停股票:通过关注个股的放量情况,筛选出当天涨幅较大的个股
- 五部涨停战法:通过判断个股当天的开盘价、第一、第二次涨停的时间及涨幅等情况,确认个股是否符合五部涨停战法标准。
综合以上五个条件,选择符合要求的个股进行投资。
有何风险?
- 选股逻辑可能存在过度拟合、过度优化导致未来表现下降的风险;
- 五部涨停战法属于短期操作,风险较大;
- 选股逻辑过于依赖当天市场情况,可能会受到市场波动影响较大。
如何优化?
- 加入其他指标,如市盈率、市净率等;
- 增加涨跌停限制,避免停牌或者涨跌停带来的误判;
- 增加机器学习算法对选股逻辑进行优化。
最终的选股逻辑
该选股策略选择元宇宙板块中、股票均价站在五日均线之上、非ST、10点之前筛选出当天涨停股票、符合五部涨停战法的个股作为投资目标。
同花顺指标公式代码参考
元宇宙:GNBK("gnxq")
昨日股价大于250日均线:C >= MA(250)
非ST:stflag = 0
10点之前筛选出当天涨停股票:
- 涨幅排名前10%的个股
- 开盘价高于昨日收盘价
- 当前价位在第一次涨停前的80%以上
五部涨停战法:
- 首次涨停:涨幅大于9.5%
- 第二次涨停:涨幅大于10%
- 第三次涨停:涨幅大于10%
- 第四次涨停:涨幅大于10%
- 第五次涨停:涨幅大于10%
Python代码参考
import pandas as pd
import tushare as ts
def stock_selector():
ts.set_token('your_token')
pro = ts.pro_api()
# 获取所有元宇宙板块中的个股
gnxq = pro.index_basic(
fields='category',
identifying_code='9650',
market='SSE'
)
gnxq_stocks = gnxq.loc[gnxq['category'] == 'GN023']
data_selected = pd.DataFrame()
for code in gnxq_stocks['con_code']:
df = pro.query('stock_basic', ts_code=code, fields=['name','list_date'])
ts_data = ts.pro_bar(
ts_code=code,
adj='qfq',
start_date='20220111',
end_date='20220111'
)
if len(ts_data) > 0 and ts_data.iloc[-1]['close'] >= ts_data.iloc[-1]['close'].rolling(5).mean()[4] and ('ST' not in df['name'].values[0]) and (df['list_date'].values[0] < '20150101'):
try:
limit_data = ts.pro_bar(
ts_code=code,
adj='qfq',
start_date='20220110',
end_date='20220110'
)
if len(limit_data) > 0 and (limit_data['open'][0] > ts_data.iloc[-1]['close']) and (limit_data['pct_chg'][0] > 9.5) and (limit_data['open'][0] / ts_data.iloc[-1]['close'] > 1.8) and (limit_data['high'][0] / limit_data['low'][0] < 1.15):
limit_data = ts.pro_bar(
ts_code=code,
adj='qfq',
start_date='20220111',
end_date='20220111'
)
if len(limit_data) > 0 and (limit_data['pct_chg'][0] > 10) and ((limit_data.index[0] - ts_data.index[-1]).days == 1) and (limit_data['high'][0] / limit_data['low'][0] < 1.15):
limit_data = ts.pro_bar(
ts_code=code,
adj='qfq',
start_date='20220112',
end_date='20220112'
)
if len(limit_data) > 0 and (limit_data['pct_chg'][0] > 10) and ((limit_data.index[0] - ts_data.index[-1]).days == 2) and (limit_data['high'][0] / limit_data['low'][0] < 1.15):
limit_data = ts.pro_bar(
ts_code=code,
adj='qfq',
start_date='20220113',
end_date='20220113'
)
if len(limit_data) > 0 and (limit_data['pct_chg'][0] > 10) and ((limit_data.index[0] - ts_data.index[-1]).days == 3) and (limit_data['high'][0] / limit_data['low'][0] < 1.15):
limit_data = ts.pro_bar(
ts_code=code,
adj='qfq',
start_date='20220114',
end_date='20220114'
)
if len(limit_data) > 0 and (limit_data['pct_chg'][0] > 10) and ((limit_data.index[0] - ts_data.index[-1]).days == 4) and (limit_data['high'][0] / limit_data['low'][0] < 1.15):
data_selected = data_selected.append(df)
except:
continue
return data_selected[['name']]
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


