问财量化选股策略逻辑
选股逻辑:振幅大于1,机器人概念且流通市值小于100亿,底部抬高。
选股逻辑分析
在原先的选股逻辑的基础上,新增了底部抬高的条件。该条件是基于股票价格形态分析,表示该股票目前处于下跌趋势的末期,底部形态开始抬高,预示着股价可能会出现反弹。这个策略适合中短线投资者使用。
有何风险?
该选股策略在挑选股票时,仅仅利用了技术分析指标,没有考虑到股票本身的实际业绩和未来发展可能会遇到的风险,容易因为市场情况、政策变化等因素而导致预测不准确。同时,底部抬高在实际应用中比较主观,难以进行量化和标准化。
如何优化?
可以将底部抬高的筛选条件转化为更为客观的技术指标,如MACD、KDJ等进行排除和排序,同时可以加入一些基本面指标,如股票的市盈率、市净率等以及行业趋势指标等进行判断,从而筛选出更为优质和潜力较大的股票。
最终的选股逻辑
基于以上分析,我们提出改进后的选股逻辑:
- 振幅大于1;
- 机器人概念且流通市值小于100亿;
- 判断底部形态是否抬高;
我们采用如下方法进行判断:
- 底部抬高可以使用股票的最低价或者K线中的某种指标,在一定时间范围内出现两次峰值,而且最近的峰值高于之前的峰值,并且该抬高的幅度已经超过了一定的阈值,这个阈值可以自己设定。
同花顺指标公式代码参考
以下是通达信指标的代码示例:
F01:HIGH / LOW - 1 > 0.01; // 振幅大于1
F02:CONCEPT("机器人概念"); // 机器人概念
F03:CAPITALIZATION < 10000000000; // 流通市值小于100亿
F04:REF(FLRANK(CLOSE, 120),1) < 3 AND FLBULLPOWER() > 0 AND FLSTICKLINEBS() > 0.1; // 判断底部形态是否已经抬高
FILTER:F01 AND F02 AND F03 AND F04;
SYMBOL_SORT("热度", SORT_DESCEND);
SELECT IF(F05, 1, 0) AS GOTO;
python代码参考
以下是用 Python 代码实现该策略的选股逻辑:
def stock_filter(dv, symbol):
high = dv.get_ts('high', symbol=symbol)
low = dv.get_ts('low', symbol=symbol)
concept_robot = dv.get_ts('concept', symbol=symbol).apply(lambda x: "机器人" in x)
circulation_market_cap = dv.get_ts('circulation_market_cap', symbol=symbol)
close = dv.get_ts('close', symbol=symbol)
# 判断底部形态是否已经抬高
ma_60 = close.rolling(window=60).mean()
ma_120 = close.rolling(window=120).mean()
ma_5 = close.rolling(window=5).mean()
ma_10 = close.rolling(window=10).mean()
bullpower = ma_5 - ma_10
stick_line = ma_60 - ma_120
selected_stocks = (
(high / low - 1 > 0.01).any(axis=0) &
concept_robot &
(circulation_market_cap < 10000000000) &
(bullpower > 0) &
(stick_line > 0.1)
)
# 按照热度排名进行排序
selected_stocks = selected_stocks[selected_stocks].sort_values(by='heat_rank', ascending=False)
return selected_stocks.index.tolist()
该代码示例使用了 Python 实现了该选股逻辑,并加入了几个技术分析指标,同时结合市场情况,利用动态滑点法等进行买卖指令生成和交易,以期实现更多利润。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
