上一篇說了趨勢追蹤需要一條「只上不下」的停損線。這篇把這條線怎麼算,從頭到尾算一遍。
第一步:ATR 是什麼
ATR 的全稱是平均真實波幅,它回答一個問題:這檔股票平均每天會動多少錢?
先算單日的「真實波幅」TR,取三個數裡的最大值:
TR = max(今日最高 - 今日最低,
|今日最高 - 昨日收盤|,
|今日最低 - 昨日收盤|)
後兩項是為了處理跳空。如果今天開盤就比昨天收盤高出一大截,只看今天的高低點會低估實際發生的價格移動。
把 TR 做平滑(預設 14 天)就得到 ATR。ATR 的單位是元,不是百分比——這一點很重要:它讓停損距離自動適配標的的波動水準,你不需要為高波動的股票單獨放寬停損。
第二步:停損線的公式
停損線 = 持倉期間的最高價 - ATR × 倍數
生效停損 = 從進場至今算出的所有停損線裡的最大值
第二行是全部關鍵。停損線只會往上走。 價格回落時,「持倉期間的最高價」不變,但 ATR 可能變大,公式算出的數會變小——這時我們不採用它,繼續沿用之前更高的那個值。
我們的引擎用了兩個倍數:
entry_mult = 2.0:進場當天的初始停損,貼得近一些;exit_mult = 3.0:之後每天的移動停損,放得寬一些,給趨勢留空間。
第三步:跟著一筆交易算七天
假設某檔股票在第 1 天滿足進場條件(收盤價站上 100 日均線,且創下 22 日新高),收盤價 101.00 元買進。
| 日 | 最高價 | 收盤價 | ATR | 持倉最高價 | 公式算出的線 | 生效停損 |
|---|---|---|---|---|---|---|
| 1 | 102.00 | 101.00 | 4.00 | 102.00 | 102.00 − 2×4.00 = 94.00 | 94.00 |
| 2 | 106.00 | 105.00 | 4.20 | 106.00 | 106.00 − 3×4.20 = 93.40 | 94.00 |
| 3 | 110.00 | 109.00 | 4.50 | 110.00 | 110.00 − 3×4.50 = 96.50 | 96.50 |
| 4 | 109.00 | 104.00 | 4.80 | 110.00 | 110.00 − 3×4.80 = 95.60 | 96.50 |
| 5 | 118.00 | 117.00 | 5.00 | 118.00 | 118.00 − 3×5.00 = 103.00 | 103.00 |
| 6 | 119.00 | 112.00 | 5.40 | 119.00 | 119.00 − 3×5.40 = 102.80 | 103.00 |
| 7 | 114.00 | — | 5.40 | 119.00 | — | 當日最低跌破 103.00,出場 |
逐行看幾個要點:
- 第 1 天用的是
entry_mult = 2.0,所以停損是 102 − 8 = 94,而不是 90。初始停損更緊,是因為這一刻你對這筆交易還沒有任何浮盈作緩衝。 - 第 2 天公式算出 93.40,比昨天的 94.00 低。我們不採用它,停損保持 94.00。這就是「只上不下」。
- 第 4 天價格回落(收盤從 109 跌到 104),ATR 還變大了,公式算出 95.60。同樣低於前一日的 96.50,停損保持 96.50 不動。
- 第 5 天大漲,持倉最高價抬到 118,停損一躍升到 103.00。此時這筆交易已經鎖定獲利:即使明天就被停損,出場價 103 仍高於進場價 101。
- 第 7 天盤中最低跌破 103.00,觸發出場。
第四步:這筆交易的帳
- 進場 101.00,出場 103.00,+1.98%;
- 期間最高收盤價 117.00,浮盈一度到 +15.8%;
- 也就是說,從最高點回撤到出場,交出了約 12 個百分點。
這一點必須講清楚,因為它是新手最容易失望的地方:移動停損一定會讓你交出一部分利潤。 它的設計目標不是在最高點賣出——沒有任何規則能做到那件事——而是保證你不必判斷頭部在哪裡,就能把大部分趨勢留在手裡。
代價與效益是同一枚硬幣:正因為停損放得夠寬(3 倍 ATR),第 4 天和第 6 天的回落才沒有把你洗出去,第 5 天的大漲你才吃得到。如果把 exit_mult 調到 1.5,第 4 天你就出場了,後面那段漲幅與你無關。
第五步:自己動手改一個參數
打開回測工具,用預設參數跑一次,記下交易次數、勝率、總報酬。然後只改一個參數:
- **
exit_mult從 3.0 調到 2.0**:停損變緊,交易次數增加,單筆平均獲利下降。看看總報酬是變好還是變差。 - **
exit_mult從 3.0 調到 5.0**:停損變鬆,被洗出的次數減少,但每次出場都要回吐更多。
你會發現兩個方向都不是單調變好的——存在一個區間,太緊和太鬆都更差。找到這個區間的大致位置,比記住某個「最佳值」有用得多。至於為什麼不該去追求那個最佳值,見《回測的三個陷阱》裡關於過度配適的部分。
常見疑問
停損用收盤價還是盤中價觸發? 我們的引擎用盤中最低價觸發,這與實單中掛停損單的行為一致,也更保守。用收盤價觸發會讓回測結果偏好看。
跳空低開穿過停損線怎麼辦? 按開盤價成交,實際虧損大於計畫虧損。停損是價格水準,不是保險合約,這個風險無法透過調參數消除,只能靠控制單筆部位來限制。
能不能加停利? 可以加,但趨勢追蹤的報酬高度集中在少數幾筆大賺上,設定固定停利會把這些交易提前截斷,通常會顯著降低總報酬。這也是這類策略預設不設獲利目標的原因。
本文僅用於量化技術研究與教育目的,不構成任何投資建議。歷史回測結果不代表未來報酬,交易風險由投資人自行承擔。