PulseForce Momentum(動量策略)演算法解析

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 旨在解決以下幾項實戰痛點:

  1. 僅看漲跌幅不足,需要多維度確認「真動量」
    → EMA 交叉 + 近期高點突破 + RSI + 成交量共同判定。

  2. 如何避免「假突破」「假拉升」?
    → 價格必須突破一段期間高點,且成交量必須放大。

  3. 如何在趨勢加速時及早上車,而非等到太晚?
    → 使用近期突破 + RSI 強勢區間判定動量加速。

  4. 如何降低劣質信號、避免深度回撤?
    → 加入 CatBoost AI 過濾器 + 更細緻的止盈止損機制。


4. 核心指標與信號邏輯

4.1 核心技術指標

Momentum 策略主要使用以下(於 1 分鐘級別計算)指標:

指標 含義
ema_fast 快速 EMA,反應敏感,代表短週期動量
ema_slow 慢速 EMA,代表中長期趨勢
recent_high 近期高點,用於確認突破
rsi 相對強弱指標,用於衡量買盤強度
volume_mean 均量,用於判斷是否放量

部分指標計算程式碼:

1
2
3
4
5
6
df["rsi"] = ta.RSI(df, timeperiod=rsi_p).fillna(0)
df["ema_fast"] = ta.EMA(df, timeperiod=ema_f)
df["ema_slow"] = ta.EMA(df, timeperiod=ema_s)

df["recent_high"] = df["high"].rolling(window=rh_w, min_periods=1).max()
df["volume_mean"] = df["volume"].rolling(window=vol_w, min_periods=1).mean()

4.2 趨勢標記:短趨勢 / 長趨勢 / 日趨勢

策略基於 EMA 進一步標記:

  • short_trend:由 ema_fastema_slow 判定
  • long_trend:由更長周期 EMA 組合計算
  • daily_short_trend / daily_trend:由 1m 重採樣至 1D 得出

這些欄位可用於:

  • AI 模型特徵
  • 風控模塊
  • PulseForce UI 趨勢展示

5. 核心買入/賣出邏輯(含 Runner + AI 過濾)

5.1 買入邏輯:突破 + 強動量 + 放量 + EMA 多頭 + AI 過濾

populate_buy_trend 等效邏輯如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 1) Runner 基礎動量判定
base_cond = (
(df["close"] > df["recent_high"].shift(1)) & # 突破近期高點
(df["rsi"] > rsi_buy_th) & # RSI 高於買入閾值
(df["volume"] > df["volume_mean"]) & # 放量
(df["ema_fast"] > df["ema_slow"]) & # EMA 多頭排列
(df["volume"] > 0)
)

df.loc[:, "buy"] = 0

# 未使用 AI → 直接買入
if not self.ai_manager or not self.ai_manager.plugins:
df.loc[base_cond, "buy"] = 1
return df

# 3) 啟用 AI 過濾
ai_mask = df.loc[base_cond].apply(_ai_pass, axis=1)
df.loc[base_cond, "buy"] = ai_mask.astype(int)

概括為:

「突破 + 強勢 RSI + 放量 + EMA 多頭 → 若 AI 也認同,此信號則為高品質動量突破。」


5.2 賣出邏輯:動量衰退 + SL/TP 結合

動量退化條件(簡化版):

1
2
def _has_sell_signal(self, row):
return (row["close"] < row["ema_fast"]) and (row["rsi"] < rsi_sell_th)

退出邏輯:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# ① 強制止損 / 強制止盈
if current_profit <= -self.force_stop_loss.value:
return "hard_sl"
if current_profit >= self.force_take_profit.value:
return "hard_tp"

# ② 無賣出信號 → 不理會日級 SL/TP
if not self._has_sell_signal(row):
return None

# ③ 有賣出信號時,才檢查日級 SL/TP
sl = daily_stop_loss
tp = daily_take_profit

if current_profit <= -sl:
return "sl_signal"
if current_profit >= tp:
return "tp_signal"

總結為:

  • 強制 SL/TP 永遠優先
  • 若未出現動量衰退,不輕易離場
  • 只有「動量衰退 + 觸及日級 SL/TP」才會退出持倉

6. PulseForce 參數配置與超參優化

PulseForce 提供完整策略可視化配置介面,支援回測、每日交易與超參優化。

6.1 基礎參數組(支援 HyperOpt)

Key 名稱 作用 可優化 建議初始搜尋範圍
ema_fast 快速 EMA 越小越敏感 15 ~ 30
ema_slow 慢速 EMA 越大越平滑 50 ~ 90
recent_high_window 近期高點窗口 用於突破確認 20 ~ 45
rsi_period RSI 週期 10 ~ 25
rsi_buy_threshold RSI 買入閾值 越高越保守 60 ~ 75
rsi_sell_threshold RSI 賣出閾值 動量衰退判定 20 ~ 45
volume_window 均量窗口 判斷是否放量 10 ~ 30

6.2 資金管理(預設不參與 HyperOpt)

參數 含義
max_funds_allowed_using 最大可動用資金
allowable_funds_neutral 中性市況使用比例
allowable_funds_uptrend 上升趨勢使用比例
allowable_funds_downtrend 下跌趨勢使用比例

6.3 止損參數(支援 HyperOpt)

Key 名稱 作用 可優化
force_stop_loss 強制止損 硬止損
daily_stop_loss 日級止損 僅動量衰退時檢查

6.4 止盈參數(支援 HyperOpt)

Key 名稱 作用 可優化
force_take_profit 強制止盈 鎖定極端獲利
daily_take_profit 日級止盈 動量衰退後檢查

7. 適用場景與特點

適用於

  • 具有明顯波動與趨勢的標的(成長股、熱門 ETF、加密貨幣)
  • 1m / 5m 短週期趨勢交易
  • 具穩定成交量、易出現突破行情的標的
  • 需要 HyperOpt 自動尋參的研究環境

不適用於

  • 長期窄幅震盪的標的
  • 成交量極低的小盤股
  • 完全由消息面驅動的超短線行情

8. 策略優勢與不足

優勢

  • EMA + 突破 + RSI + 放量 → 多維度「真動量」確認
  • AI 過濾器降低劣質信號
  • 賣出邏輯細緻:動量衰退 + SL/TP
  • 完整支援超參優化
  • 與 PulseForce 生態深度整合

不足

  • 策略較複雜,依賴數據品質
  • 在震盪市中訊號可能偏少
  • AI 過濾效果取決於模型訓練品質

9. 總結

PulseForce 內建的 momentum 動量策略,是建立在經典動量思想之上、結合多指標確認與 AI 過濾的 增強型趨勢策略

  • EMA 快慢線 → 趨勢方向
  • 近期高點突破 + RSI 強勢區間 + 放量 → 動量品質
  • AI 模型 → 二次審核
  • Force / Daily SL/TP → 風控更智慧
  • HyperOpt → 自動搜尋最適化參數

若你希望在 PulseForce 中構建 更聰明、更穩健的動量策略,這是一個非常成熟且可擴充的基礎模組。

想了解更多策略與最新功能:
👉 PulseForce 官網:https://www.hiforce.ai