動能指標交易:如何在期貨上回測 ROC、RSI 與 MACD
動能指標衡量的是價格變動的速度,而不是趨勢的方向。使用時,請寫下一個固定的觸發條件與一個固定的出場條件,加入手續費與滑價,並將同一規則原封不動地套用到幾個不相關的期貨市場上。MACD 的線是趨勢,它的柱狀圖則是動能。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
如何用動能指標進行交易?
動能指標交易的意思是:當價格變動的速度轉向上升時買進,轉向下降時賣出。要用哪一種觸發條件(零軸穿越、30/70 水準,或訊號線交叉),無法光從圖形上判斷。請把它寫成一條固定規則,加入手續費與滑價,然後在一個以上的期貨市場上回測。
動能指標是一條由近期收盤價計算出來的線,用來顯示價格在設定的 K 棒數內變動得有多快。有些交易者會不同意這個說法:你選的進場觸發條件,重要性不如你搭配的出場方式,以及每筆交易付出的成本。單靠一個動能進場訊號,能決定的事情很少。要知道它在你的市場上實際會做什麼,就要用含成本的回測來檢驗。這也是技術分析工具與可回測指標指南對任何指標所建議的做法。
工作順序永遠相同:
- 選定指標與回看期數。回看期數是指標讀取的 K 棒數,例如動能用 10 根 K 棒,RSI 用 14 根 K 棒。
- 把進場觸發條件寫成是或否的條件。「RSI 向上穿越 50」可以檢驗;「RSI 看起來強勢」則不能。
- 在看任何結果之前,先寫好出場條件。反向訊號、固定停損、時間停損或移動停損,四選一,並且寫下來。
- 依你交易的合約設定手續費與滑價。
- 將規則原封不動地套用到幾個市場上,並比較扣除成本後的平均每筆損益,與一買一賣(來回)的成本。
動能指標實際衡量的是什麼?
動能指標衡量的是價格在回看區間內變動的速度,而不是較長期的趨勢朝哪個方向。可以把它想成汽車:趨勢是羅盤上的方向,動能則是時速表。汽車可能仍然朝北行駛,但時速表已經往下掉,它會先減速,然後才停下來並轉向。因此動能線通常在價格見頂之前就先見頂,而且在價格仍在上升時就已經走平。
這有兩個實際的含義。第一,動能轉折是一個提早的警示,而不是反轉訊號:汽車已經減速,但還沒有轉向。第二,強勁的趨勢可能讓指標連續數週貼近頂部或底部,因為價格仍以穩定的高速移動。一個連續一個月處於超買區的指標,反映的是快速而穩定的上漲,而不是錯誤;KD 或 RSI 長期卡在超買區代表什麼這篇文章,說明了如何檢驗這種情況,而不是直接逆勢操作。
有研究支持過去的速度帶有某些資訊這個想法。Moskowitz、Ooi 與 Pedersen(2012)研究了一組廣泛的期貨市場,發現過去十二個月報酬的正負號,在許多市場中與接下來一個月報酬的正負號有關。這是對多個市場與數十年資料的平均結果,而且是在特定規則與成本下測得的。它說明這個想法值得檢驗;但它無法告訴你,今年在你的合約上,一個 10 根 K 棒的動能交叉會有什麼表現。當近期價格變動接近隨機時,任何動能讀數大多只是雜訊。用熵指標衡量市場隨機性這篇文章,說明了在相信某個觸發條件之前,可以先檢查這一點的一種方法。
ROC、動能與 RSI:差別在哪裡?
動能是 N 根 K 棒內的價差,ROC 是這個價差的百分比,而 RSI 則把平均漲幅與平均跌幅的關係重新換算到固定的 0 到 100 範圍,因此每一個指標都需要不同類型的觸發線。最簡單的動能指標是:今天的收盤價減去 N 根 K 棒前的收盤價,單位是點數。變動率(ROC)則把這個差值除以較早的收盤價,再乘以 100,所以讀數是百分比。RSI比較回看期間上漲收盤的平均幅度與下跌收盤的平均幅度,並把結果壓縮在 0 到 100 之間,以 50 為中性點;Wilder(1978)以 14 根 K 棒的回看期數提出它,這仍是常用的預設值。
值得記在腦中的一個公式是 ROC:
ROC = (現在收盤價 − N 根 K 棒前收盤價) ÷ N 根 K 棒前收盤價 × 100
其中現在收盤價是最新的收盤價,N 根 K 棒前收盤價是 N 根 K 棒之前的收盤價,結果是百分比。除以較早的收盤價正是重點所在:它讓一檔在 20,000 點交易的合約上漲 1%,與一檔在 5,000 點交易的合約上漲 1%,意義相同。
| 特性 | 動能 | ROC | RSI |
|---|---|---|---|
| 計算內容 | 現在價格減去 N 根 K 棒前的價格 | 上述差值占較早價格的百分比 | 平均漲幅除以平均漲幅加平均跌幅,換算為 0 到 100 |
| 尺度 | 點數,沒有上下限 | 百分比,沒有上下限 | 0 到 100 |
| 中性線 | 0 | 0 | 50 |
| 常見觸發條件 | 零軸穿越 | 零軸穿越或百分比門檻 | 30 與 70 水準,或 50 線 |
| 可跨市場比較 | 否 | 是 | 是 |
假設範例
假設某檔指數期貨在 20,000 點交易,另一檔在 5,000 點交易,兩者在過去 10 根 K 棒都上漲了 200 點。動能在兩者上都讀出 200,看起來像是同一件事。ROC 則在第一檔讀出 1%,在第二檔讀出 4%,這是非常不同的事件。若把規則寫成「動能高於 150」,兩者都會觸發;若寫成「ROC 高於 2%」,則只有第二檔會觸發。如果你計劃把同一條規則用在多個市場,就應該使用百分比尺度或 RSI 尺度來撰寫。
尺度也會改變門檻隨時間的表現。以點數表示的固定動能門檻,會隨著合約價格水準上升而變得更容易達到,因此在較低價格水準的資料上調校的規則,之後會更頻繁觸發,而原因與市場本身無關。百分比與 0 到 100 的尺度則不會有這種漂移。
MACD 是趨勢指標還是動能指標?
MACD 兩者皆是,你得到哪一種,取決於你的規則讀取它的哪一部分。MACD 線是快速指數移動平均與慢速指數移動平均之間的差距(預設分別為 12 與 26 根 K 棒)。兩條均線之間的差距變化緩慢,並且在整段上漲過程中都保持為正,因此 MACD 線的行為像是趨勢追蹤工具。柱狀圖則是 MACD 線減去訊號線(訊號線為 MACD 線的 9 根 K 棒平均),也就是說,它顯示差距是在擴大還是收斂。差距的變化本身就是速度的讀數,因此柱狀圖的行為像動能指標。
| MACD 的組成部分 | 讀取內容 | 行為類似 | 常見規則 |
|---|---|---|---|
| MACD 線與零軸 | 快線高於或低於慢線 | 趨勢過濾器 | 只在 MACD 線位於零軸之上時做多 |
| MACD 線與訊號線 | 差距相對於自身近期平均的轉折 | 慢速動能 | 在交叉時進場 |
| 柱狀圖(MACD 減訊號線) | 差距是在擴大還是收斂 | 快速動能 | 柱狀圖轉折時進場,轉回時出場 |
寫規則時這一點很重要,因為柱狀圖轉折可能比 MACD 線的零軸穿越早了許多根 K 棒,兩者會在同一段走勢的不同位置觸發。兩條指數均線的遲緩,是換取平滑線條所付出的代價;DEMA 指標以及它如何降低指數移動平均的落後這篇文章,說明了用較快的均線取代標準均線時會改變什麼,以及為什麼較快的線不一定就比較好。
動能應該測試哪些進出場規則?
四種規則家族涵蓋了幾乎所有動能交易,而且每一種都必須搭配事先寫好的出場條件,因為單靠進場幾乎無法決定結果。這四種是:零軸穿越、門檻穿越、訊號線交叉與背離。它們不是同一件事的四種說法:在同一段走勢上,它們會在不同的 K 棒觸發,因此交易的是那段走勢的不同部分。
- 門檻穿越。指標從極端值回升,例如 RSI 向上穿越 30。觸發最早,往往價格仍在下跌時就出現。通常搭配一個設在近期低點之下的固定停損,以及一個設在中性線的目標價,因為逆著走勢進場的交易需要明確的硬性限制。
- 零軸或中性線穿越。動能或 ROC 穿越零軸,或 RSI 穿越 50。在轉折已經形成之後才觸發。通常以反向穿越作為出場,使它成為停損並反手的規則。
- 訊號線交叉。指標穿越它自己的移動平均,例如 MACD 線穿越訊號線。比中性線穿越晚幾根 K 棒觸發。通常搭配反向的訊號線交叉,或移動停損。
- 背離。價格創出更高的高點,而指標卻創出更低的高點(看跌),或相反的情況(看漲)。背離是價格方向與價格速度之間的不一致。它在走勢中出現得最晚,也最需要仔細定義:兩個高點可以相隔多少根 K 棒,以及第二個指標高點必須低多少。通常搭配設在價格高點之上的停損,以及時間停損。
結果大部分是由出場決定的。以零軸穿越進場、以反手作為出場的規則,會撐過每一次回檔;同樣的進場如果搭配緊的固定停損,則會在第一次回檔時被洗出場,之後再以更差的價格重新進場。出場條件要寫成規則的一部分,而不是等第一次回測看起來不理想時才加上去的設定。每一種進場家族與每一種出場類型,都可以寫成一個規則家族,搭配一系列回看期數與門檻;在 AlphaPrime(Valynox)中,這就是策略生成的輸入,因此搜尋所評估的每一個候選策略,都已經包含出場與成本假設,而不只是進場。
動能規則在期貨回測中是什麼樣子?
我們在 NQ 日線上的一次實際回測,顯示了一條類動能震盪指標規則在扣除手續費與滑價後的結果,也說明了為什麼被保留下來的一個候選策略,必須被視為被美化的範例。這次回測以 OSMA 規則作為本文主題的替代:OSMA 就是 MACD 柱狀圖的另一個名稱,即 MACD 線減去訊號線,因此它在前幾節的意義上是一種動能讀數,但它不是 ROC、一般動能或 RSI。這次回測測試的是 NQ(E-mini 那斯達克 100 期貨)的日線,期間為 2019-01-02 至 2025-06-30,做多與做空皆可,每次一口,以 OSMA 規則作為唯一的進場與出場,沒有停損、目標價或過濾條件,每筆交易收取 20 美元手續費與 10 美元滑價。
來源:AlphaPrime 產品引擎(CPU),2026-10-31 執行。NQ 日線,2019-01-02 至 2025-06-30,多空都做,1 口,每筆手續費 $20、滑價 $10。
| 項目 | 結果 |
|---|---|
| 淨利(已平倉) | $133,935 |
| 最大回撤 | $46,600 |
| 交易筆數 | 213 |
| 勝率 | 54.93% |
| 獲利因子 | 1.418 |
| 平均每筆 | $628.8 |
| 在場時間 | 22.69% |
關於這張表,最重要的一句話是候選策略的挑選方式。搜尋嘗試了 1,024 個候選策略(回測紀錄中的數量),並以報酬相對於回撤的比例保留了這一個。事後從眾多候選中挑出最佳者,會美化被保留的那一個:它的結果一部分來自規則本身,一部分來自這個設定恰好適合這六年半的資料所帶來的運氣。這裡沒有任何內容表示 OSMA,或任何動能規則,真的賺到了這筆錢;也沒有任何內容表示讀者可以期待同樣的結果。為什麼搜尋中最好的回測通常被高估這篇文章,說明了這種選擇偏誤通常有多大。

