2026年10月27日
3+ 次浏览

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 根。

美元兑日圆 2026 年 3 月到 6 月日线;4 月 30 日一天大跌,ROC 跟着跌到负的;12 根之后价格几乎没动,ROC 却一下子跳回正的
图:美元兑日元(USDJPY)日线,2026/3/3–2026/6/22,MT5 历史报价。上方是价格,空心 K 线收涨、实心收跌;灰底是 4 月 30 日那根大阴线还在 ROC 计算范围里的 12 根,红色虚线是大跌那天、灰色虚线是 12 根之后。下方橘线是 ROC(12),虚线是 0 与 ±1%。右边是价格、下方是日期,圆圈数字对应下面的说明。
1

一天跌了 2.38%(2026 年 4 月 30 日)。这一天的跌幅,大约是平均真实波幅(ATR)的 4.5 倍,是这段期间最大的一根。

2

ROC 跟着往下:从 +0.58% 掉到 −1.38%。今天大跌,拿来跟 12 根以前比,当然是负的。这很合理。

3

12 根之后,价格几乎没动(2026 年 5 月 18 日,+0.01%)。这一天收在 158.773,跟前一天差不多。

4

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 属于高风险金融产品,可能导致快速资金损失。过往业绩不代表未来结果,所有策略与回测仅供参考,不构成投资建议。交易前请充分了解本公司风险揭露条款。