问财量化选股策略逻辑
选股逻辑为RSI小于65、流通市值50亿-100亿、收盘价在布林线上轨之下且在中轨之上的股票,选取技术面表现较好的个股。
选股逻辑分析
该选股策略主要考虑了技术面指标和市值方面的因素影响,通过RSI选择技术面表现较好的股票,同时利用布林线指标找到收盘价在上轨和中轨之间的个股,具有一定的选股价值。
有何风险?
该选股策略主要依赖于技术面指标和市值,对于公司财务状况、竞争环境等因素考虑较少,存在选到技术面表现好但财务状况差、未来业绩风险大等风险。
如何优化?
可以考虑在基本面、财务指标方面进行加强,如增加盈利增长率、ROE等因素,同时在技术面方面加入其他的技术指标或统计量,如K线形态等。在选股策略中加入其他因素,如盈利能力、估值等,来提高选股策略的综合能力。
最终的选股逻辑
选股逻辑为RSI小于65、流通市值50亿-100亿、收盘价在布林线上轨之下且在中轨之上的股票,并加入ROE因素。
同花顺指标公式代码参考
RSI指标公式
LC:=REF(CLOSE,1);
AA:=SMA(MAX(CLOSE-LC,0),N,1)/SMA(ABS(CLOSE-LC),N,1)*100;
RSI:EMA(AA,M);
布林线指标公式
STDDEV :MA(CLOSE-MEAN(CLOSE, N),N);
UPPER: MEAN(CLOSE,N)+2STDDEV;
LOWER: MEAN(CLOSE,N)-2STDDEV;
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 calc_boll(close, n):
mean = close.rolling(n).mean()
std = close.rolling(n).std()
upper = mean + 2 * std
lower = mean - 2 * std
return mean, upper, lower
# 选股函数
def stock_picking(data):
# 计算RSI指标和布林线指标
rsi = calc_rsi(data['close'], 14)
mean, upper, lower = calc_boll(data['close'], 20)
# 根据市值、RSI和布林线选取股票
cond = (data['negotiableMV'] >= 5e10) & (data['negotiableMV'] <= 1e11) & \
(data['totalShares'] >= 2e8) & (rsi < 65) & (data['close'] < upper) & (data['close'] > mean)
stock_list = []
if sum(cond) >= 5:
selected_data = data[cond]
selected_data = selected_data.sort_values(by='changePct', ascending=False)
for i in range(5):
stock_list.append(selected_data.index[i])
return stock_list
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


