选股逻辑
选取振幅大于1、MACD零轴以上,并且非ST股票(在10点之前选股)并且满足五部涨停战法的股票。
选股逻辑分析
满足以上条件的股票可能有较大的上升潜力,同时剔除了ST股票,减小了风险。
有何风险?
非ST股票和涨停战法的条件可能会让筛选出的股票范围过小,同时过于依赖技术指标可能会造成选股不稳定。
如何优化?
可以增加基本面的筛选条件,同时考虑股票市值、估值等因素作为筛选条件,减小风险。同时可以考虑加入其他技术指标或策略作为辅助筛选条件。
最终的选股逻辑
选取振幅大于1、MACD零轴以上,并且非ST股票(在10点之前选股)并且满足五部涨停战法的股票。
同花顺指标公式代码参考
- 振幅:ABS((HIGH-LOW)/REF(CLOSE,1)*100)>1
- MACD零轴以上:CROSS(MACD(12,26,9),0)>0
- 非ST:INDUSTRY("1009036312")==0
- 涨停战法:
- 一阳五线:RSI(CLOSE,6)>60 AND NOT CROSS(CLOSE,MA(CLOSE,5))
- 股价回踩:RSI(CLOSE,12)<35 AND CROSS(MA(CLOSE,5),CLOSE)
- 进击阶段:RSI(CLOSE,6)>70 AND CROSS(MA(CLOSE,7),MA(CLOSE,12))
- 走强阶段:RSI(CLOSE,6)>80 AND CROSS(MA(CLOSE,12),MA(CLOSE,24))
- 强势阶段:RSI(CLOSE,6)>80 AND CROSS(MA(CLOSE,5),MA(CLOSE,12))
python代码参考
import tushare as ts
def get_filter():
# 获取股票数据
df = ts.get_today_all()
# 筛选出非ST股票
df = df[df['name'].str.contains('ST') == False]
# 筛选出主板股票
df = df[df['market'] == 'sh']
# 计算振幅
amplitude = abs(df['high'] - df['low']) / df['open']
# 计算MACD指标
df['MACD'], df['signal'], df['hist'] = talib.MACD(df['close'], fastperiod=12, slowperiod=26, signalperiod=9)
# 计算涨停战法
rsi_6 = talib.RSI(df['close'], timeperiod=6)
rsi_12 = talib.RSI(df['close'], timeperiod=12)
ma_5 = talib.MA(df['close'], timeperiod=5)
ma_7 = talib.MA(df['close'], timeperiod=7)
ma_12 = talib.MA(df['close'], timeperiod=12)
ma_24 = talib.MA(df['close'], timeperiod=24)
one_yang = (rsi_6 > 60) & (~talib.CROSS(df['close'], ma_5))
return_touch = (rsi_12 < 35) & talib.CROSS(ma_5, df['close'])
enter_phase = (rsi_6 > 70) & talib.CROSS(ma_7, ma_12)
strong_phase = (rsi_6 > 80) & talib.CROSS(ma_12, ma_24)
bull_phase = (rsi_6 > 80) & talib.CROSS(ma_5, ma_12)
five_day_limit_up = one_yang & return_touch & enter_phase & strong_phase & bull_phase
# 综合筛选条件
mask = (amplitude > 0.01) & (df['MACD'] > 0) & five_day_limit_up
codes = mask.index.values.tolist()
return codes
如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。