问财量化选股策略逻辑
选股逻辑为RSI小于65、流通市值50亿-100亿、昨日成交额大于6千万。该选股逻辑结合了技术面和基本面的因素,以RSI指标为过滤器,筛选流动性和市值适中的股票。
选股逻辑分析
该选股策略在选股条件中通过RSI指标加入了技术面的判断因素,同时对流动性和市值进行了筛选,适当控制选股的成本和风险。综合考虑多个因素,选取表现较好的股票进行投资。
有何风险?
该选股策略存在过度依赖于指标和基本面条件的问题,可能忽略了一些其他重要的因素如行业因素等。另外,昨日成交额与今日的涨停板数量和涨跌幅等情况可能不一致,有一定的误差。
如何优化?
可以加入更多基本面因素和行业因素作为选股的条件,以加强对个股的风险控制,同时可以考虑将时间窗口和涨停板数量等因素纳入选股条件中,减少误差和风险。
最终的选股逻辑
选股逻辑为RSI小于65、流通市值50亿-100亿、昨日成交额大于6千万,并对时间窗口和涨停板数量等因素进行限制,以更好地控制选股的成本和风险。
同花顺指标公式代码参考
RSI指标公式
LC:=REF(CLOSE,1);
AA:=SMA(MAX(CLOSE-LC,0),N,1)/SMA(ABS(CLOSE-LC),N,1)*100;
RSI:EMA(AA,M);
昨日成交额公式
LASTVOL:REF(VOL,1);
LASTAMT:REF(AMOUNT,1)/10000;
LASTTV:DRAWNULL();
IF LASTVOL>0 THEN LASTTV:=LASTAMT/LASTVOL ELSE LASTTV:=0;
CJL:L:=LASTTV>FLOOR(6000/10000);
CJL;
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
# 选股函数
def stock_picking(data):
# 计算RSI
rsi = calc_rsi(data['close'], 14)
# 筛选流通市值和RSI指标
cond = (data['negotiableMV'] >= 5e10) & (data['negotiableMV'] <= 1e11) & (rsi < 65)
# 筛选昨日成交额
lastvol = data['volume'].shift(1)
lastamt = data['amount'].shift(1) / 10000
lasttv = np.where(lastvol > 0, lastamt / lastvol, 0)
cond &= (lasttv > 0.6) # 限制昨日成交额大于6千万
# 涨停板数量限制和股票流动性限制等
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亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


