问财量化选股策略逻辑
选股逻辑:振幅大于1,反包,至少5根均线重合的股票。
选股逻辑分析
该选股逻辑考虑了股票的短期技术指标和走势情况进行筛选。振幅大于1说明股票波动较大,具有短期投资价值。反包形态则暗示股票出现了趋势反转的可能,具有买入信号。至少5根均线重合说明股票的趋势已经明显,并且均线的重合程度越高,趋势的稳定性越好。综合以上指标,可以筛选出具有一定投资价值的股票。
有何风险?
该选股策略主要依据股票的短期技术指标和走势情况进行筛选,未考虑公司的基本面情况和估值情况。股票的技术指标和走势情况存在一定的主观性和局限性,可能会误判股票的走势,存在一定的风险。
如何优化?
可以考虑在筛选股票时,加入其他基本面指标,如市盈率、市净率、ROE等,从多个角度综合考虑股票的基本面情况。此外,在使用股票的短期技术指标时,可以选择更加客观、科学的方法,避免因过度依赖技术指标而造成误判。
最终的选股逻辑
在以上分析基础上,提出完善后的选股逻辑:
- 振幅大于1;
- 近3个交易日内出现反包形态;
- 至少5根均线重合;
- 市盈率不得高于行业平均值。
同花顺指标公式代码参考
以下是该选股策略在通达信中的指标公式代码:
F01: (HIGH/LOW - 1) > 0.01; // 振幅大于1
F02: NOT(SIGN(CLOSE - REF(CLOSE, 1)) == SIGN(REF(CLOSE, 1) - REF(CLOSE, 2))); // 近3个交易日内出现反包形态
F03: MA(C, 5) == MA(O, 5) AND MA(C, 5) == MA(H, 5) AND MA(C, 5) == MA(L, 5) AND MA(C, 5) == REF(MA(C, 5), 1); // 至少5根均线重合
F04: PE <= INDUSTRY_AVG_PE;
FILTER: F01 AND F02 AND F03 AND F04;
SELECT(IF(1, 1, 0), "选股"); // 输出选中的股票
python代码参考
以下是 Python 实现该策略的选股逻辑:
# 数据预处理部分
close = dv.get_ts('close', symbol=symbols)
open = dv.get_ts('open', symbol=symbols)
high = dv.get_ts('high', symbol=symbols)
low = dv.get_ts('low', symbol=symbols)
ma_5 = dv.get_ts('ma', symbol=symbols, start_date=start, end_date=end, fields='ma_5')
df_pct_chg = close.pct_change()
df_pct_chg[df_pct_chg.isna()] = 0
ta_func_renko = Ta('CDLTRISTAR', 0, open, high, low, close)
rt_filter = (ta_func_renko == 100)
rt_filter = rt_filter.iloc[:, :-1].sum(axis=1) > 0
ma_filter = pd.DataFrame([close >= ma_5.shift(i) for i in range(5)]).T.sum(axis=1) >= 5
pe = get_fundamentals(query(fundamentals.financial_indicator.pe_ratio).filter(
fundamentals.financial_indicator.stockcode.in_(symbols)), date='2019-12-31', expect_df=True)
industry_pe = get_industry_PE(pe)
pe_filter = pe <= industry_pe
selected_stocks = ((amp & rt_filter) & ma_filter & pe_filter).sort_values(ascending=False)
return selected_stocks.index.tolist()
通过综合考虑振幅、反包、均线重合、市盈率等因素来进行筛选,以筛选出具有一定投资价值的股票。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
