Smart Money Technique divergence compares two correlated instruments. EURUSD makes a higher high, GBPUSD does not, and one of them is lying. The smt divergence ict 01 indicator watches for exactly that disagreement across two symbols. It also has a sensible fallback. If the correlated feed is missing, it compares your chart against its own momentum instead.
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 | 2: SMT Bullish, SMT Bearish |
| Alerts | popup, push notification, email, sound |
| Inputs | 15 |
What the SMT Divergence ICT 01 Indicator draws on the chart
SMT Bullish places a dodger blue arrow below a swing low where the two symbols disagreed.
SMT Bearish places a red arrow above the swing high case.
Trend line objects connect the two swings involved, so you can see the divergence that produced the arrow.
Nothing is drawn for the correlated symbol itself, which is read in the background.
- SMT Bullish: arrow, dodger blue, width 2, arrow code 233
- SMT Bearish: arrow, red, width 2, arrow code 234

How the SMT Divergence ICT 01 Indicator calculates its values
Choosing what to compare against
useCorr takes iClose on the correlated symbol and checks it returns a value above zero. If it does, the tool reads that second feed. If not, cval falls back to MomAt, a momentum reading over `MomPeriod` on your own chart. Leave `CorrelatedSymbol` blank for auto mode. `AutoBase` then supplies `”GBPUSD”` plus your broker’s suffix.
Finding the swings
isHigh survives only while high[i] holds at or above every neighbour within `FractalHalf` bars on both sides. isLow does the mirror. At the default `3` that is a seven-bar window. Checking both flanks means a swing only confirms once the bars after it exist.
Testing the disagreement
primHH holds when high[i] beats the previous stored swing high. corrHH holds when the correlated reading beats its own stored value. A bearish signal needs one true and the other false. Your symbol made a higher high; the comparison did not. The code then stores prevSH, prevSHt and prevSHc for next time. `InvertCorrelation` flips the logic for negatively correlated pairs.
How to read the signals
The drawn line shows which two swings the tool compared. That is the fastest way to check an arrow.
A signal means the two instruments disagreed at a swing. Neither one has necessarily turned.
With the correlated feed missing, the tool does something else: single-symbol momentum divergence.
Confirmation waits for the fractal, so an arrow lands a few bars after the swing it marks.
Alert channels in this build: popup, push notification, email and sound, one message per closed bar.
Four channels sit beneath `EnableAlerts`: popup through `EnablePopup`, push through `EnablePush`, email, and sound. Note that `EnableSound` ships `true` here alongside the popup, so you get an audible cue by default. The guard permits one message per closed bar.
Every SMT Divergence ICT 01 Indicator input
Core settings
| Setting | What it does | Default |
|---|---|---|
CorrelatedSymbol |
Correlated symbol (blank = auto). The symbol to compare against. Leave it blank for auto mode. | |
AutoBase |
Auto correlated base (+ suffix). The base used when the field above is blank, default `”GBPUSD”`. Your broker’s suffix is appended. | GBPUSD |
InvertCorrelation |
For negatively-correlated pairs. Off by default. Turn it on for a negatively correlated pair, such as EURUSD against USDCHF. | off |
FractalHalf |
Swing detection half-width (bars). Bars either side of a swing, default `3`. Raise it for fewer, larger swings. | 3 |
MomPeriod |
Momentum period (fallback mode). Momentum lookback, used only in fallback mode, default `14`. | 14 |
Display settings
| Setting | What it does | Default |
|---|---|---|
ArrowGapPips |
Arrow offset from bar (pips). | 1.5 |
DrawDivLines |
Draw divergence trend lines. Draws the connecting lines. Set it `false` for arrows alone. | on |
BullColor |
(see inputs panel) | dodger blue |
BearColor |
(see inputs panel) | red |
Alert settings
| Setting | What it does | Default |
|---|---|---|
EnableAlerts |
Master alert switch. | on |
EnablePopup |
Popup alert. | on |
EnablePush |
Push notification. | off |
EnableEmail |
Email alert. | off |
EnableSound |
Sound alert. | on |
SoundFile |
(see inputs panel) | alert.wav |

Settings that fit your chart
SMT needs genuinely correlated instruments. That is why EURUSD against GBPUSD is the default pairing. EURUSD H1 is the reference chart. The technique also suits index futures against each other, or gold against silver. Set the comparison symbol yourself for those. It says least on instruments with no reliable correlate at all.
When the SMT Divergence ICT 01 Indicator fails
Correlation is not constant. Two pairs can track each other for months, then decouple for weeks. Every signal in that stretch is noise.
The momentum fallback is a different technique wearing the same arrows. A signal means one thing with the feed loaded and another without it.
Your Market Watch must carry the correlated symbol with the right suffix. Otherwise the tool runs in fallback mode without saying so.
Copy the compiled SMT Divergence ICT 01 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 SMT Divergence ICT 01 Indicator: Stock market equivalence on Wikipedia, Onbalancevolume at Investopedia.
Download the SMT Divergence ICT 01 Indicator for MT4 and MT5
The zip holds the compiled SMT Divergence ICT 01 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 happens when CorrelatedSymbol cannot be found?
The tool falls back to momentum divergence on one symbol. useCorr checks whether iClose on the comparison symbol returns a usable value. When it does not, cval comes from MomAt over `MomPeriod` on your own chart. That is a different technique, so check your Market Watch if you expect true SMT.
How do I set AutoBase for my broker’s symbol names?
`AutoBase` holds the base name, `”GBPUSD”` by default, and the code appends your broker’s suffix. If your platform uses GBPUSD.pro or GBPUSDm, that should attach correctly. When it does not, type the full symbol into `CorrelatedSymbol` and leave the auto field alone.
When should InvertCorrelation be turned on?
For pairs that move against each other. EURUSD and USDCHF are the classic case. A higher high on one usually meets a lower low on the other. Without inverting, every normal bar would look like a divergence. Leave it off for positively correlated pairs.
What does FractalHalf at 3 require of a swing?
That the candidate’s high sits at or above every high within three bars on each side, a seven-bar window. The code checks both flanks, so the swing confirms three bars after it formed. Raise it for fewer, larger swings and a longer wait.
Are results guaranteed?
No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the SMT Divergence ICT 01 Indicator as one input. Always backtest before trading live.
Category: this is part of our Smart Money collection. Browse more Smart Money for MetaTrader, or explore every MT4 indicator and MT5 indicator on the site.
External references
- The core method is documented in Stock market equivalence on Wikipedia.
- Additional market context is at Onbalancevolume at Investopedia.