若把這張表當作範例來讀,它能說明的是日線上類動能規則的樣貌。在場時間為 22.69%,表示這條規則約有四分之三的時間是空手的,這在柱狀圖轉折同時作為進場與出場時很常見:它抓住走勢中快速的部分,並在其間退出。期間的 213 筆交易,在扣除每筆 30 美元成本後,平均每筆損益為 628.8 美元,因此成本在每筆交易中所占比例很小;若同樣成本用在 5 分鐘 K 棒的規則上,利潤空間會薄得多。勝率 54.93% 搭配 1.418 的獲利因子,說明結果來自獲利交易的金額略大於虧損交易,而不是來自高勝率。以一口合約計算,最大回撤 46,600 美元,才是你應該用來決定帳戶大小的數字,而不是淨損益。
如何在多個市場上回測動能?
以相同的設定,將同一條規則套用到幾個不相關的期貨市場上,比較每個市場扣除成本後的平均每筆損益與一買一賣(來回)的成本,並且只保留那些在大多數市場上、相鄰設定表現相近的規則。一買一賣(來回)的成本,就是一次進場加一次出場的手續費與滑價合計。只在某一個市場、某一組設定下有效的規則,更可能是描述該市場的歷史,而不是可重複的效果。Park 與 Irwin(2007)回顧了數十年關於技術性規則的研究,發現報告的結果隨市場與期間差異很大,而且許多研究並未考慮在報告的那一個規則之前,已經試過多少規則。
- 寫下規則與出場條件,採用百分比或 0 到 100 的尺度,使同一組設定在每個市場上意義相同。
- 固定回看期數與觸發條件,並寫下來。它們不會因市場而改變。
- 依市場設定手續費與滑價。每份合約各有其跳動點價值,因此同樣一跳的滑價,在每個市場上換算成的美元金額不同。
- 原封不動地套用到四個不相關的市場,例如股價指數、債券、能源與金屬。「不相關」很重要:兩個股價指數的走勢相近,因此在兩者上都通過,幾乎等於只在一個上通過。
- 在每個市場上比較扣除成本後的平均每筆損益與一買一賣(來回)的成本。事先決定四個市場中必須有幾個為正。
- 檢查相鄰設定。把回看期數改短或改長幾根 K 棒,把門檻調高或調低幾個單位。在 14 通過、但在 12 與 16 失敗的規則,是靠運氣通過的;如何分辨參數高原與僥倖尖峰這篇文章,涵蓋了如何解讀這樣的曲面。
假設範例
假設一條以 14 根 K 棒回看期數、穿越 50 的 RSI 規則,原封不動地套用到四個市場,每個市場的一買一賣成本為 30 美元。扣除成本後的平均每筆損益分別為:指數 180 美元、債券 40 美元、能源 −25 美元、金屬 95 美元。四個中有三個為正,而債券的 40 美元只比 30 美元的成本略高,因此滑價稍微上升就會轉為負值。若依事先寫好的規則,要求三個市場為正,這條規則就會進入相鄰設定的檢查;若規則還要求每個獲利市場的平均每筆損益至少為一買一賣成本的兩倍,債券就會失敗,只剩兩個市場通過,這條規則就應該捨棄。決定的依據是你在看結果之前寫下的標準,這也是它必須先寫好的原因。
接下來要做的,是從四種家族中挑出一種觸發條件,搭配一種出場方式,並以你實際的手續費與滑價,在四個你有日線資料的不相關期貨市場上執行。在回測之前,請先寫下:必須有幾個市場的扣除成本後平均每筆損益,超過一買一賣成本的兩倍。然後,再拿這個數字與實際結果做比較。
常見問題
動能指標與趨勢指標有什麼差別?
趨勢指標,例如移動平均,告訴你價格過去是朝哪個方向走;動能指標則告訴你,在回看區間內價格走得有多快。速度的改變先於方向的改變,因此動能線通常比移動平均更早轉折,而且在持續的趨勢中,它可能長時間停留在極端值附近。
哪一種動能指標最適合期貨?
沒有哪一種在所有市場上都測試最好,因為 ROC、一般動能與 RSI 是在不同尺度上衡量同一個概念。若你想把規則用在多個合約上,ROC 或 RSI 比一般動能實用,因為百分比或 0 到 100 的讀數,在任何價格水準上意義都相同。通常,出場方式與每筆交易的成本,對結果的影響會大於這三者之間的選擇。
動能指標的好設定是多少?
動能與 ROC 常用的預設是 10 或 12 根 K 棒,RSI 常用 14 根 K 棒。它們是合理的起點,理由是被廣泛使用,而不是因為它們是最佳的。請測試比這些設定短或長幾根 K 棒的結果。如果相鄰設定之間的結果變化很大,那麼看起來不錯的設定,就只是僥倖的尖峰,而不是高原。
只用一個動能指標能交易嗎?
你可以從一個動能指標寫出完整的規則,例如以 RSI 穿越 50 進場,並以反向穿越出場。它在扣除手續費與滑價後能否站得住,要由一個以上市場的回測來回答,而不是看圖表就能知道。大多數通過這類測試的動能規則,都有明確定義的出場條件,而且每筆交易的成本相對於平均每筆損益很小。
參考文獻
- Wilder, J. W. (1978). New Concepts in Technical Trading Systems. Trend Research.
- Moskowitz, T. J., Ooi, Y. H., & Pedersen, L. H. (2012). Time Series Momentum. Journal of Financial Economics, 104(2), 228–250.
- Park, C.-H., & Irwin, S. H. (2007). What Do We Know About the Profitability of Technical Analysis? Journal of Economic Surveys, 21(4), 786–826.

