
1. 概述
Momentum(动量策略) 是量化交易领域最常见、最实战化的一类趋势增强策略。
它基于一个核心假设:
“强者恒强,弱者恒弱”:最近表现强的标的,更有可能继续上涨;最近表现差的标的,更有可能继续走弱。
在 PulseForce 中,内置的 momentum 策略并不是“只看涨跌幅”的简单动量,而是综合了:
- EMA 交叉(ema_fast / ema_slow):确认短期与中长期趋势方向
- 近期高点突破(recent_high_window):确认价格是否真正突破前一段时间的压力位
- RSI 动量信号(rsi_period / rsi_buy_threshold / rsi_sell_threshold):衡量多空力量强弱
- 成交量放大(volume_window):确认上涨是真实资金推动,而非“无量空涨”
- CatBoost AI 过滤器(可选):在基础规则之上,再用 AI 模型过滤劣质信号
同时,策略通过:
- 强制止盈 / 止损(force_take_profit / force_stop_loss)
- 日级止盈 / 止损(daily_take_profit / daily_stop_loss)
- 动态资金分配(allowable_funds_*)
来管理风险和仓位,并支持在 PulseForce 中使用 HyperOpt 自动搜索最优参数组合。
2. 策略起源与发展简述
动量效应拥有非常扎实的学术背景与长期实证支持:
- 1993 年 Jegadeesh & Titman 的经典论文系统性证明:
买入过去赢家、卖出过去输家 可以获得显著超额收益。 - 后续大量研究发现,动量效应存在于:
股票、期货、外汇、商品、指数、甚至加密货币市场中。
实战中,动量策略常用于:
- 中短周期趋势交易
- 行业/板块轮动
- 多资产多空组合
- 高频趋势过滤模块
PulseForce 的 Momentum 策略,就是在这些经典思想基础上,叠加了多指标确认与 AI 过滤的增强版本。
3. 这个 Momentum 策略在解决什么问题?
PulseForce 的 momentum 策略试图解决以下几个实战问题:
只看涨跌幅不够稳,需要多维度确认“真动量”
→ 使用 EMA 交叉 + 近期高点突破 + RSI + 成交量综合判断。如何避免“假突破”“假拉升”?
→ 价格必须突破一段时间内的高点,同时成交量要放大。如何在趋势加速时尽早上车,而不是等到太晚?
→ 使用近期突破 + RSI 高位作为“趋势加速”信号。如何减少无效信号、降低回撤?
→ 再叠加 CatBoost AI 模型过滤部分信号,并使用多层止盈止损机制。
4. 核心指标与信号逻辑
4.1 核心技术指标
在 momentum 策略中,主要用到以下指标(全部在 1 分钟级别计算):
| 指标 | 含义 |
|---|---|
ema_fast |
快速 EMA,反应更敏感,代表短周期动量 |
ema_slow |
慢速 EMA,代表中长期趋势方向 |
recent_high |
一段时间内(recent_high_window)的最高价,用于突破确认 |
rsi |
相对强弱指数,用于衡量短周期买盘强度 |
volume_mean |
一段时间内平均成交量,用于判断是否放量 |
在代码中,对应这段指标计算逻辑(节选):
1 | df["rsi"] = ta.RSI(df, timeperiod=rsi_p).fillna(0) |
4.2 趋势标签:短趋势 / 长趋势 / 日趋势
基于 EMA 计算,策略额外标记:
short_trend:由ema_fast与ema_slow决定long_trend:由更长周期的 EMA 组合计算daily_short_trend / daily_trend:由 1m 重采样到 1D 得到的日级趋势
这些趋势字段可用于:
- 后续 AI 模型特征
- 风控模块扩展
- UI 中展示更直观的趋势状态
5. 核心买入/卖出逻辑(结合 Runner + AI 过滤)
5.1 买入信号:突破 + 强动量 + 放量 + EMA 多头 + AI 过滤
在 populate_buy_trend 中,PulseForce 将 Runner 的逻辑等价为:
1 | # 1) Runner 的基础动量条件 |
也就是说,这个 Momentum 策略的买入逻辑可以概括为:
“当价格突破近期高点 + RSI 动量强 + 成交量放大 + EMA 多头排列时,认为出现强动量突破;若 AI 模型也判定该信号质量较高,则正式发出买入信号。”
5.2 卖出信号:动量衰减 + SL/TP 结合
策略不直接用均线死叉,而是定义了一个 “动量减弱信号层” _has_sell_signal:
1 | def _has_sell_signal(self, row: pd.Series) -> bool: |
含义:
- 收盘价跌破
ema_fast→ 短期动量减弱 - RSI 跌破
rsi_sell_threshold→ 超买/强势状态结束
而真正的退出逻辑在 custom_exit 中:
1 | # ① 强制止损 / 强制止盈(不依赖动量信号) |
总结一下这套卖出逻辑:
- 有“强制 TP/SL”兜底:极端情况下,先保护资金安全。
- 平时不会随便砍仓,要先等动量减弱信号出现。
- 只有同时满足“动量减弱 + 触及日级止盈/止损”时,才真正退出仓位。
这比简单的“到止损就卖”、“均线死叉就卖”更精细,能在趋势延续期间尽可能持有。
6. PulseForce 参数配置与超参优化说明
PulseForce App(Apple AppStore & Google Play可下载)针对量化任务、量化回测以及超参优化,提供了可视化的配置界面,使策略可以完全参数化。
回测参数配置界面:
超参优化参数配置界面:

