问财量化选股策略逻辑
选股逻辑:振幅大于1,反包,剔除昨日涨停。
选股逻辑分析
该选股逻辑考虑了股票的波动情况、趋势反转以及昨日涨势等多种因素。振幅大于1说明股票波动范围较大,有短期价值;反包形态则暗示股票出现了趋势反转的可能,具有买入信号;剔除昨日涨停可以避免涨停板的股票选择,避免市场风险。综合以上因素,可以选出具有较好投资价值的股票。
有何风险?
同样地,该选股策略的风险在于其忽略了股票的基本面情况,如果市场整体行情疲软,即使股票满足筛选条件,但也可能存在较高的市场风险。另外,该选股逻辑中使用了反包形态的筛选条件,但反包形态并不是100%准确的,可能存在一定误判的情况。
如何优化?
对于股票市场整体行情疲软的情况,可以考虑增加类似于市场指数涨跌等整体情况的因素进行综合考虑,避免出现盲目的选股决策。另外,可以根据历史数据分析反包形态的真实准确率、假阳率等细节指标,从而对选股逻辑进行进一步的优化。
最终的选股逻辑
在以上分析的基础上,我们提出完善后的选股逻辑:
- 振幅大于1;
- 近3个交易日内有反包形态;
- 剔除昨日涨停。
同花顺指标公式代码参考
以下是该选股策略在通达信中的指标公式代码:
F01: (HIGH/LOW - 1) > 0.01; // 振幅大于1
F02: NOT(SIGN(CLOSE - REF(CLOSE, 1)) == SIGN(REF(CLOSE, 1) - REF(CLOSE, 2))); // 近3个交易日内有反包形态
F03: (NOT(ISLASTBAR()) AND dv_limit_status()==0); // 剔除昨日涨停
FILTER: F01 AND F02 AND F03;
SELECT(IF(1, 1, 0), "选股"); // 输出选中的股票
其中 ISLASTBAR()
和 dv_limit_status()
为通达信自带函数,分别用于识别当前是否是最新一根K线以及是否触及涨停板。
Python代码参考
以下是 Python 实现该策略的选股逻辑:
# 数据预处理部分
close = dv.get_ts('close', symbol=symbols)
high = dv.get_ts('high', symbol=symbols)
low = dv.get_ts('low', symbol=symbols)
df_pct_chg = close.pct_change()
df_pct_chg[df_pct_chg.isna()] = 0
lmtup_cnt_filter = (dv.get_ts('limitup_count', symbol=symbols, start_date=start_date, end_date=end_date) == 0).iloc[-1,:]
amp_filter = (high / low - 1) > 0.01
ta_func_renko = Ta('CDLTRISTAR', 0, high, low, close)
rt_filter = (ta_func_renko == 100)
rt_filter = rt_filter.iloc[:, :-1].sum(axis=1) > 0
selected_stocks = ((amp_filter & rt_filter) & lmtup_cnt_filter).sort_values(ascending=False)
return selected_stocks.index.tolist()
通过综合考虑振幅、反包、涨停等因素来进行筛选,以筛选出具有较好的市场表现和持续性的股票。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
