Skip to content
MT5MT4soonTradingViewsooncTradersoonNinjaTradersoonPythonsoon
Oscillators & momentum

Rate of change

Also called ROC, Price rate of change, Rate of change indicator

The rate of change (ROC) is a momentum oscillator. It shows how much price has moved over a set number of bars, as a percentage, and plots that figure above or below a zero line.

Because ROC is a percentage, you can compare a move on EUR/USD with a move on gold on one scale. Its most useful job is warning you that a rally is losing speed, before you buy at the top.

The ROC formula and what the line measures

ROC compares today's close with the close a fixed number of bars ago. That fixed number is the period (n).

ROC = (Close now − Close n bars ago) ÷ Close n bars ago × 100

A reading of +1 means price is 1% higher than it was n bars ago. A reading of −0.5 means it is half a percent lower. The line has no upper or lower limit. That makes it different from bounded oscillators like RSI, which run from 0 to 100.

The example below uses illustrative figures for a 10-bar ROC. The close 10 bars ago was 1.2000 and the latest close is 1.2120.

Working out a 10-bar ROC step by step
Price change over 10 bars1.2120 − 1.2000= 0.0120
Divide by the old close0.0120 ÷ 1.2000= 0.01
Turn into a percentage0.01 × 100= 1
ROC (10)+1.00%

Some charts draw ROC as a ratio centred on 100 instead of 0. On that version, subtract 100 and read it the same way.

Reading ROC on a price chart

Start with three things:

  • Side of zero. Above zero, price is higher than n bars ago. Below zero, it is lower.
  • Slope. Above zero, a rising line means the rise is speeding up. Below zero, a rising line means the fall is easing.
  • Extremes. These are readings far from zero compared with the instrument's own recent history.

There are no fixed overbought or oversold levels. A move of +0.5% is large for a major pair on the 1-hour chart and small for gold on the daily chart. Set your extremes from the highest and lowest readings over the last 100 or so bars on the instrument you trade.

Two ROC misreads that cost traders money

The most common misread is treating a falling ROC as falling price. If ROC drops from +0.5 to +0.1, price is still above where it was n bars ago. The rise has only slowed. Price is lower than n bars ago only once the line crosses below zero.

Falling ROC above zero while price keeps rising
Illustrative values. ROC drops from +0.5 to +0.1, but the line never crosses zero, so price is still higher than it was n bars ago. The rise has only slowed.

The same trap works in reverse. If ROC climbs from −0.5 to −0.1, price is still lower than it was n bars ago. The fall has eased, but price has not started to rise.

Tip: add a 3-bar average of ROC (10). ROC crossing above its average while still below zero is an early long warning. Only the zero cross confirms it.

The second trap is the drop-off effect. ROC can jump even when today's candle is quiet. This happens when a large candle from n bars ago leaves the window. Before you act on a sudden spike, check which bar just dropped out.

The drawing below uses round, illustrative numbers. Price sits at 1.1000, one big candle lifts it to 1.1100, then it stays flat. ROC (5) spikes to about +0.91% on the big candle (0.0100 ÷ 1.1000 × 100) and holds there for four quiet bars. Five bars later, the big candle leaves the window and ROC drops to 0 on a bar where price did not move.

ROC drop-off effect: one big candle entering and leaving a 5-bar window
ROC drops to 0 five bars after the big candle, even though price is flat.

When ROC helps and when to ignore it

ROC works best:

  • in clear trends, to time entries after pullbacks;
  • at the end of a long move, to see that it is losing speed;
  • when you want to compare momentum across pairs or between gold and FX.

Stand aside:

  • in tight ranges, where the line crosses zero again and again;
  • on the 1-minute chart, where noise makes the line jump around;
  • during big news releases, when one candle swamps the window and sets up a drop-off spike n bars later.

Choosing a ROC period for your timeframe

StyleChartROC periodWhy
Scalping5-minute, 15-minute9–12Reacts fast, but needs a trend filter
Day trading1-hour10–14Covers 10–14 hours, roughly one trading session
Swing trading4-hour, daily12–2520 daily bars is about one trading month

Gold moves more in percentage terms than major FX pairs, so set its ROC extremes separately and never reuse a currency-pair threshold on gold, or the other way round.

Two ROC trading setups, with illustrative numbers

Both setups below use illustrative prices, not real trades.

Pullback re-entry with a zero-line cross

On the 4-hour chart, price is above a rising 50-period moving average. ROC (10) dips below zero during a pullback. The drawing below shows the setup.

Ten 4-hour bars cover about 40 hours, under two days, so ROC tracks the short pullback. The 50-period average covers about 200 hours, so it holds the bigger trend.

  • Entry: buy when ROC closes back above zero. Say that close is 1.2000.
  • Stop loss: below the pullback low of 1.1955, at 1.1950. That is 50 pips.
  • Exit: take profit at 1.2100, which is twice the risk. Close early if ROC closes back below zero.
ROC (10) pullback re-entry: buy at 1.2000, stop 1.1950, target 1.2100
The buy comes on the close where ROC crosses back above zero, not at the pullback low.

Sizing: you risk $100. On a USD-quoted pair, one standard lot (100,000 units) is worth $10 per pip.

Lot size = $100 ÷ (50 pips × $10 per pip per lot) = 0.20 lots

Divergence fade after a weakening rally

A bearish divergence forms when price makes a higher high while ROC makes a lower high. The rally is still going, but each push covers less ground than the one before. The chart below shows a ROC (5) line with illustrative data. ROC peaks at 0.56 on the bar that closes at 1.1062. Eight bars later, price makes a higher high with a close at 1.1088, but ROC's new swing high reaches only 0.07. The next bar takes ROC below zero, and the decline that follows is the move the divergence warned about.

ROC (5) peaking early, then crossing below zero before a declineIllustration
Higher close, weak ROCROC (5), %Zero lineROC peakCross below zero
  • Entry: sell when ROC closes below zero, at 1.1080.
  • Stop loss: at 1.1095, above the swing high of 1.1093. That is 15 pips.
  • Exit: target 1.1050, which is twice the risk (30 pips). Close early if ROC turns back above zero.

Over the last five bars, ROC climbs from −0.52 to −0.23 while price drifts down to 1.1005. That is the fall-easing case from the misreads section, which is why the target sits well before it: price reaches 1.1050 two bars earlier, on the candle that closes at 1.1040.

Pre-trade checklist for ROC signals

  1. Is the higher-timeframe trend on the same side as the ROC signal? Trade zero crosses only in that direction.
  2. Is the reading extreme for this instrument, judged by its own recent history?
  3. Did a large or news candle just enter the window, or leave it? If so, discount the spike.
  4. Trading a divergence? Wait for the zero cross or a break in price structure before you enter.
  5. Is your stop set from price structure, with the size worked out from your risk?

FAQ

How does ROC differ from the momentum indicator?

Both compare today's close with the close n bars ago. Momentum shows the raw price difference, or a ratio centred on 100. ROC shows a percentage, so its readings compare across instruments and price levels.

Does the ROC value change on the live candle?

Yes. Until the candle closes, ROC moves with every tick. Once the bar closes, its reading stays fixed. Base your decisions on closed bars.

Why does my ROC look different from someone else's on the same pair?

Check four things. The period may differ. One chart may show the percentage version and the other the ratio centred on 100. The chart timeframe may differ. And broker server time changes when daily candles close, which changes the closes ROC compares.

Related terms