问财量化选股策略逻辑
选股逻辑:选取RSI小于65、今日均线向上发散、并且换手率在2%到9%之间的股票。
选股逻辑分析
该选股逻辑同样综合考虑了技术面指标和股票基本面,选出了RSI小于65、今日均线向上发散的股票,并进一步筛选出换手率在2%到9%之间的股票。该选股逻辑较为严格,可以过滤掉换手率过高或者过低的股票,更加注重潜在收益和风险控制。
有何风险?
虽然该选股逻辑加入了基本面指标,但考虑的基本面指标较为简单,过于简单的选股指标会导致投资风险的忽视。此外,换手率作为一个中长期的指标,可能不能完全反映股票风险,需要结合其他指标进行分析。
如何优化?
可以进一步加入其他技术面和基本面指标进行筛选,例如可以增加MACD指标、市盈率等指标。同时,也可以考虑给每个指标设定相应的优先级,不同指标的权重可以根据实际情况进行调整。此外,也可以进一步筛除一些异常的股票数据,从而提高选股的准确性。
最终的选股逻辑
选取RSI小于65、今日均线向上发散、并且换手率在2%到9%之间的股票。
同花顺指标公式代码参考
- RSI: RSI(14)
- 均线: MA(CLOSE,1), MA(CLOSE,20)
- 换手率:(VOL - VOL_MA)/VOL_MA * 100%
Python代码参考
import pandas as pd
import tushare as ts
import talib
def sort_by_turnover(stock_df):
today_all_data = ts.get_today_all()
stock_df['换手率'] = today_all_data['turnoverratio'][stock_df['股票代码'].apply(lambda x: x[2:])]
stock_df = stock_df[(stock_df['换手率'] >= 2) & (stock_df['换手率'] <= 9)]
stock_df.sort_values(by='换手率', ascending=False, inplace=True)
return stock_df
def get_stock_list(rsi_threshold=65, ma_today_length=1, ma_short_length=20, top_n=5):
stock_list = pd.DataFrame(columns=['股票代码', '名称'])
today_all_data = ts.get_today_all()
for i in range(len(today_all_data)):
code = today_all_data.index[i]
name = today_all_data.iloc[i]['name']
if code[0] == '6':
symbol = 'sh' + code
else:
symbol = 'sz' + code
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
if close_price.iloc[-1] <= talib.MA(close_price, timeperiod=ma_today_length).iloc[-1]:
continue
stock_list = stock_list.append({'股票代码': symbol, '名称': name}, ignore_index=True)
stock_list = sort_by_turnover(stock_list)[:100]
stock_list = sort_by_volume(stock_list)[:top_n]
return stock_list
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


