ROC 變動率是什麼?價格沒動,ROC 為什麼自己跳了
「價格今天明明沒什麼動,ROC 怎麼一下子從負的跳到正的?」
答案不在今天,在 12 根以前。ROC 只拿今天跟「N 根以前的那一天」比,那一天被換掉的時候,ROC 也會跟著變。如果被換掉的剛好是一根暴漲或暴跌的 K 棒,ROC 就會自己跳一下。這一篇先用 7 根 K 棒算一次,再用一張標了 1~4 的真實行情圖(美元兌日圓 2026 年),看這個「回音」長什麼樣。
這是 MASQuant 邁思量化「交易學院 · 技術指標大全」的一篇。所有指標的分類整理在〈技術指標大全〉。
一句話看懂
ROC=今天的價格,比 N 根以前漲跌了幾 %。
它回答的問題是:「跟某一天比,現在漲了還是跌了、差多少?」
ROC 像「跟去年同月比」的年增率:今年 5 月的業績跟去年 5 月比。去年 5 月如果剛好有一筆特別大的訂單,今年 5 月的年增率就會很難看——不是今年變差,而是比較的基準特別高。ROC 的數字,一半取決於今天,一半取決於被拿來比的那一天。
先算一次:價格沒動,ROC 卻跳了
為了好算,用 3 根的 ROC(今天跟 3 根以前比)。第 4 天價格從 100 跌到 90,之後一直停在 90(以下是舉例用的整數,不是行情資料):
| 第幾天 | 收盤 | 3 根以前的收盤 | ROC(3) |
|---|---|---|---|
| 第 4 天 | 90 | 100 | (90 − 100)÷ 100 × 100 = −10% |
| 第 5 天 | 90 | 100 | −10% |
| 第 6 天 | 90 | 100 | −10% |
| 第 7 天 | 90 | 90 | (90 − 90)÷ 90 × 100 = 0% |
第 5、6、7 天價格一動也不動。但到了第 7 天,被拿來比的那一天從「大跌前的 100」換成「大跌後的 90」,ROC 從 −10% 一下子跳回 0%。第 4 天那一跌,在 ROC 裡留了 3 根,然後一次消失。期數換成 12,就是留 12 根。
正式公式
常用參數是 12(也有人用 9、10、14):
ROC =(今天收盤 − 12 根以前的收盤)÷ 12 根以前的收盤 × 100
0 以上:比 12 根以前高
0 以下:比 12 根以前低
MT5 裡有兩個相關的指標,算法不太一樣:
- MT5 範例裡的 ROC(Rate of Change,預設 12):除的是「今天的價格」而不是「12 根以前的價格」。所以漲 10% 會顯示 9.09、跌 10% 會顯示 −11.11,跟上面的標準算法略有差別。
- MT5 內建的 Momentum(動量,預設 14):算的是「今天 ÷ N 根以前 × 100」,100 代表沒變,101 代表多 1%。本質跟 ROC 一樣,只是把 0 換成 100。
本文的圖用的是上面的標準算法。換平台比數值之前,先確認用的是哪一種。
看圖:美元兌日圓 2026 年,照著 1~4 看
下面這張圖是美元兌日圓(USDJPY)2026 年 3 月初到 6 月下旬的日線,取自 MT5 的歷史報價。整段從 157.689 走到 161.529,中間在 4 月 30 日有一根很大的陰線。灰底是那根陰線還留在 ROC 裡的 12 根。

