Home/Guides/Renko and range bars
Chart types
Renko, range and tick bars break volatility readings.
Not loudly. The number stays stable and plausible, which is exactly the problem — nothing on the chart tells you the measurement has stopped meaning anything.
What these bar types have in common
A five-minute bar closes when five minutes have passed, whatever the market did in them. Renko, range and tick bars close on a different condition entirely:
- Renko prints a new brick when price has moved a fixed distance from the last one. Brick height is a setting.
- Range bars close once the bar has covered a fixed range. Bar height is a setting.
- Tick bars close after a fixed number of trades. Bar height varies, but the bar's duration is whatever it took to reach that trade count.
In all three cases, one bar is not a fixed amount of time. That single fact is what undermines any indicator that treats bar count as a proxy for elapsed time — which includes every average true range calculation run on the chart's own bars.
Why ATR stops working
ATR averages the true range of recent bars. On a renko chart, the true range of a brick is, by construction, close to the brick size you chose. On a range chart it is the range setting you chose. Average a series of near-identical numbers and you get that number back.
So the ATR reading on a renko chart is not measuring the market. It is measuring your brick setting. Volatility could double and the reading would barely move — the market would simply produce bricks faster.
The reason it goes unnoticed. A broken ATR here does not spike,
flatline at zero, or throw an error. It sits at a stable, believable
value forever. Anything downstream that divides by it inherits the
fault silently, and every threshold expressed in
R becomes a threshold expressed in fractions of a number
you picked out of the bar-type dialog.
Tick bars are a milder version of the same problem. Their ranges do vary, so the ATR is not pinned to a constant — but a fixed number of trades is a very different amount of time at the open than it is at midday, so the average is taken over a lookback that stretches and contracts unpredictably.
What still works, and what does not
| Measurement | On renko / range bars |
|---|---|
| Moving averages of price | Fine. They average closes; the closes are real prices. |
| Separation between averages, in points | Fine as a raw distance. |
| ATR from the chart's own bars | Broken. Reports your bar setting. |
| Anything normalised by that ATR | Broken. Inherits the constant denominator. |
| "Distance travelled over N bars" | Unreliable — N bars is not a consistent span of time. |
The fix: take volatility from a time-based series
NinjaTrader 8 lets an indicator subscribe to more than one data series at once. The standard solution is to leave the display on your renko or range chart and compute the volatility reading from a separate, time-based series added behind the scenes — five minutes is the usual choice, being short enough to react and long enough to be stable.
The chart looks identical. The difference is that the denominator in every normalised reading now comes from bars that represent equal spans of time, so it responds to the market instead of to your bar settings.
In FlowRegime
Half of the problem is designed out and half of it is handed to you.
The denominator is safe: FlowRegime takes its ATR from a separate
five-minute series — AtrPeriod and AtrMinutes
in the Regime authority group — and never from the primary
chart, precisely because the primary chart may be renko or range. You do
not have to switch that on.
The numerator still needs you. BarAtrFraction is the
fraction of that ATR the indicator treats as a normal bar's
displacement, and on a renko chart a "normal" brick is whatever brick
size you chose. It is the one setting the manual tells you to set
before anything else, and the defaults are built around
NinZaRenko 24/12 on NQ:
| Instrument / chart | BarAtrFraction |
|---|---|
| NQ · NinZaRenko 16/8 | 0.20 – 0.30 |
| NQ · NinZaRenko 24/12 | 0.30 – 0.40 (default) |
| ES · 52-range | 0.25 – 0.35 |
| NQ or ES · 5-minute | 0.85 – 1.00 |
The jump between a renko row and a 5-minute row is the whole point of this guide expressed as a number. A time bar is an ATR bar by definition, so the fraction sits near 1.00; a brick is not, so it does not.
To check you got it right, watch the Efficiency plot on an ordinary bar. It should sit around 0.6 to 1.0 rather than pinning at 0 or 2. If everything reads as absorption the value is too high — displacement always looks small against it. If everything reads as trend, it is too low.
One limitation worth knowing before you build on it: renko and range charts are execution displays. Backtest fills taken on them are optimistically biased, so validate in Market Replay rather than trusting a backtest run on bricks.
In the bundled Traffic Lights
There it is a choice rather than the default. Tick Use 5-minute ATR in the volatility group; the indicator adds the five-minute series itself, and the slope and separation figures on the dashboard switch to being measured against it. Nothing else about the configuration changes.
Do re-check your thresholds after switching. The denominator changes
scale, so an R value that read 0.3 before may read quite
differently afterwards — the new number is the meaningful one, but it is
a new number.
Practical notes
- Your data connection has to supply it. The secondary series needs historical five-minute data for the instrument. If your feed is limited, load fewer days rather than expecting the indicator to fill the gap.
- Expect a slightly longer chart load. Two series means two requests. It is noticeable on the first load and not afterwards.
- Renko variants are not all the same. NinjaTrader ships several renko-style bar types, and some smooth or synthesise the final brick as it forms. Any indicator reading the current bar reads that synthetic value, and it can change before the brick completes.
- Be careful backtesting on these bar types. Renko and range charts hide intrabar path — the sequence of prices that produced the brick is not recoverable from the brick. Backtests run on them routinely look far better than the same logic performs live. Use tick-replay or a time-based series if you are testing anything that depends on order of events.
The short version
If your chart's bars close on price or activity rather than the clock, do not let anything measure volatility from those bars. Point the measurement at a time-based series and leave the display where you like it. It is a one-checkbox difference, and it is the difference between a threshold that tracks the market and one that tracks a setting you chose months ago.
Read next
The background to this one.
ATR instead of points
What the denominator discussed above is for, how to read a value in R, and the limits of normalising.
Read the guide →
Moving averagesThe 20/50/200 cluster
What the separation and slope readings are describing once the volatility measurement is trustworthy again.
Read the guide →
Try it on your renko charts.
Seven days of the full indicator, no card charged and nothing to cancel. The five-minute ATR option is a checkbox, not an upgrade.