Deep MTF Divergence No Repaint Pro MT4 settings 1 Deep MTF Divergence No Repaint Pro MT4 settings 2

See Deep MTF Divergence No-Repaint Pro on your own chart

Confirmed, no-repaint multi-timeframe divergence signals.

Download the Indicator

 

Deep MTF Divergence No Repaint Pro — Professional Market Intelligence for Stock Market, Crypto and Forex Traders

 

Deep Trend Scroll Pro 1
Multi-Timeframe Divergence HTF State Fixed on Every LTF Close 3-Stage Arrow Confirmation ZigZag + Fractal Engine PrevHigh & EMA Filters

What the Indicator Shows

Deep MTF Divergence No-Repaint Pro builds a MACD/OsMA momentum histogram on a higher timeframe of your choice and checks it against ZigZag/fractal price extremes to catch regular bullish and bearish divergence. What sets it apart is how that histogram is built: on the close of every bar on your own chart, the indicator fixes the exact state of the higher-timeframe candle at that precise moment, so what you see is always current and, once recorded for a given bar, never changes again. Each divergence setup then unfolds through three clearly separated stages — a grey warning, a gold "get ready" arrow, and a final red or green confirmed signal — so you can watch a setup build in real time and only act once it is fully confirmed.

Higher-Timeframe State Fixed on Every Lower-Timeframe Close

The defining feature of this indicator: on the close of every bar on your current chart, the state of the higher-timeframe candle is captured and permanently recorded exactly as it stood at that moment — which is also why the indicator never repaints on lower timeframes.

Multi-Timeframe Divergence Engine

Pick any timeframe in TimeFrame_Select — from the current chart up to MN — and the indicator maps every current-chart bar to the higher-timeframe bar it belongs to automatically.

Three-Stage Arrow Confirmation

Every divergence setup is shown as it develops: a grey warning arrow, then a gold "get ready" arrow, and finally a red (sell) or green (buy) confirmed, no-repaint arrow once the higher-timeframe bar actually closes.

📈

ZigZag + Fractal Extremes

A ZigZag built from a rolling high/low search window is cross-checked against 5-bar fractals, so only extremes confirmed by both methods become valid divergence anchor points.

🔍

PrevHigh Filter

UsePrevHighFilter adds a bar-over-bar momentum check: the histogram reading must be weaker than the reading fixed on the immediately preceding bar — confirming momentum is fading step by step, not just weaker than the peak of the current zone.

📊

EMA Signal Filter

UseEmaFilter only confirms a signal once the histogram has also crossed its own Signal EMA in the expected direction, adding a second, independent momentum check.

The Core Mechanic: Higher-Timeframe State Fixed on Every Lower-Timeframe Close

This is the defining mechanic of Deep MTF Divergence No-Repaint Pro, and the reason it never repaints on lower timeframes. On the close of every bar on your current chart, the indicator fixes the state of the higher-timeframe candle exactly as it stood at that precise moment: it takes the lower-timeframe bar's own close price and feeds it into the fast/slow EMA calculation as if that price were the closing price of the still-forming higher-timeframe candle right now.

  • Every time a bar on your current chart closes, its exact close price is used as the closing price of the still-open higher-timeframe candle, and the higher-timeframe histogram is recalculated from that price.
  • That reading is fixed once, for that specific lower-timeframe bar, at the exact moment it closes — and is never recalculated or overwritten afterwards. This is precisely why the indicator does not repaint on lower timeframes: every already-closed bar keeps the higher-timeframe state it was given the instant it closed.
  • Practical effect: if you trade M15 with TimeFrame_Select set to H1, every closed M15 candle fixes an accurate read of the H1 momentum state at that exact moment — four permanent checkpoints per hour instead of one.
Why it matters for divergenceDivergence setups are time-sensitive — the earlier you see the higher timeframe starting to lose momentum, the earlier you can prepare. This mechanic lets you see that shift the moment it happens on your own chart, instead of waiting up to a full higher-timeframe bar to find out.
Why it doesn't repaintEach lower-timeframe bar permanently records the higher-timeframe state exactly as it was the instant that bar closed. Nothing about an already-closed lower-timeframe bar's reading is ever recalculated afterwards — only the very latest, still-forming bar is live.
Histogram & separatorThe same fixed-per-bar reading drives the visible histogram (histUp / histDn / histNe), so the plotted momentum reflects this bar-by-bar snapshot of the higher timeframe. A vertical separator line is drawn at the open of every higher-timeframe bar so you can see exactly where one higher-timeframe candle ends and the next begins.

Three-Stage Arrow Logic — Warning, Get Ready, Signal

Each divergence setup is checked on every closed bar of your current chart and passes through up to three stages, colour-coded so you always know how mature a setup is:

