问财量化选股策略逻辑
选股逻辑:振幅大于1,反包,深证主板中市盈率0-29.01市净率0-3.11的股票。
选股逻辑分析
该选股策略选用了振幅指标和反包指标来选择波动较大、具有反转信号的股票,并加入了深证主板市盈率和市净率指标,筛选出市盈率和市净率在特定范围内的股票。该选股逻辑相比之前提出的选股策略更加明确、具体和偏向价值投资。
有何风险?
对市盈率和市净率采取了较为人为的范围选择,可能会忽略一些具有高成长性但估值较高的股票;同时,利用市盈率和市净率进行估值有时会存在时间差和数据准确性问题,可能会存在一些误判情况。
如何优化?
可加入其他估值指标如PEG,利用多个指标综合考量,减少误判可能;同时,定期更新财务报告,尽量减少数据准确性问题;还可以根据行业特性和历史对比,调整市盈率和市净率范围,使其更加符合实际情况。
最终的选股逻辑
基于以上分析,提出下面完善后的选择逻辑:
- 振幅大于1;
- 反包出现;
- 市盈率在0-29.01之间,市净率在0-3.11之间。
同花顺指标公式代码参考
以下是该选股策略的指标公式代码:
F01: HIGH / LOW - 1 > 0.01; // 振幅大于1
F02: NOT(SIGN(CLOSE - REF(CLOSE, 1)) == SIGN(REF(CLOSE, 1) - REF(CLOSE, 2))); // 反包
F03: ((PE > 0) AND (PE < 29.01) AND (PB > 0) AND (PB < 3.11)); // 价格估值范围在特定范围内
FILTER:F01 AND F02 AND F03;
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)
date_idx = pd.to_datetime(high.index).date
amplitude = high / low - 1
reverse_pattern = (Ta('CDL2CROWS', 0, open, high, low, close) == 100)
# 获取估值指标数据
valuation = get_valuation_data(symbol)
pe_ratio = valuation.loc[date_idx, "pe_ratio"]
pb_ratio = valuation.loc[date_idx, "pb_ratio"]
selected_stocks = ((amplitude & reverse_pattern) &
(pe_ratio > 0) & (pe_ratio < 29.01) &
(pb_ratio > 0) & (pb_ratio < 3.11))
selected_stocks.sort_values("close", ascending=True, inplace=True)
return selected_stocks.index.tolist()
在计算股票指标的基础上,我们还需获取估值指标的数据,进而综合考虑,并根据阈值选取符合指标要求的股票。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
