问财量化选股策略逻辑
选股逻辑为RSI小于65、流通市值50亿-100亿、周线MACD在零轴之上。该选股策略综合考虑了技术面和基本面因素,选取趋势较好且流动性较大的成长股票。
选股逻辑分析
该选股策略主要考虑了技术面和基本面因素,通过RSI指标筛选出近期走势相对平稳的股票,再通过流通市值50亿-100亿这个范围的选取股票流动性比较好。同时结合MACD指标,判断股票的价格趋势,选出短期底部整理或即将上涨的股票。
有何风险?
该选股策略同样存在选股条件较为单一的问题,忽略了一些其他重要的因素如行业因素、市盈率等。同时,对于MACD指标而言,具有滞后性,可能会导致选出的股票具有一定的时间滞后性。最后,选股过程中需要注意数据的准确性和更新频率,避免数据偏差的影响。
如何优化?
可以加入更多重要的因素作为选股条件,如行业因素、市盈率等,以加强对个股风险的控制,同时加入更多技术面指标或以数据挖掘的方式发现股票的价格走势的特点。另外,可以在MACD指标基础上加入其他指标,如KDJ、BOLL等指标,以提升选股效果。
最终的选股逻辑
选股逻辑为RSI小于65、流通市值50亿-100亿、周线MACD在零轴之上、市盈率不超过40倍。
同花顺指标公式代码参考
RSI指标公式
LC:=REF(CLOSE, 1);
AA:=SMA(MAX(CLOSE-LC,0),N,1)/SMA(ABS(CLOSE-LC),N,1)*100;
RSI:EMA(AA,M);
MACD指标公式
DIF:=EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);
DEA:=EMA(DIF,MID);
MACD:(DIF-DEA)*2,COLORSTICK;
python代码参考
# 计算RSI指标
def calc_rsi(close, n):
lc = close.shift(1)
aa = pd.Series(np.nan,index=close.index)
aa[n-1:] = close.sub(lc).clip(lower=0).rolling(n).mean() / close.sub(lc).abs().rolling(n).mean() * 100
rsi = aa.ewm(com=1.0/14, adjust=False).mean()
return rsi
# 计算MACD指标
def calc_macd(close, short=12, long=26, mid=9):
dif = close.ewm(span=short, adjust=False).mean() - close.ewm(span=long, adjust=False).mean()
dea = dif.ewm(span=mid, adjust=False).mean()
macd = (dif - dea) * 2
return macd
# 选股函数
def stock_picking(data):
# 计算RSI指标
rsi = calc_rsi(data['close'], 14)
# 计算MACD指标
macd = calc_macd(data['close'])
# 根据市值、RSI、MACD选取股票
cond = (data['negotiableMV'] >= 5e10) & (data['negotiableMV'] <= 1e11) & (rsi < 65) & (macd > 0)
# 筛选市盈率不超过40倍的股票
cond &= (data['pe'] <= 40)
stock_list = []
if sum(cond) >= 5:
selected_data = data[cond]
selected_data = selected_data.sort_values(by='preClose', ascending=False)
for i in range(5):
stock = selected_data.index[i]
if selected_data.loc[stock, 'changePct'] < 9.9:
stock_list.append(stock)
return stock_list
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


