問題:為什麼你的策略突然開始虧錢?

一個在回測中表現良好的策略,上線後突然開始連續虧損。這不是 bug,而是市場環境變了

我們的小幣量能突破策略(基於 CEX 成交量暴增 + 技術確認)在設計時只做多。邏輯很簡單:發現量能異常 → 技術面確認 → 做多進場。

回測結果不錯。但上線 Testnet 後,某些幣種開始反覆虧損:

幣種交易數勝率累計盈虧
表現好的 A 幣580%+$27
表現差的 B 幣30%-$15
表現差的 C 幣20%-$10

同樣的策略邏輯,為什麼結果天差地別?

根因分析

深入分析後發現一個殘酷的事實:

做空的勝率 71.4%,做多只有 39.3%。

市場處於下跌趨勢。我們的 long-only 策略等於在逆風而行

那些反覆虧損的幣(B 和 C)本身就在下跌通道中,量能暴增不是因為「要漲了」,而是因為恐慌性拋售。我們的策略把賣出信號當成了買入信號。

解法:三道自適應防線

第一道:績效冷卻期

最直覺的方法:如果一個幣連續虧了 N 次,暫時別碰它。

1
規則:同一幣種連續虧損 2 筆 → 冷卻 24 小時

實作上,每次掃描信號前,先查詢交易資料庫中最近 24 小時的已平倉記錄。按幣種分組,檢查最近 N 筆是否全部虧損。是的話,該幣種進入冷卻期。

這很像人類交易者的直覺:「這個幣最近老虧,先不碰。」差別在於系統能做到完全客觀,不會因為「覺得這次會反轉」而硬開倉。

第二道:EMA 趨勢確認

冷卻期是事後防護,等虧了才生效。我們需要事前過濾。

最簡單的趨勢判斷:價格是否在移動平均線之上?

1
規則:做多時,當前價格必須 > EMA(20)

如果一個幣的價格持續在 EMA(20) 下方,代表短期趨勢向下,此時做多的勝率天然偏低。這個過濾器能在虧損發生之前就擋下大部分逆勢交易。

第三道:Market Regime 過濾

最上層的防護。不看個別幣,看整個市場

我們用 BTC 的 4 小時 K 線偵測市場狀態:

  • 上升趨勢 (ADX > 25 + EMA 向上):允許做多
  • 下降趨勢 (ADX > 25 + EMA 向下):暫停所有做多
  • 震盪 (ADX < 20):允許做多,但需通過個股確認
  • 高波動:降級信心,縮小倉位

當整個市場處於下降趨勢時,做多小幣幾乎等於跟市場對賭。這時候最好的交易就是不交易

三道防線的協同效果

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
信號掃描開始
  ├─ 第三道:Market Regime 檢查
  │   └─ BTC 下降趨勢?→ 全部暫停,返回 0 信號
  ├─ 第一道:績效冷卻期
  │   └─ 該幣連續虧損?→ 跳過
  ├─ 第二道:EMA 趨勢確認
  │   └─ 價格 < EMA(20)?→ 跳過
  └─ 通過全部檢查 → 生成信號

實測效果:20 個量能異常候選幣,最終只有 2 個通過全部檢查。過濾率 90%。

設計原則

  1. 從粗到細:先看大盤(Regime),再看個幣(冷卻期),最後看技術面(EMA)
  2. 從數據出發:冷卻期基於真實交易記錄,不是假設
  3. 可配置:冷卻天數、EMA 週期、ADX 閾值都是參數,可根據數據調整
  4. 寧可錯過,不可做錯:在不確定的環境中,不交易是一種交易策略

給量化交易者的建議

如果你的策略開始虧錢,在調參數之前先問三個問題:

  1. 市場環境變了嗎? — 你的策略是為趨勢設計的,但市場可能已經轉為震盪
  2. 是個別幣的問題還是系統性的? — 如果多個幣同時虧,通常是市場問題不是策略問題
  3. 你的策略有停損機制嗎? — 不只是單筆止損,而是「這個策略整體表現不好時該怎麼辦」

好的風控不是讓你永遠不虧錢。好的風控是讓你在應該停下來的時候停下來,在應該繼續的時候繼續。