Every range indicator I have used draws a box around whatever price did recently. Give it a trend and it boxes the trend. Give it a single wide bar and it boxes that. The box is always there, so it never tells you anything.

This one asks a specific question before it draws: are the last two swing highs level with each other, and are the last two swing lows level with each other? Level means within one ATR. If either pair disagrees, there is no box.

EURUSD H1. Two consolidations inside a downtrend. Each box exists because the highs matched and the lows matched, and each one ends where they stopped matching.

The test, exactly

The indicator keeps a running zigzag of swing points built from fractals — a swing high is a bar higher than the Length left bars before it and the Length right bars after it, defaults 2 and 1.

Call the last four confirmed points y0 y1 y2 y3, newest first. A consolidation exists when both of these hold:

| y0 − y2 |  <  ATR       the two most recent highs are level
| y1 − y3 |  <  ATR       the two most recent lows are level

That is a deliberately literal reading of what a range is: price has stopped making progress in both directions at once. A trend fails it, because one of the two pairs is always stepping. A single wide bar fails it, because there are not four points yet.

One more filter: the box must be at least ATR × ATR multiple tall. Below that it is not a range, it is a pause, and drawing a box around three pips of chop helps nobody.

What most range tools do What this does
When to draw Fixed lookback, always something Only when four swing points satisfy the level test
How the edges are set Highest high and lowest low of a window The matched swing highs and matched swing lows themselves
Minimum size Usually none Must exceed ATR × multiple, or nothing is drawn
Scale Bars, or a fixed pip value ATR, so one setting travels across symbols

It reaches backwards, and it merges

Two behaviours make the boxes match what you would have drawn by hand.

Reaching back. Once a box is formed, the routine checks the two swing points before the four that formed it. If either sits within one ATR of the box edge it belongs to the same range, so the edge is widened and the left side of the box is pulled back to that point. A range that quietly began earlier gets drawn from where it actually began.

Merging. If the new box starts inside the previous one and their price bands overlap, the two are joined into one: the right edge moves forward, and the top and bottom take the outer values. This is what stops a long consolidation being drawn as five stacked rectangles.

The nested box you can see in some screenshots is that mechanism part-way through, and it is honest about what the indicator knew at each point.

Gold H1. A range formed, then a second one grew out of it and merged - the inner box is where the first version of the range sat before the edges widened.

Non-repainting, and how

Two things make the boxes stay where they are.

A swing point is not a swing point until Length right bars have closed after it. With the default of 1 that is one bar of confirmation — fast, but it does mean a point is committed on the very next bar and never revisited.

And the calculation loop only runs when a new bar opens, and it stops one bar short of the right edge. The current forming bar never contributes to a box.

So a box drawn last Tuesday is where it was last Tuesday. What that costs you is a bar or two of delay at the left edge of every range, which is the correct trade.

Alerts

Two: range created and range ended, through the channel Notification type selects — terminal alert (default), mobile push, or email.

"Ended" fires when the four-point level test stops being satisfied, which is usually the bar that leaves the box. Neither alert fires on the first calculation pass, so loading the indicator does not replay every range in your history.

The MT4 build has no Telegram. Terminal, push and email work on both platforms; the Telegram path exists only in the MT5 build, because the shared MT4 library this is built on does not carry it.

What it can't do

It draws boxes. It does not draw a breakout arrow, a target, a stop, or a bias. What you do when price leaves the box is entirely yours.

The honest limitation is in the merging: only one box is tracked as live at a time. Older boxes stay drawn on the chart and are correct, but the reach-back and merge logic only ever considers the most recent one. On a symbol showing two overlapping ranges at different scales, the older one will not grow any further.

Length left = 2 and Length right = 1 are fast settings. They find ranges early and they will also find small ones you might not call ranges. If you want fewer and firmer, raise both — 3 and 2 is a reasonable second setting to try, at the cost of a bar of extra delay.

You won't find a win rate table in this listing, and I'd treat any indicator listing that has one with some care. This marks where price stopped going anywhere. Whether the break out of it is worth trading is not something a box can tell you.

Questions you'll have

Why is there no box on my chart? Because the last two highs and last two lows do not agree within an ATR. On a trending symbol that is the normal state and the correct answer.

Why did a box appear around something that looks like a trend? Check the ATR. A range that is level within one ATR on a volatile day can look sloped by eye. Lower ATR multiple if you want the size filter to be stricter about it.

Can I see the swing points it is using? Yes — turn on Show pivot point and it marks each fractal. Worth doing once while you settle on the left/right lengths, then turning off.

What timeframe? Anything from M15 up. Below that the fractal lengths pick up noise as swings.

MT4 or MT5? Both, and your subscription covers both — see the note above about Telegram.

Support

Message me through the site with a screenshot, plus the symbol and timeframe. Updates are included for as long as your subscription is running.

Analysis tool. It places no trades and makes no profitability claim. Past price behaviour is not a guide to future price behaviour.