一天跌了 2.38%(2026 年 4 月 30 日)。這一天的跌幅,大約是平均真實波幅(ATR)的 4.5 倍,是這段期間最大的一根。
ROC 跟著往下:從 +0.58% 掉到 −1.38%。今天大跌,拿來跟 12 根以前比,當然是負的。這很合理。
12 根之後,價格幾乎沒動(2026 年 5 月 18 日,+0.01%)。這一天收在 158.773,跟前一天差不多。
ROC 卻從 −1.00% 跳到 +1.42%,一天跳了 2.42 個百分點。原因是被拿來比的那一天換了:前一天比的是大跌之前的價格,這一天比的是 4 月 30 日大跌之後的收盤 156.554。今天什麼事都沒發生,ROC 卻像出了一根大陽線。這就是 ROC 的「回音」。
這是一段真實的歷史行情,用來說明ROC的性格,不是通則。換商品、換週期、換一段行情,數字都會變。
看到什麼、代表什麼
| 你看到 | 通常代表 | 但要小心 |
|---|---|---|
| ROC 在 0 以上 | 比 N 根以前高 | 只比一個點,不代表中間一路在漲 |
| ROC 在 0 以下 | 比 N 根以前低 | 同上 |
| ROC 從負轉正 | 現在的價格超過 N 根以前 | 也可能是「被比的那一天」換掉了,今天不一定有漲(圖上 4) |
| 價格創新高,ROC 卻比上次低 | 漲勢在減速 | 不代表會反轉,只是比 N 根以前的差距變小 |
| ROC 突然大跳,價格卻平平 | N 根以前有一根很大的 K 棒剛離開 | 往前數 N 根找找看,通常就找到原因了 |
實際怎麼用:三個例子
例一:當動能濾網
規則可以寫成:「ROC(12) 大於 0 才做多。」意思是「現在比 12 根以前高」,順勢的單才做。這是最簡單、也最常見的用法。
例二:比較不同商品誰比較強
ROC 是百分比,不同價位的商品可以直接比。例如同時看黃金、白銀、指數最近 20 根的 ROC,只挑最強的那一個做多。
例三:避開回音造成的假訊號
如果規則是「ROC 由負轉正就進場」,可以加一個條件:「當天的收盤也要比前一天高」。圖上 4 那種「價格沒動、只是基準換掉」的翻正,就會被擋掉。
三個例子都要記得:ROC 只比兩個點。今天這個點、N 根以前那個點,中間發生什麼它不管。N 根以前那一天越特別,ROC 越容易自己跳。
常見誤用
一、看到 ROC 翻正就以為今天漲了
圖上 4,價格只漲 0.01%,ROC 卻從 −1.00% 跳到 +1.42%。翻正的原因是 12 根以前那根大陰線離開了計算範圍,不是今天有買盤。
二、把不同平台的 ROC 數字直接比
標準算法除的是 N 根以前的價格,MT5 範例的 ROC 除的是今天的價格,MT5 的 Momentum 又以 100 為中心。同樣是「漲 10%」,三種會顯示 10、9.09、110。
三、期數隨便換
ROC(9) 和 ROC(14) 比的是不同的那一天,回音出現的時間也不一樣。期數改了,訊號的位置跟著變,要重新驗證,不能直接沿用。
常見問題
ROC 指標是什麼?
ROC(Rate of Change,變動率)是動量指標,算的是今天的價格比 N 根以前漲跌了幾 %,常用期數 12。0 以上代表比 N 根以前高,0 以下代表比較低。
ROC 和 Momentum 有什麼不同?
本質一樣,都是拿今天跟 N 根以前比。ROC 以 0 為中心、單位是 %;MT5 內建的 Momentum 是「今天 ÷ N 根以前 × 100」,以 100 為中心。
ROC 為什麼會突然跳動?
因為被拿來比的那一天每天都在換。N 根以前如果有一根特別大的 K 棒,它離開計算範圍的那一天,ROC 就會大跳,即使當天價格幾乎沒動。
MT5 有 ROC 嗎?
MT5 安裝時附的範例指標(Examples 資料夾)裡有 Rate of Change,預設期數 12;它除的是今天的價格,數值跟標準算法略有不同。MT5 指標清單裡內建的是 Momentum。
結語
ROC 很直接:今天比 N 根以前漲了幾 %。它的弱點也一樣直接——比較的基準每天都在換,基準那一天越特別,數字越會自己跳。
所以真正該問的是:你的進場規則用「ROC 由負轉正」,有多少次其實只是 12 根以前的那一天被換掉了? 這個問題,一段歷史行情回答不了,要拿規則在很多段行情上回測。
還沒有自己的規則、不想從指標一個一個拼起?MASQuant 邁思量化的策略精靈只要你先選一種投資風格,AI 會分析市況、挑選商品,一次給你三組候選策略,每組都先用歷史資料回測過,報酬和本金最大回撤攤開來看,再由你決定要不要部署到 MT5。
已經有自己的想法,就把條件寫成一句話,例如「ROC(12) 大於 0、而且當天收盤高於前一天才做多」,丟進 AI 策略助理,按下去就開始回測,回測環境納入點差、滑點、市場流動性變化與交易執行延遲這些真實市場摩擦(操作方式見〈策略助理使用教學〉)。再拿掉「當天收盤高於前一天」跑一次,就看得出回音造成的假訊號有多少。回測告訴你的是「這條規則在過去的行情裡表現如何」,不是未來的保證。
想法,經過驗證,才叫策略。
文中走勢圖取自 MT5 平台的歷史報價(日線;不同平台的報價與日線切法略有差異,數值可能不完全相同),指標由程式依標準算法計算;舉例用的整數不是行情資料。歷史行情只用來說明指標的性格,不代表未來走勢。
風險揭露:CFD 屬於高風險金融商品,可能導致快速資金損失。過往績效不代表未來結果,所有策略與回測僅供參考,不構成投資建議。交易前請充分了解本公司風險揭露條款。
