问财量化选股策略逻辑
选股逻辑:选出RSI小于65,下午大单净流入,换手率在2%到9%之间的股票。
选股逻辑分析
该选股策略以RSI指标、下午大单净流入和换手率作为辅助指标,希望找到一些市场情况良好,资金流入较多且股票交易较为活跃的股票。
有何风险?
该选股策略在选择换手率范围时,可能会出现失误,选择到市场表现不佳的股票或选择错误范围导致漏选优秀股票。同时,该选股策略同样存在过度依赖某些指标的风险,需要引入其他指标进行辅助。
如何优化?
建立更加科学的换手率指标,避免出现选错股票的情况;同时引入其他指标如市值、PE等,进行综合衡量,减少过度依赖某些指标的风险。
最终的选股逻辑
选出今日下午大单净流入排名前10,RSI小于65,换手率在2%到9%之间的股票。
同花顺指标公式代码参考
C2: RSI(CLOSE,14) <65
C3: TURNOVER > 2 and TURNOVER < 9
C4: REF(VOL,1) > 500000
C5: RANK(NETFLOW,10) < 10
SELECT * FROM (
SELECT STOCK_LIST.*, GET_RANKING_BY_HEAT() AS RANKING
FROM STOCK_LIST) RESULT
WHERE C1 AND C2 AND C3 AND C4 AND C5
ORDER BY RANKING DESC
python代码参考
import pandas as pd
import akshare as ak
import talib
def get_ranking_by_heat(df):
stocks_em = ak.stock_heat_rank(indicator="今日热点", market="sz")
stocks_list = stocks_em['名称']
df['RANKING'] = df['名称'].apply(lambda x: stocks_list.index(x)+1 if x in stocks_list else 0)
df = df[df['RANKING'] > 0]
return df
def get_stock_list():
result_df = pd.DataFrame()
stock_list = ak.stock_zh_a_spot_em()
for code in stock_list['代码']:
stock_k_data = ak.stock_zh_a_daily(code=code, adjust="hfq")
if stock_k_data.iloc[-1]['成交额'] <= 500000:
continue
net_flow = stock_k_data.iloc[-3:]['净流入量'].sum()
if net_flow <= 0 or net_flow <= stock_k_data.iloc[-4]['净流入量']:
continue
rsi = talib.RSI(stock_k_data['收盘价'], timeperiod=14)
if rsi.iloc[-1] >= 65:
continue
turnover = stock_k_data.iloc[-1]['成交额'] / stock_k_data.iloc[-2]['流通股本']
if turnover <= 0.02 or turnover >= 0.09:
continue
ranking = stock_list[stock_list['代码'] == code]['排名'].values[0]
if not ranking or int(ranking) > 10:
continue
result_df = result_df.append(stock_k_data)
result_df = get_ranking_by_heat(result_df)
result_df.sort_values(by='RANKING', ascending=False, inplace=True)
return result_df.head(5)
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