Grey arrow — Warning. Price has already broken beyond the zone's ZigZag extreme while the still-forming higher-timeframe candle is still trending in its original direction. Earliest possible heads-up; can disappear or move as the next lower-timeframe bar closes and fixes a new reading. Gold/Yellow arrow — Get Ready, Possible Signal. Price has cleared the zone extreme by the full Hi/Lo Distance threshold and the higher-timeframe candle's fixed state has now turned against its own open (closing back below/above it). A real setup is taking shape, but the higher-timeframe bar is still open, so this can still change. Red/Green arrow — Confirmed Signal. Plotted only after the higher-timeframe bar has actually closed and the same conditions still hold on its final open/high/low/close. This is the final, no-repaint signal — once drawn it is never removed or moved, and it's the only stage that can trigger an alert.
Bearish (SELL) setupBuilds when price prints a new high beyond the zone's ZigZag high while the fixed momentum reading fails to exceed its own prior extreme — a classic "higher high, weaker momentum" pattern. Shown with down-pointing arrows above the histogram.
Bullish (BUY) setupThe mirrored pattern — price prints a new low beyond the zone's ZigZag low while the histogram fails to make a new low. Shown with up-pointing arrows below the histogram.
From Warning to Get ReadyThe jump from grey to gold requires two extra conditions at once: price must clear the ZigZag extreme by the full HiLoDist value for the active timeframe, and the still-open higher-timeframe candle's fixed state must flip direction relative to its own open.
From Get Ready to SignalThe gold arrow only becomes a confirmed red/green arrow once the higher-timeframe bar closes and its final close price confirms the same reversal — plus, if enabled, the PrevHigh and EMA filters both agree.

High/Low Distance Settings

Each timeframe from M1 to MN has its own independent HiLoDist value, in points, automatically selected to match the TimeFrame_Select input. This is the minimum distance a price extreme must clear the zone's ZigZag level by before the setup is allowed to progress from a grey warning into a gold "get ready" arrow, and later into a confirmed signal — scaled from a tight M1 setting up to a wide MN setting so the filter always matches the volatility of the timeframe you're trading.

