A channel and an arrow leave you reading colour. The best price channel indicator writes the word instead. It tracks the highest high and lowest low of the prior twenty bars, marks a close that clears one for the first time, and prints the direction in text beside the mark.
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 | 5: Upper Channel, Lower Channel, Midline, Breakout Buy, Breakout Sell |
| Alerts | popup, push notification, email, sound |
| Inputs | 14 |
Everything visible
Three lines, two marks and text.
`Upper Channel` traces orange red at width 2.
`Lower Channel` traces dodger blue at the same width.
`Midline` traces silver between them.
`Breakout Buy` prints lime using arrow 233.
`Breakout Sell` prints red using arrow 234.
- Upper Channel: line, orange red, width 2
- Lower Channel: line, dodger blue, width 2
- Midline: line, silver, width 1
- Breakout Buy: arrow, lime, width 2, arrow code 233
- Breakout Sell: arrow, red, width 2, arrow code 234

What happens behind it
Prior bars only
`InpPeriod` `20` looks at the twenty bars before the current one. Excluding the current bar is what lets it genuinely clear a level rather than helping to set it.
What counts as fresh
Two closes settle it. The current close beyond the channel and the previous one still inside the channel as it stood then, which marks the first break rather than every bar of a run.
The midline
`InpShowMid` draws the halfway price between the two edges. It steps whenever either extreme changes, so it describes the middle of the range rather than an average.
Reading it correctly
A flat edge means no new extreme for twenty bars.
Both edges stepping means price is expanding.
Text beside a mark names the direction.
`InpCooldown` `4` keeps repeat marks apart.
`InpMaxLabelBars` `600` limits how far back text draws.
`InpArrowOffset` `12` sets a tight gap from the bar.
Alert channels in this build: popup, push notification, email and sound, one message per closed bar.
A fresh close beyond either edge is what speaks. `EnableAlerts` decides whether it does and the terminal dialog is already set. Delivery to a phone, to mail, and the sound selected by `SoundFile` all begin switched off.
Every Best Price Channel Indicator input
Core settings
| Setting | What it does | Default |
|---|---|---|
InpPeriod |
Donchian period (prior N bars). Prior bars behind each edge, `20`. | 20 |
InpCooldown |
Min bars between breakout arrows. Bars held between marks, `4`. | 4 |
Display settings
| Setting | What it does | Default |
|---|---|---|
InpShowMid |
Draw the channel midline. Draw the halfway line, `true`. | on |
InpShowArrows |
Show channel breakout arrows. Draw the break marks, `true`. | on |
InpArrowOffset |
Arrow / label offset (points). Points between a mark and its bar, `12`. | 12 |
InpMaxLabelBars |
Draw BUY/SELL text within N recent bars. Recent bars that also get text, `600`. | 600 |
BuyColor |
BUY arrow / label (lime test r<140). | lime |
SellColor |
SELL arrow / label. | red |
Alert settings
| Setting | What it does | Default |
|---|---|---|
EnableAlerts |
Whether a channel break speaks, `true`. | on |
EnablePopup |
Terminal dialog, already set, `true`. | on |
EnablePushNotify |
Delivery to a phone, `false`. | off |
EnableEmail |
(see inputs panel) | off |
EnableSound |
(see inputs panel) | off |
SoundFile |
Sound it selects, `”alert.wav”`. | alert.wav |

Where to point it
Twenty prior bars is a day of hourly trade, which gives the channel something to say each session. EURUSD H1 is the reference chart. On M15 breaks come several times a day. On D1 the channel covers a month.
Where it stops working
Channels made of extremes break on the bar setting one.
In a range price clips both edges in turn.
Written labels are chart objects and accumulate.
A break says nothing about how far the move runs.
Copy the compiled Best Price Channel 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: Price Action Strategy.
Download the Best Price Channel Indicator for MT4 and MT5
The zip holds the compiled Best Price Channel 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
Why does InpPeriod 20 use only prior bars?
So the current bar can genuinely clear the channel. If its own high counted toward the upper edge, price could never break out; excluding it is what makes the comparison meaningful at all.
What makes a Breakout Buy count as fresh?
The previous close sitting inside the channel as it stood on that bar. A run of closes beyond the edge therefore marks once, at the start, rather than on every bar that keeps going.
What does the Midline step rather than curve?
It sits exactly halfway between the two edges, and those only change when a new extreme prints. Between changes the midpoint cannot move, so the line holds flat and then jumps.
Does InpShowArrows affect the messages too?
Yes. The marks and the message share the same condition, so turning the arrows off stops the whole reporting path rather than just hiding the symbols on the chart.
Are results guaranteed?
No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Best Price Channel Indicator as one input. Always backtest before trading live.
External references
- Learn more about the underlying method in Unit price on Wikipedia.
- For wider market background, see Pointandfigurechart at Investopedia.
