Crossover arrows that move are worse than no arrows. The non repaint arrow indicator draws an 8-bar and a 21-bar exponential average and marks a cross on a closed bar. Raise the confirmation count and the cross must hold for that many bars before the mark appears.
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: FastEMA, SlowEMA, Buy, Sell |
| Alerts | popup, push notification, email, sound |
| Inputs | 10 |
What renders
Two lines and two marks on price.
`FastEMA` traces dodger blue at width 2.
`SlowEMA` traces orange red at width 2.
`Buy` flags an upward cross in lime, three pixels wide.
`Sell` flags a downward cross in red.
A status block shows the settings and bias.
- FastEMA: line, dodger blue, width 2
- SlowEMA: line, orange red, width 2
- Buy: arrow, lime, width 3, arrow code 233
- Sell: arrow, red, width 3, arrow code 234

The arithmetic
Averages
`FastPeriod` `8` and `SlowPeriod` `21` exponential averages start from a simple average, so both lines hold sound values from the first drawn bar.
Cross check
`ConfirmBars` `1` compares the lines on the current bar with the bar before. Larger values compare with bars further back and require the new side to hold.
One mark per cross
After a buy, another buy needs a fresh cross, so a single move gets one mark.
How to follow it
Blue above orange red means bias up.
A lime mark shows an upward cross that held.
A red mark shows a downward cross that held.
Higher confirmation means later but firmer marks.
`ArrowOffsetPoints` `10.0` sets the gap.
Warm-up needs about twenty-four bars.
Alert channels in this build: popup, push notification, email and sound, one message per closed bar.
Confirmed crosses report with the pair and timeframe. `EnableAlerts` switches them, and the popup, mobile route and sound are all on from the start; email is off.
Every Non Repaint Arrow Indicator input
Core settings
| Setting | What it does | Default |
|---|---|---|
FastPeriod |
Fast EMA period. Quick average, `8`. | 8 |
SlowPeriod |
Slow EMA period. Slow average, `21`. | 21 |
ConfirmBars |
Confirmation bars after cross. Bars the cross must hold, `1`. | 1 |
Display settings
| Setting | What it does | Default |
|---|---|---|
ArrowOffsetPoints |
Arrow gap from candle in points. Mark gap in points, `10.0`. | 10.0 |
Alert settings
| Setting | What it does | Default |
|---|---|---|
EnableAlerts |
Master alert switch. Master alert switch, `true`. | on |
EnablePopup |
Popup alert. Popup, `true`. | on |
EnablePushNotify |
Push to mobile MetaTrader. Mobile route, ships on, `true`. | on |
EnableEmail |
Email alert. Email route, `false`. | off |
EnableSound |
Sound alert. Sound, ships on, `true`. | on |
SoundFile |
.wav file. Sound clip, `”alert.wav”`. | alert.wav |

Settings that fit your chart
An 8 and 21 pair suits intraday charts. EURUSD H1 is the reference chart, with a cross most days. On M15 a larger confirmation count cuts whipsaws. On H4 the pair tracks swing turns.
Where it stops working
Crossovers lag the turn by design.
Ranges still produce back-to-back crosses.
Confirmation trades speed for reliability.
Phone and sound deliveries start switched on.
Copy the compiled Non Repaint Arrow 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.
Download the Non Repaint Arrow Indicator for MT4 and MT5
The zip holds the compiled Non Repaint Arrow 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 ConfirmBars 1 compare?
The two averages on the current closed bar against the bar before. A cross between those two bars prints the mark as soon as the bar closes.
What happens if you raise ConfirmBars to three?
The cross must have happened three bars back, and the fast line must have stayed on its new side since then. The mark arrives later, but fewer crosses fail.
Why does FastEMA start from a simple average?
Seeding from one close makes early values drift. Starting from an eight-bar simple average gives the build a sound line from the very first bar it draws on the chart.
Can a Buy repaint after it prints?
No. The build judges the cross on closed bars only, and the averages for those bars never change. Once the mark is on the chart it stays there.
Are results guaranteed?
No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Non Repaint Arrow Indicator as one input. Always backtest before trading live.
Category: this is part of our Signal and Forecast collection. Browse more Signal and Forecast for MetaTrader, or explore every MT4 indicator and MT5 indicator on the site.
External references
- Learn more about the underlying method in Robustness (economics) on Wikipedia.
- For wider market background, see iforce (FORCE) at the MQL5 Documentation.
