问财量化选股策略逻辑
1. 至少5根均线重合的股票
- 选取5日、10日、20日、60日、120日均线,要求至少5条均线重合。
2. 换手率>2%且<9%
- 选取换手率大于2%且小于9%的股票。
3. RSI小于65
- 选取RSI小于65的股票。
选股逻辑分析
以上三个条件分别从不同方面对股票进行了筛选,要求股票的短期和长期趋势稳定,换手率适中,且当前市场热度适中。这样的股票可能更加适合长期投资。
有何风险?
- 如果市场整体趋势向下,以上三个条件可能会筛选出一些弱势股票,投资者需要谨慎对待。
如何优化?
- 可以考虑加入更多均线进行筛选,例如30日、90日均线等,以提高筛选的准确性。
最终的选股逻辑
- 选取5日、10日、20日、60日、120日、30日、90日均线重合的股票,且换手率大于2%且小于9%,RSI小于65的股票。
python代码参考
import talib
import pandas as pd
def get_5_ma_and_rsi(df):
ma5 = talib.MA(df['close'], timeperiod=5)
ma10 = talib.MA(df['close'], timeperiod=10)
ma20 = talib.MA(df['close'], timeperiod=20)
ma60 = talib.MA(df['close'], timeperiod=60)
ma120 = talib.MA(df['close'], timeperiod=120)
rsi = talib.RSI(df['close'], timeperiod=14)
df['ma5'] = ma5
df['ma10'] = ma10
df['ma20'] = ma20
df['ma60'] = ma60
df['ma120'] = ma120
df['rsi'] = rsi
return df
def get_sticky_ma_and_rsi(df):
ma5 = talib.MA(df['close'], timeperiod=5)
ma10 = talib.MA(df['close'], timeperiod=10)
ma20 = talib.MA(df['close'], timeperiod=20)
ma60 = talib.MA(df['close'], timeperiod=60)
ma120 = talib.MA(df['close'], timeperiod=120)
rsi = talib.RSI(df['close'], timeperiod=14)
df['ma5'] = ma5
df['ma10'] = ma10
df['ma20'] = ma20
df['ma60'] = ma60
df['ma120'] = ma120
df['rsi'] = rsi
df['5ma'] = df['ma5'].shift(1)
df['10ma'] = df['ma10'].shift(1)
df['20ma'] = df['ma20'].shift(1)
df['60ma'] = df['ma60'].shift(1)
df['120ma'] = df['ma120'].shift(1)
df['5ma_diff'] = df['5ma'] - df['ma5']
df['10ma_diff'] = df['10ma'] - df['ma10']
df['20ma_diff'] = df['20ma'] - df['ma20']
df['60ma_diff'] = df['60ma'] - df['ma60']
df['120ma_diff'] = df['120ma'] - df['ma120']
df['stuck_ma5'] = df['5ma_diff'].fillna(0)
df['stuck_ma10'] = df['10ma_diff'].fillna(0)
df['stuck_ma20'] = df['20ma_diff'].fillna(0)
df['stuck_ma60'] = df['60ma_diff'].fillna(0)
df['stuck_ma120'] = df['120ma_diff'].fillna(0)
df['stuck_rsi'] = talib.RSI(df['stuck_ma5'], timeperiod=14)
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


