Breaks that happen in dead markets rarely go far. The easy breakout indicator adds one check to a plain Donchian break. Is the market moving more than usual right now? If not, the break is skipped. That ties each arrow to a bar where price was really going somewhere.
This build ships as a compiled .ex4 for MT4 and .ex5 for MT5; the screenshots below come from EURUSD H1.
| Platforms | MT4 (.ex4) + MT5 (.ex5) |
|---|---|
| Chart window | Main price chart |
| Plots | 4: Channel High, Channel Low, BUY Breakout, SELL Breakout |
| Alerts | popup |
| Inputs | 5 |
Plot by plot
Channel High traces the 20-bar highest high in dodger blue.
Channel Low traces the lowest low in tomato.
BUY Breakout puts a lime arrow under a close above the upper line.
SELL Breakout puts a red arrow above a close below the lower one.
- Channel High: line, dodger blue, width 2
- Channel Low: line, tomato, width 2
- BUY Breakout: arrow, lime, width 3, arrow code 233
- SELL Breakout: arrow, red, width 3, arrow code 234

How the Easy Breakout Indicator calculates its values
Building the channel from settled bars
iHighest and iLowest run over `InpDonchianPeriod` bars, starting at i + 1. Starting one bar back keeps the test bar out of the line it must beat. Include it and no break could ever happen. ChannelHigh and ChannelLow then take real high and low prices from those bars.
Comparing volatility against its own baseline
atr_now comes from iATR over `InpATRPeriod`. The code sums ATR across `InpATRAvgPeriod` bars, then divides for atr_avg. atr_threshold takes atr_avg times `InpATRFactor`. volatile_enough holds when atr_now beats it. ATR is judged against its own average, not a fixed pip figure. That is why one setting works on any symbol.
Requiring both conditions
An arrow needs volatile_enough AND a close beyond the channel. Both tests read the finished close, so nothing fires mid-bar. BuyArrow lands two pips under low[i], which the code works out as 2.0 times _Point times 10.
Reading the result
A break with no arrow means the ATR check failed. That is the filter doing its job.
A wider channel makes breaks harder, since the line itself has moved out.
The channel skips the current bar, so an arrow can print while price sits inside the line you see.
Arrows cluster as a move starts, then stop once the channel catches up.
Alert channels in this build: popup, one message per closed bar.
One channel runs here, a terminal popup, under `InpEnableAlerts` at its `true` default. Its own comment names bar-close alerts. So a break that shows mid-candle and unwinds before the close raises nothing.
Every Easy Breakout Indicator input
Core settings
| Setting | What it does | Default |
|---|---|---|
InpDonchianPeriod |
Donchian lookback bars. Bars in the high and low channel, default `20`. Shorten it for a tighter channel and far more breaks. | 20 |
InpATRPeriod |
ATR period. Bars in the current volatility reading, default `14`. | 14 |
InpATRAvgPeriod |
ATR average period. Bars the ATR is averaged over for the baseline, default `20`. | 20 |
InpATRFactor |
ATR volatility factor. How much of that baseline current ATR must beat, default `0.8`. Below 1.0 the filter is permissive; raise it to 1.2 to demand genuine expansion. | 0.8 |
Alert settings
| Setting | What it does | Default |
|---|---|---|
InpEnableAlerts |
Enable bar-close alerts. | on |

Picking the right chart
This suits symbols that swing between quiet and busy, which covers the majors through the day. EURUSD H1 is the reference chart. Twenty bars there is most of a session. Drop to M5 and the channel refreshes fast, so the ATR check does most of the work. On H4 and daily each break marks a real expansion.
When to distrust it
A factor of 0.8 passes breaks where ATR merely nears its average. The filter is looser than it looks.
ATR climbs during a move. By the time it passes well, the move may be half done.
Ranges still break. A close just past a 20-bar extreme, then a turn back, stays common.
Copy the compiled Easy Breakout Indicator file into your MQL4/Indicators folder, and the MT5 build into MQL5/Indicators, then restart the terminal and drag it onto a chart. The step-by-step guide with screenshots is at how to install MT4 and MT5 indicators.
Related on forexmt4systems.com: London Session Breakout Strategy.
Background reading on the method behind the Easy Breakout Indicator: John Murphys Charting Made Easy Ebook at StockCharts ChartSchool, Foreign Exchange Committee on Wikipedia.
Download the Easy Breakout Indicator for MT4 and MT5
The zip holds the compiled Easy Breakout Indicator build for MT4 and MT5, plus a short README. Compiled files only, no source. Enter your email below and the download link arrives in your inbox.
Download this indicator free
Enter your email and the file is yours. You also get the full MT4 and MT5 library.
FAQ
What does InpATRFactor at 0.8 actually demand?
That ATR now beats 80% of its own 20-bar average. That sits below parity. So the filter passes bars where the market is merely close to normal, not busier than normal. Raise it to 1.2 and it demands real expansion. Arrow counts drop sharply. It is the first dial to try.
Why does InpDonchianPeriod start the scan at i + 1?
So the bar under test never helps set the line it must beat. iHighest runs over twenty bars from one back. Include the current bar and its own high defines the channel. Closing above your own high is not possible.
What is the difference between InpATRPeriod and InpATRAvgPeriod?
`InpATRPeriod` measures current volatility over `14` bars. `InpATRAvgPeriod` then averages that reading across `20` bars to give a baseline. The filter compares the two. So it asks whether the market is livelier than it has recently been, not whether it is lively in absolute terms.
Can a BUY Breakout arrow appear while price sits inside the visible channel?
Yes, and it is not a bug. The channel drawn at each bar comes from the twenty bars before it. A close can clear that older boundary while the newly drawn line, which now includes the breaking bar’s own high, sits above price. The arrow refers to the boundary that existed at the time.
Are results guaranteed?
No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Easy Breakout Indicator as one input. Always backtest before trading live.
Category: this is part of our Signal and Forecast collection. Also, browse more Signal and Forecast for MetaTrader, or explore every MT4 indicator and MT5 indicator on the site.
External references
- The core method is documented in John Murphys Charting Made Easy Ebook at StockCharts ChartSchool.
- Additional market context is at Foreign Exchange Committee on Wikipedia.