HiLoDist_M1 / M5 / M15 / M3020 / 30 / 70 / 100 points by default — tight thresholds suited to intraday noise levels.
HiLoDist_H1 / H4200 / 250 points by default — wider thresholds for swing-level moves.
HiLoDist_D1 / W1 / MN500 / 1000 / 1000 points by default — sized for daily and higher timeframe swings.
Where it appliesUsed identically for the gold "get ready" arrow (against the live, still-forming higher-timeframe bar) and for the confirmed red/green signal (against the higher-timeframe bar's final high/low), so both stages are held to the same distance requirement.

Multi-Timeframe Settings & the Precalculation Engine

The TimeFrame_Select input picks which timeframe the whole divergence engine runs on — it can equal the current chart or any higher timeframe up to MN. Whenever the number of bars on that timeframe changes, the indicator rebuilds its base dataset from scratch in a dedicated PrecalculateBase() routine, so the underlying calculation always stays perfectly in sync with fresh price history.

Stage 1 — Momentum histogramA Fast/Slow EMA pair is computed bar by bar on the selected higher timeframe to build the MACD value; the ShowOsma switch decides whether the histogram plots raw MACD or MACD minus its own Signal EMA (OsMA). The running high/low of the current histogram zone is tracked at the same time.
Stage 2 — ZigZag constructionFor every bar, a forward search window sized by ZZDepth looks for the lowest low and highest high; a candidate extreme is kept only if it clears the current running ZigZag point by more than ZZDev points, with ZZBackstep preventing two extremes from forming too close together. Each ZigZag point is then matched against a genuine 5-bar fractal at the same price.
Stage 3 — Divergence zonesEach momentum zone (the stretch between two zero-line crosses) gets its own running maximum/minimum ZigZag price and running maximum/minimum histogram value, searched within LookForwardBars and Lastcandel respectively — these become the reference points every new bar is compared against for divergence.
HistoryThe History input caps how many bars back the main loop recalculates on every tick; set it to 0 to process the full available history.

PrevHigh & EMA Filter Settings

UsePrevHighFilterAdds a bar-over-bar momentum check on top of the divergence pattern itself. For the gold "get ready" arrow, it requires the histogram reading on the current bar to be weaker than the reading fixed on the immediately preceding bar of your own chart. For the confirmed red/green arrow, the same check is applied one level up: the histogram of the higher-timeframe bar that has just closed must be weaker than the histogram of the higher-timeframe bar right before it. Either way, the filter confirms that momentum is genuinely fading step by step — not merely weaker than the peak of the current zone.
UseEmaFilterWhen enabled, a confirmed signal also requires the histogram's own Signal EMA to sit on the correct side of the current histogram value at the moment of confirmation, adding a second, independent momentum check before the confirmed arrow is drawn.
ShowSignalEmaIndependently of the filter, this switch plots the Signal EMA of the histogram as its own line on the indicator window so you can see the exact value the EMA filter is comparing against.

ZigZag & Fractal Settings

ZZDepthSize of the forward search window (in bars) used to find each candidate ZigZag high/low.
ZZDevMinimum deviation, in points, a new extreme must clear the current running ZigZag point by before it replaces it.
ZZBackstepMinimum bar spacing enforced between two ZigZag extremes of the same type, preventing extremes from clustering too closely together.
MinAmplitudeOptional minimum price distance, in points, between two consecutive confirmed fractal/ZigZag points on the same side; set to 0 to disable and accept every qualifying fractal.

Arrow Appearance & Alert Settings

ArrowOffsetVertical spacing, in points, between an arrow and the histogram value it marks.
SizeDynamicSize of the grey warning and gold "get ready" arrows.
SizeConfirmed_MTF / SizeConfirmed_SignalSize of the confirmed red/green arrow — automatically larger when the engine runs on a higher timeframe than the chart, and smaller when it runs on the current timeframe itself.
ColorYellowArr / ColorRedArr / ColorGreenArrColors for, respectively, the grey warning arrows (default dark grey) and the gold "get ready" arrows on sell/buy setups (default gold).
ColorOrangeArr / ColorBlueArrColors for the final confirmed, no-repaint sell and buy arrows — red and green (lime) by default.
EnablePopupAlert / EnableSoundAlert / SoundFileA confirmed (red/green) arrow can trigger an on-screen popup and/or play the sound file set in SoundFile (default alert.wav); each higher-timeframe bar can only trigger one alert, so re-quoting an already-confirmed bar never fires a duplicate.

How to Download and Install

  1. 1
    Download the file. Get Deep MTF Divergence No-Repaint Pro.ex4 from the link at the bottom of this page.
  2. 2
    Open the Data Folder. In MT4, go to File → Open Data Folder, then MQL4 → Indicators.
  3. 3
    Copy the file into the Indicators folder.
  4. 4
    Restart MT4 (or right-click Indicators in Navigator and choose Refresh).
  5. 5
    Attach it to a chart from Navigator → Indicators.
  6. 6
    Configure settings — The default settings are ready to go — just click OK. If you want to adjust parameters first, check the manual.

Frequently Asked Questions

What is the indicator's main advantage over a normal higher-timeframe MACD?

A regular higher-timeframe MACD only updates once per higher-timeframe bar. This indicator fixes the higher-timeframe state on the close of every bar on your own chart, so you see the higher-timeframe momentum shift far sooner. And because each reading is fixed once and never recalculated, the indicator never repaints on lower timeframes.

What do the grey, gold and red/green arrows mean?

Grey is an early warning — price has broken the zone extreme while the higher-timeframe candle is still forming in its original direction. Gold means "get ready, possible signal" — the setup has cleared the Hi/Lo distance filter and the higher-timeframe candle's fixed state has turned. Red (sell) or green (buy) is the final, no-repaint confirmed signal, plotted only after the higher-timeframe bar has actually closed.

Can the grey or gold arrows disappear or change?

Yes — both are based on the still-forming higher-timeframe bar, so a new grey or gold reading is fixed on every new lower-timeframe close and can differ from the previous one. Only the red/green confirmed arrow, drawn after the higher-timeframe bar closes, is final and permanent.

Why doesn't the indicator repaint on lower timeframes?

Because every already-closed lower-timeframe bar has the higher-timeframe state permanently fixed at the exact moment it closed. That value is never recalculated afterwards — only the very latest, still-forming bar is live.

Can I run the divergence engine on a higher timeframe than my chart?

Yes, that's the main use case. Set TimeFrame_Select to any higher timeframe and the indicator maps every current-chart bar to its parent bar on that timeframe, fixing the higher-timeframe state on every one of your own chart's closed candles.

What's the difference between UsePrevHighFilter and UseEmaFilter?

UsePrevHighFilter compares the current histogram reading to the one fixed on the immediately preceding bar, confirming momentum is fading step by step. UseEmaFilter checks the histogram against its own Signal EMA. Both can be used together for stricter confirmation, or turned off independently.

How does the ZigZag relate to the fractals?

A price extreme only becomes a valid divergence anchor point if it is confirmed both by the ZigZag's high/low search window and by a genuine 5-bar fractal at the same price — this two-way check filters out noisy, low-quality swing points.

Will I get duplicate alerts on the same bar?

No. The indicator tracks the last higher-timeframe bar it already alerted on, so a confirmed signal only ever alerts once, and only the confirmed red/green arrow can trigger an alert.

See Deep MTF Divergence No-Repaint Pro on your own chart

Get the indicator and watch confirmed, no-repaint multi-timeframe divergence signals build in real time.

Download Deep MTF Divergence No-Repaint Pro Indicator