The non repaint team indicator does not rely on any single rule. Four independent checks vote on every closed bar: an EMA trend read, an RSI momentum read, a volume test, and a bar-quality test. An arrow prints only when at least three of them agree. That threshold is an input, so you can demand unanimity if you want.
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: Team Buy, Team Sell, EMA Fast, EMA Slow |
| Alerts | popup, push notification, email, sound |
| Inputs | 18 |
What the Non repaint team Indicator draws on the chart
Team Buy prints a lime arrow beneath a bar where the bullish votes reach the threshold.
Team Sell prints a red arrow above the bar on the bearish side.
EMA Fast in dodger blue and EMA Slow in orange plot the trend rule you can see.
The other three votes stay internal, so an arrow can appear while the EMAs alone look unconvincing.
- Team Buy: arrow, lime, width 2, arrow code 233
- Team Sell: arrow, red, width 2, arrow code 234
- EMA Fast: line, dodger blue, width 1
- EMA Slow: line, orange, width 1

How the Non repaint team Indicator calculates its values
Vote one: the EMA trend
The code builds both averages itself rather than calling iMA. kF takes 2.0 / (FastEmaPeriod + 1.0) and kS the equivalent for the slow leg, seeded at seedFast and seedSlow with plain averages so no recursion starts from zero. bullTrend then holds when EmaFastBuf sits above EmaSlowBuf, with bearTrend as the mirror.
Votes two and three: momentum and volume
bullMomo wants two things: rsiNow above 50 plus `RsiBuyLift`, and rsiNow above rsiPrev. Being above the midline is not enough; the reading has to be rising. The volume vote takes volNow from tick_volume[i] and requires it above volMa times `VolMult`, so the bar must carry more activity than its recent average.
Vote four, and the count
bullBar needs close[i] above open[i] AND body greater than atrNow times `BarBodyAtrMult`, which rules out a bar that closed green by a hair. The four booleans are then tallied and compared against `MinVotes`. The source header states every rule reads closed bars only, skipping i equals 0, which is why a printed arrow does not move.
How to read the signals
Three of four is the default, so one rule can disagree and the arrow still prints.
Only the trend vote is visible. The other three explain arrows the EMAs alone would not.
Raising the threshold to 4 demands unanimity and cuts the count sharply.
Volume here is broker tick volume, which counts price updates rather than traded size.
Alert channels in this build: popup, push notification, email and sound, one message per closed bar.
Four channels sit under `EnableAlerts`: popup, push notification, email and sound, with `SoundFile` naming the clip. Popup starts enabled. Since every rule reads completed bars, the message follows a closed bar, and the guard permits one per bar.
Every Non repaint team Indicator input
Core settings
| Setting | What it does | Default |
|---|---|---|
FastEmaPeriod |
Fast EMA period. Fast average length, default `12`, with `SlowEmaPeriod` at `34` for the slow leg. | 12 |
SlowEmaPeriod |
Slow EMA period. | 34 |
RsiPeriod |
RSI period. Momentum lookback, default `14`. `RsiBuyLift` and `RsiSellLift` at `2.0` set how far past 50 the reading must sit. | 14 |
RsiBuyLift |
RSI > 50 + lift for BUY. | 2.0 |
RsiSellLift |
RSI < 50 – lift for SELL. | 2.0 |
VolMaPeriod |
Volume MA period. Bars in the volume average, default `20`, with `VolMult` at `1.05` setting how far above it the bar must be. | 20 |
VolMult |
Volume > MA * mult. | 1.05 |
AtrPeriod |
ATR period. Bars in the volatility measure, default `14`. | 14 |
BarBodyAtrMult |
Body must exceed ATR*mult. Smallest body that counts, as a share of ATR, default `0.35`. | 0.35 |
MinVotes |
3 of 4 team rules required. How many of the four rules must agree, default `3`. Set it to 4 for unanimity, or 2 for a much busier chart. | 3 |
Display settings
| Setting | What it does | Default |
|---|---|---|
ArrowOffsetPts |
Arrow offset (points). | 8 |
ShowEmas |
Plot the two EMAs. | on |
Alert settings
| Setting | What it does | Default |
|---|---|---|
EnableAlerts |
(see inputs panel) | on |
EnablePopup |
(see inputs panel) | on |
EnablePushNotify |
(see inputs panel) | off |
EnableEmail |
(see inputs panel) | off |
EnableSound |
(see inputs panel) | off |
SoundFile |
(see inputs panel) | alert.wav |

Settings that fit your chart
Four votes need four meaningful readings, which points at H1 and above. EURUSD H1 is the reference chart. On M5 the volume test becomes noisy because tick counts swing hard bar to bar, and the body test rejects most candles outright. Note the volume vote depends on your broker’s tick feed, so two brokers can score the same bar differently.
When the Non repaint team Indicator fails
Confluence reduces false signals and delays every real one. All four rules are lagging, so agreement arrives after a move has started.
Tick volume is a count of price updates, not traded size, which makes that vote the weakest of the four on forex.
In a strong trend the momentum vote can sit above the lift for days, so it stops discriminating and effectively becomes a constant yes.
Copy the compiled Non repaint team 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.
Background reading on the method behind the Non repaint team Indicator: Systematic trading on Wikipedia, Fibonacciretracement at Investopedia.
Download the Non repaint team Indicator for MT4 and MT5
The zip holds the compiled Non repaint team 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 MinVotes count as the four votes?
Trend, where EMA Fast sits above EMA Slow. Momentum, where RSI is past 50 by `RsiBuyLift` and rising against the prior bar. Volume, where tick volume beats its own average by `VolMult`. And bar quality, where the candle closes the right way with a body larger than `BarBodyAtrMult` times ATR. Each is a simple yes or no.
What changes if I set MinVotes to 4?
You demand unanimity. All four rules must agree on the same closed bar, which happens far less often. Expect a small number of arrows with strong confluence behind them. Dropping it to 2 has the opposite effect and largely defeats the point of a voting design.
Why does RsiBuyLift need RSI rising as well as above 50?
Because a reading can sit above the midline while fading. bullMomo requires rsiNow above 50 plus the lift AND rsiNow above rsiPrev. The second test catches momentum that is still building rather than one that peaked several bars ago and is rolling over.
How reliable is the VolMult volume test on forex?
It is the weakest of the four, and worth knowing why. tick_volume counts price updates rather than traded size, because forex has no central tape. It still tracks activity usefully, but two brokers can score the same bar differently. Treat it as a participation hint rather than real volume.
Are results guaranteed?
No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Non repaint team 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
- For background on this concept, see Systematic trading on Wikipedia.
- For broader market context, see Fibonacciretracement at Investopedia.
