Box Breakout
Free MT5 indicator that boxes tight ATR consolidations and marks strong closed-bar breakouts. Lab test: 0 of 49 signals repainted on EURUSD M15.

- Repainted
- 0 / 49
- Signals / week
- ≈ 3.9
- Tested on
- EURUSD M15
- Tested
- 2026-10-05
Overview
Box Breakout is a free MT5 indicator that draws a box around a tight consolidation on your main chart. When a strong bar closes beyond the box by an ATR margin, it prints a breakout arrow. In the Lab's EURUSD M15 test, 0 of 49 arrows changed or moved. Also, 55.1% of them reached 1 ATR in their direction before 1 ATR against.
It helps traders who trade breakouts from quiet ranges and want each break marked without delay, instead of drawing boxes by hand.
What it puts on your chart
A consolidation is a stretch of bars where price moves sideways inside a narrow range. Box Breakout measures "narrow" with the Average True Range (ATR), so the same settings adjust to quiet and busy markets.
Everything draws on the price chart, not in a separate window:
- Bullish Breakout / Bearish Breakout arrows: one arrow on the closed breakout bar.
- Consolidation Box: a rectangle around the bars that formed the range.
- Breakout Level: a line from the broken box edge that extends to the right.
- Strength Tag: a label on each breakout.
- Breakout Status panel: the last breakout and its strength, the current box width in ATR, the break-up and break-down trigger prices, follow-through in ATR, and how many breakouts happened today.
The Lab tested version 1.00 (98.8 KB) on MT5 build 6230 on 2026-10-05.
How the Lab tested it and what the numbers mean
The Lab ran it on EURUSD M15 from 2026-07-06 to 2026-10-02 using real tick data and logged every arrow.
- Repaint: 0 of 49 signals changed, maximum arrow delay 0 bars. Once an arrow appears on a closed bar, it stays. What you see in history is what you would have seen live.
- 55.1% of 49 signals reached 1 ATR in the signal's direction before 1 ATR against it. That's only slightly better than a coin flip, so use the arrow with a filter, not on its own.
- Median 2 bars to reach 1 ATR either way. The trade usually goes one way or the other within about half an hour on M15. Your stop gets tested quickly.
- 0% of signals failed to move 1 ATR within 20 bars. Every breakout led to a real move one way or the other. The breakout picks out the moment the market starts moving, but it doesn't tell you the direction.
- 3.9 signals per week. This is a selective tool. Expect a few setups per pair per week on M15, not a stream.
Who it suits and who should skip it
It suits you if you already trade range breakouts and want an objective, non-repainting trigger with alerts. It also helps if you want ATR-based box rules instead of eyeballing ranges.
Skip it if you want a session opening-range tool, many signals per day, or a ready-made system with stops and targets. It draws neither stops nor targets.
How it works
- 1Measures the high-low range of the last lookback bars and ATR on the chart timeframe.
Range = highest High - lowest Low over RangeLookback barsInputs: AtrPeriod, RangeLookback - 2Accepts the range as a box only if it is no wider than a set multiple of ATR.
Box valid if Range <= RangeMaxAtrMult x ATRInputs: RangeMaxAtrMult - 3Signals a breakout when a closed bar has a large body and closes beyond the box edge by a buffer.
Buy: Close > Box High + BreakoutAtrMult x ATR | Body = abs(Close - Open) / RangeInputs: BreakoutAtrMult, BodyRatioMin, MinBarsBetweenSignals - 4Can require breakout volume above its average and agreement with a higher-timeframe EMA slope.
Volume >= average volume x VolumeMult | HTF EMA slope matches directionInputs: UseVolumeFilter, VolumeMaLookback, VolumeMult, AlignWithHtfTrend, HtfTimeframe, HtfEmaPeriod - 5Scores strength from the distance beyond the box and body size, and measures follow-through after a set number of bars.
Strength = 100 x (0.6 x min(distance / ATR / 2, 1) + 0.4 x body ratio)Inputs: FollowThroughBars
Specifications
- Platform
- MetaTrader 5
- Version
- 1.00
- Type
- Indicator
- Window
- Main chart
- Draws
- 2 arrows, 3 zones, 1 panel
- Alerts
- popup, push, sound
- Repaints
- No (0 of 49 signals changed)
- Inputs
- 24
- Tested on
- MT5 build 6230 · 2026-10-05
Repaint test
No repaint detected. In a 6 Jul 2026 – 2 Oct 2026 test on EURUSD M15 (Raw Trading Ltd real ticks), 49 signals were logged at bar close and re-read at the end of the test: 0 changed. Arrows print on the bar that closes the signal, with no delay.
IndicatorFree — tested 2026-10-05 · MT5 build 6230 · Raw Trading Ltd real ticks. Results come from historical data, not live trading, and do not guarantee future results.
Signal statistics
Over 6 Jul 2026 – 2 Oct 2026 on EURUSD M15, the indicator printed 49 arrows. After 55.1% of them, price moved 1×ATR(14) in the arrow's direction before moving 1×ATR against it (median 2 bars). 0% reached neither level within 20 bars.
This measures price movement after the arrow, not a trading result. It includes no spread, commission, stop loss or position sizing.
What it draws
- Arrows (Bullish Breakout) from buffer 0, drawn on the closed bar.
- Arrows (Bearish Breakout) from buffer 1, drawn on the closed bar.
- Rectangles (Consolidation Box) drawn as chart objects, not buffers — they are not readable by iCustom() in an EA.
- Rectangles (Breakout Level) drawn as chart objects, not buffers — they are not readable by iCustom() in an EA.
- Rectangles (Strength Tag) drawn as chart objects, not buffers — they are not readable by iCustom() in an EA.
- An on-chart panel (Breakout Status); values shown in the panel are not exposed as buffers.
Inputs
| Input | Default | What it does |
|---|---|---|
| AtrPeriod | 14 | ATR period used for every volatility measure |
| RangeLookback | 20 | Bars that form the consolidation box before the breakout bar |
| RangeMaxAtrMult | 3 | Maximum box width (high - low) in ATR for the box to count as tight |
| BreakoutAtrMult | 0.15 | Extra distance beyond the box edge the close must reach, in ATR |
| BodyRatioMin | 0.5 | Minimum body / full range of the breakout bar (0 - 1) |
| MinBarsBetweenSignals | 20 | Minimum bars between two signals in the same direction |
| UseVolumeFilter | false | Require tick volume above its average on the breakout bar |
| VolumeMaLookback | 20 | Bars used for the average tick volume |
| VolumeMult | 1.2 | Breakout bar tick volume must be >= average x this value |
| AlignWithHtfTrend | false | Only accept breakouts that do not go against the higher-timeframe EMA slope |
| HtfTimeframe | CURRENT | Higher timeframe for the EMA slope (Current = auto: H4 up to H1 charts, D1 above) |
| HtfEmaPeriod | 50 | EMA period on the higher timeframe |
| FollowThroughBars | 10 | Bars after a breakout used to measure follow-through in ATR |
| ShowBox | true | Show the consolidation box of each breakout (also a panel toggle) |
| ShowLevelLine | true | Show the extended breakout level line (also a panel toggle) |
| MaxBoxesToKeep | 50 | Breakouts whose box, level and tag stay on the chart; older ones are deleted |
| EnablePopupAlert | true | Popup alert on a new breakout |
| EnablePushAlert | false | Push notification to the MT5 mobile app on a new breakout |
| EnableSoundAlert | true | Play a sound on a new breakout |
| SoundFile | alert.wav | Sound file played by the sound alert |
| MaxSpreadPoints | 400 | Skip alerts while the current spread is above this (points); 0 = off. Drawing is never blocked |
| Theme | Dark | Chart color theme applied on load |
| RestoreTheme | true | Restore the original chart colors when the indicator is removed |
| PanelScale | 1 | Panel size multiplier (DPI is handled automatically) |
How to read it
How a signal forms
An arrow needs all of these on the bar that just closed. If any one fails, nothing prints:
- 1Tight boxThe previous RangeLookback bars span no more than RangeMaxAtrMult x ATR
- 2Strong barThe closed bar's body is at least BodyRatioMin of its full range
- 3Close beyond the edgeClose is above the box high (or below the box low) by BreakoutAtrMult x ATR
- 4Optional filters passVolume filter, higher-timeframe trend and MinBarsBetweenSignals, if enabled
- 5Arrow, box, level, tag, alertEverything is drawn on that bar. Alerts are skipped if spread is above MaxSpreadPoints
Reading the arrow, box and level line
The picture below shows what a clean bullish signal looks like. The box covers the bars before the breakout bar, not the breakout bar itself.
- Arrow: printed on the closed breakout bar, so it never shows up mid-bar.
- Breakout Level: keeps extending right until the next breakout on the same side. When price comes back to it later, that's a level to watch, not a new signal. Only a new arrow is a signal.
- Strength Tag and panel: the panel repeats the last breakout's strength. The panel's follow-through in ATR shows how far price has moved over the next FollowThroughBars bars. Use it to see whether recent breakouts on this chart actually carried on.
- Trigger prices in the panel: the break-up and break-down prices for the current box. They tell you where the next arrow would need price to close.
The inputs to change first
| Input | Default | What changing it does |
|---|---|---|
| RangeMaxAtrMult | 3 | Lower = only very tight boxes count (fewer, cleaner setups). Higher = looser ranges also qualify. |
| RangeLookback | 20 | Number of bars that make the box. Fewer bars = short pauses count as ranges, so you get more arrows. |
| BreakoutAtrMult | 0.15 | How far beyond the edge the close must land. Raise it to ignore closes that barely poke through. |
| BodyRatioMin | 0.5 | Minimum body share of the breakout bar (0 - 1). Raise it to demand more decisive candles. |
| AlignWithHtfTrend | false | When on, it blocks breakouts against the higher-timeframe EMA slope (HtfEmaPeriod 50). With HtfTimeframe = Current, it uses H4 up to H1 charts and D1 above. |
| UseVolumeFilter | false | When on, the breakout bar's tick volume must be at least VolumeMult (1.2) x its VolumeMaLookback (20) average. |
MinBarsBetweenSignals (20) stops a second arrow in the same direction from firing too soon. MaxBoxesToKeep (50) sets how many old boxes, levels and tags stay on the chart before the oldest is deleted.
Alerts
On a new breakout you can get a popup in the MT5 alert window (on by default), a sound (alert.wav, on by default), and a push notification to the MT5 mobile app (off by default; set EnablePushAlert to true). Alerts are skipped while the spread is above MaxSpreadPoints (400 points; 0 turns this off). The arrow and box are still drawn.
A decision rule for each arrow
- Bullish Breakout: take it only if the higher-timeframe trend is not down (turn AlignWithHtfTrend on, or check it yourself). Skip it if the next bar closes back inside the box. That's a failed breakout, and it's the most common misread: an arrow alone isn't a confirmed move.
- Bearish Breakout: be stricter. It was the weaker side in the Lab test (see the verdict). Take it only when the higher-timeframe trend also points down, and skip it if price is already back above the Breakout Level.
- Either side: if the panel shows recent breakouts with little follow-through on this symbol, the market is choppy. Wait.
Install: copy the file into your MT5 MQL5\Indicators folder, refresh the Navigator, and drag Box Breakout onto a chart.
Installation
- 1Download BreakoutIndicator.ex5 from the button above (Google Drive).
- 2In MetaTrader 5: File → Open Data Folder → MQL5 → Indicators. Copy BreakoutIndicator.ex5 there.
- 3Restart MT5 or right-click Indicators in Navigator → Refresh.
- 4Drag Box Breakout onto a chart. For push alerts, enable "Allow push notifications" under Tools → Options → Notifications.
- Tested on MT5 build 6230.
Key terms and guides
- False breakout
- A false breakout is when price closes beyond a support, resistance or range edge, can't stay there, and closes back inside the range or back on the original side of the level, often followed by a move the other way.
- Margin
- Margin is the part of your account a broker locks as a deposit while you hold a leveraged trade. It equals the full value of the trade divided by your leverage, and it is released when the trade closes.
- Sideways market
- A sideways market, also called a range-bound market, a trading range or consolidation, is a phase when price moves back and forth between a fairly flat high and a fairly flat low instead of trending.
- Range breakout
- A range breakout happens when price closes beyond the high or low of a sideways range, so a quiet market starts moving in one direction. Traders buy above the top or sell below the bottom.
- Trend
- A trend is the main direction price keeps moving in over a period. In an uptrend price makes higher highs and higher lows. In a downtrend it makes lower highs and lower lows.
- Tick volume
- Tick volume is the number of price changes (ticks) a price feed records during one candle. In forex, where no central exchange reports how much was traded, it is the usual way to judge how active the market was.
More on this subject: Breakouts & sessions guide, terms and tools
User reviews
No reviews yet. Members who download the tool can review it here.
Sign in and download the tool to review it.
Build a checklist with it
Box Breakout does one job on the chart: entry signal. Put it on the same chart as the tools below and the IndicatorFree panels merge into one checklist card, ordered trend, zone, signal, risk.
- Trend / contextDMIBox Breakout tells you when; this tells you which way the market leans, so you can skip signals against it.
- Zone / levelDynamic Support LineShows the zones and levels, so you can see whether a signal from Box Breakout fires at a level worth trading.
The Lab has not tested these combinations. Each tool is tested on its own; the card only lines up what each one says. Free members get 2 new tools a day. If one has to wait until tomorrow, install BlackBox to raise the limit to 5 a day (20 on a live account).
FAQ
Does Box Breakout repaint?
No repaint detected. In a 6 Jul 2026 – 2 Oct 2026 test on EURUSD M15 (Raw Trading Ltd real ticks), 49 signals were logged at bar close and re-read at the end of the test: 0 changed. Arrows print on the bar that closes the signal, with no delay.
Can I use Box Breakout in an EA?
Yes. Read buffer 0 (Bullish Breakout) with iCustom() on bar 1 — the last closed bar.
Why can’t my EA read the zones?
Zones and the panel are chart objects, not indicator buffers, so iCustom() does not return them.
How do I get alerts on my phone?
Enter your MetaQuotes ID under Tools → Options → Notifications, tick "Enable push notifications", and keep the push alert input on.
Does it work on other pairs?
Tested on EURUSD only; other symbols not tested.
Is Box Breakout an opening range breakout indicator for the New York or London open?
No. It builds the box from the previous RangeLookback bars wherever price consolidates, at any hour, and has no session setting. It will catch a range that forms before an open, but it doesn't define the box by session time.
Which timeframe should I use it on?
The Lab tested only M15, so that's the one with measured results. On other timeframes the rules work the same way, but the results are untested. If you go lower, consider raising MinBarsBetweenSignals to avoid clusters of arrows.
Can I hide the boxes or lines if the chart gets cluttered?
Yes. ShowBox and ShowLevelLine turn the boxes and level lines on or off, and both are also toggles on the panel. MaxBoxesToKeep limits how many past breakouts stay drawn, and PanelScale resizes the panel.
Why did an arrow appear but no alert fire?
The spread was most likely above MaxSpreadPoints (400 by default). Alerts are skipped then, but the arrow is still drawn. Set it to 0 to always alert, or check that the popup, sound or push option you expect is enabled.
Will it change my chart colors?
Yes. It applies the Theme setting (Dark by default) when it loads. With RestoreTheme left on true, your original chart colors come back when you remove the indicator.
Changelog
- 1.00Initial release: ATR-filtered consolidation breakout indicator for MT5. · 2026-10-09
Final verdict
Where it earns its place
The non-repainting arrow is the main reason to use it. You can backtest it visually and trust that history matches what you would have seen live. The ATR-based box rule also takes the guesswork out of deciding what counts as a range.
The Lab's split by direction is the most useful number on this page:
Bullish breakouts did clearly better in this test, and they moved faster: a median of 1 bar to reach 1 ATR, against 3 bars for bearish ones. Bearish breakouts came in below a coin flip. On this data, they needed a filter to be worth taking.
Its limits
- The test covers one pair, one timeframe and one quarter (49 signals). That's not enough to say how it behaves on gold, indices or M1. Treat other markets as untested and check them on your own chart first.
- The bullish edge may reflect EURUSD's trend in that period, not something built into the tool.
- It finds breakouts from the last RangeLookback bars at any time of day. It has no session or opening-range logic, no previous-day high and low, and no supply/demand zone patterns.
- It doesn't draw stops or targets. Your exit plan is up to you.
When to skip it
Skip it if you need several signals a day, trade session-open ranges, or want a complete system. Also skip it if you would take every arrow without a filter: the overall result is too close to 50/50 for that.
Settings to start with
- On EURUSD M15: start with the defaults. That's the setup the Lab tested.
- Cut weak bearish arrows: set AlignWithHtfTrend to true. Not tested by the Lab, so compare it with the default on your own chart.
- Fewer, stronger breakouts: set UseVolumeFilter to true and BodyRatioMin to 0.6. Not tested by the Lab, so compare it with the default.
- Away from the screen: set EnablePushAlert to true so breakouts reach your phone.




















