问财量化选股策略逻辑
选股逻辑:振幅大于1,反包,(昨日换手率*(今日竞价成交量/昨日成交量))>0.5<2。
选股逻辑分析
该选股策略综合了振幅指标、反包指标以及昨日和今日交易数据,要求选择换手率和竞价成交量变化较大的个股,来筛选具有投资价值的个股。
有何风险?
该选股策略的风险在于,该指标可能并不准确反映出股票的内在价值,很难考虑到公司经营的具体情况,容易因个别事件的扰动影响到选股的结果。
如何优化?
可以加入其他指标,如市盈率、市净率等,综合分析股票的价值投资和跨周期表现。
最终的选股逻辑
基于以上分析,我们提出下面完善后的选择逻辑:
- 振幅大于1;
- 反包出现;
- 昨日和今日的交易数据满足条件:0.5 < (昨日换手率 * 今日竞价成交量 / 昨日成交量) < 2。
同花顺指标公式代码参考
以下是该选股策略的指标公式代码:
F01:HIGH / LOW - 1 > 0.01; // 振幅大于1
F02:NOT(SIGN(CLOSE-REF(CLOSE, 1)) == SIGN(REF(CLOSE, 1) - REF(CLOSE, 2))); // 反包
F03:(REF(VOL,1)*VOL*2) / (REF(VOL,1)*OPEN + VOL*LOW) > 0.5 AND (REF(VOL,1)*VOL*2) / (REF(VOL,1)*OPEN + VOL*LOW) < 2; // 昨日和今日的交易数据满足条件
FILTER:F01 AND F02 AND F03 > 0;
SYMBOL_SORT("CLOSE*VOLUME*CAPITALIZATION/10000", SORT_DESCEND);
SELECT(IF(1, 1, 0),"诊股"); // 输出文本信息:选股
python代码参考
以下是 Python 实现该策略的选股逻辑:
def stock_filter(dv, symbol):
# 获取数据,计算指标
high = dv.get_ts("high", symbol=symbol)
low = dv.get_ts("low", symbol=symbol)
close = dv.get_ts("close", symbol=symbol)
vol = dv.get_ts("volume", symbol=symbol)
date_idx = pd.to_datetime(high.index).date
amplitude = high / low - 1
reverse_pattern = (Ta('CDL2CROWS', 0, open, high, low, close) == 100)
# 昨日换手率*(今日竞价成交量/昨日成交量) > 0.5 < 2
turnover_rate = dv.add_formula("turnover_rate", "volume/TTM(Ifnull(close,0),1)", is_quarterly=False, add_data=True)
bidding_volume_ratio = (vol * 2) / (vol.shift() * open.shift() + low.shift())
trading_conditions = (turnover_rate.shift() * bidding_volume_ratio > 0.5) & (turnover_rate.shift() * bidding_volume_ratio < 2)
selected_stocks = amplitude & reverse_pattern & trading_conditions
return selected_stocks.index.tolist()
选股逻辑中,我们用 Python 的 pandas 库和 TA-Lib 库计算指标,筛选出符合条件的股票列表,以得到我们需要选择的股票列表。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