6.1 基础参数组
这部分决定了 动量信号的核心结构,全部支持超参优化:
| 参数 Key | 名称 | 作用 | 可优化 | 建议初始搜索范围(otp_init_min ~ otp_init_max) |
|---|---|---|---|---|
ema_fast |
Fast EMA Period | 快速 EMA 周期,越小反应越敏感 | ✅ | 15 ~ 30 |
ema_slow |
Slow EMA Period | 慢速 EMA 周期,用于平滑中长期趋势 | ✅ | 50 ~ 90 |
recent_high_window |
Recent High Window | 用于计算“近期高点”的窗口长度 | ✅ | 20 ~ 45 |
rsi_period |
RSI Period | RSI 计算周期 | ✅ | 10 ~ 25 |
rsi_buy_threshold |
RSI Buy Threshold | 触发买入信号所需的最小 RSI 值 | ✅ | 60 ~ 75 |
rsi_sell_threshold |
RSI Sell Threshold | 触发卖出信号的最大 RSI 值(动量衰减阈值) | ✅ | 20 ~ 45 |
volume_window |
Volume MA Window | 计算成交量均值的窗口长度 | ✅ | 10 ~ 30 |
这些参数直接对应代码中的 HyperOpt 空间:
1 | ema_fast # IntParameter(15, 30, ...) |
6.2 资金管理参数
这部分在 PulseForce 中主要用于 控制最大资金使用与趋势型仓位比例,当前配置为用户可配,默认不参与超参优化:
| 参数 | 含义 |
|---|---|
max_funds_allowed_using |
策略最大可使用资金上限 |
allowable_funds_neutral |
市场中性时使用的资金比例 |
allowable_funds_uptrend |
上升趋势中使用的资金比例 |
allowable_funds_downtrend |
下降趋势中使用的资金比例 |
你可以根据自己风险偏好,在 PulseForce App 内自行调整这些值,例如:
- 大趋势明显时,把
allowable_funds_uptrend设为 1.0 - 市场不明朗时,降低
allowable_funds_neutral、allowable_funds_downtrend
6.3 止损参数
这部分是 风险控制的核心,并且全部支持超参优化:
| 参数 Key | 名称 | 说明 | 可优化 | 搜索范围 |
|---|---|---|---|---|
force_stop_loss |
Force Stop-Loss Ratio | 无视信号,亏损达到该比例即强制平仓 | ✅ | 0.005 ~ 0.30(配置文件)或 0.01 ~ 0.1(代码中 HyperOpt) |
daily_stop_loss |
Daily Stop-Loss Ratio | 仅在出现卖出信号时,若亏损超过该值才触发止损 | ✅ | 0.005 ~ 0.30(配置文件)或 0.01 ~ 0.1(代码中 HyperOpt) |
需要注意的是:
- 强制止损 是“永远生效”的硬防线;
- 日级止损 只有在
_has_sell_signal为真时才会检查。
6.4 止盈参数
同样支持超参优化:
| 参数 Key | 名称 | 说明 | 可优化 | 搜索范围 |
|---|---|---|---|---|
force_take_profit |
Force Take-Profit Ratio | 无视信号,盈利达到该比例即强制平仓 | ✅ | 0.005 ~ 0.30(配置文件)或 0.01 ~ 0.1(代码) |
daily_take_profit |
Daily Take-Profit Ratio | 出现卖出信号时,若盈利超过该值则止盈 | ✅ | 0.005 ~ 0.30(配置文件)或 0.01 ~ 0.1(代码) |
整体而言:
- Force 系列参数:更偏“防黑天鹅 / 锁定极端收益”的硬逻辑;
- Daily 系列参数:更偏“顺势中找合理离场点”的柔性逻辑。
在 PulseForce 的 HyperOpt 环境中,这四个参数都可以针对不同股票自动找到更合适的区间。
7. 适用场景与特点
7.1 适合的场景
- 波动较大且存在明显趋势的标的(如美股成长股、热门 ETF、加密货币等)
- 1 分钟或 5 分钟级别的短周期趋势交易
- 有较稳定成交量、容易出现突破行情的标的
- 希望通过 HyperOpt 寻找「最优参数组合」的研究/实盘环境
7.2 不适合的场景
- 长期窄幅震荡,无明显突破与趋势的标的
- 极度缺乏成交量(容易出现价格一跳多格)的股票
- 高度受消息面瞬时冲击的超短线行情(需要更快机制)
8. 策略优势与不足
优势
- 结合 EMA 交叉 + 突破 + RSI + 成交量 → 真动量、多重确认
- 加入 AI 过滤器(CatBoostMomentumPlugin),可减少劣质信号
- 退出逻辑更细腻:动量衰减 + SL/TP 联合判断
- 支持完整超参优化,易于针对单票调优
- 与 PulseForce 的 UI / 回测 / 超参模块深度集成
不足
- 结构较简单的纯动量相比,本策略逻辑更复杂,对数据质量与回测环境要求更高
- 在超长时间的震荡市中,突破与强动量本身不多,可能较少出手
- AI 过滤器依赖模型质量,若训练不当反而可能过滤掉部分好信号
9. 总结
PulseForce 内置的 momentum 动量策略,是在经典动量思想基础上,叠加多指标确认与 AI 过滤的 增强版趋势策略:
- 使用 EMA 快慢线 判断趋势方向
- 使用 近期高点突破 + RSI 强势区间 + 成交量放大 确认动量质量
- 使用 AI 模型(CatBoostMomentumPlugin) 审核每一个基础买入信号
- 使用 强制/日级止盈止损 管理风险
- 使用 HyperOpt 超参优化 来针对不同标的搜索最优参数组合
对于希望在 PulseForce 中构建 “更聪明的动量策略” 的用户来说,这是一个既稳定又可扩展的基础模块。
想了解更多策略介绍与最新功能,请访问:
👉 PulseForce 官网: https://www.hiforce.ai