问财量化选股策略逻辑
选股逻辑:选取RSI小于65、今日均线向上发散、20日均线大于120日均线的股票。
选股逻辑分析
除了前文提到的RSI和均线两个技术面指标,该选股策略还新增了对均线走势的判断,可以更好地筛选出股价趋势良好的股票。
有何风险?
该选股策略仍然没有考虑到公司财务指标和宏观经济因素的影响,可能会漏掉某些基本面优秀但技术面不符合选股逻辑的股票。
如何优化?
可以加入更多的基本面指标,如EPS、ROE等,考虑公司的营收、成本和盈利情况,从而更全面地评估股票的价值。同时,可以尝试加入市场因素指标,如PE、PB等,辅助判断股票的估值水平,有助于选股更为精准。
最终的选股逻辑
选取RSI小于65、今日均线向上发散、20日均线大于120日均线的股票。
同花顺指标公式代码参考
- RSI: RSI(14)
- 均线: MA(CLOSE,1), MA(CLOSE,20), MA(CLOSE,120)
Python代码参考
import pandas as pd
import tushare as ts
import talib
def sort_by_volume(stock_df):
volumes = ts.get_today_all()['volume']
stock_df['volume'] = volumes[stock_df['股票代码'].apply(lambda x: x[2:])]
stock_df.sort_values(by='volume', ascending=False, inplace=True)
return stock_df
def get_stock_list(rsi_threshold=65, ma_today_length=1, ma_short_length=20, ma_long_length=120, top_n=5):
limit_data = ts.get_today_all()
stock_list = pd.DataFrame(columns=['股票代码', '名称'])
for i in range(len(limit_data)):
symbol = limit_data.iloc[i]['code']
if symbol[0] == '6':
symbol = 'sh' + symbol
else:
symbol = 'sz' + symbol
kline_today = ts.get_k_data(symbol=symbol, start='2022-05-05', end='2022-05-05')
if len(kline_today) == 0:
continue
close_price = kline_today['close']
rsi = talib.RSI(close_price, timeperiod=14)[-1]
if rsi > rsi_threshold:
continue
close_ma_today = talib.MA(close_price, timeperiod=ma_today_length)
if close_price.iloc[-1] <= close_ma_today.iloc[-1]:
continue
close_ma_short = talib.MA(close_price, timeperiod=ma_short_length)
close_ma_long = talib.MA(close_price, timeperiod=ma_long_length)
if close_ma_short.iloc[-1] < close_ma_long.iloc[-1]:
continue
name = limit_data.iloc[i]['name']
stock_list = stock_list.append({'股票代码': symbol, '名称': name}, ignore_index=True)
stock_list = sort_by_volume(stock_list)
return stock_list[:top_n]
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


