Raw MACD values depend on the price scale of each pair, so a reading on EURUSD means nothing on USDJPY. This normalized MACD indicator divides the MACD line by the 20-bar average range, turning it into ATR units. A reading of 2 then means the same stretch on any chart.
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 | Separate window (levels 2 / 0 / -2) |
| Plots | 5: Normalized MACD, Signal, Histogram, Buy, Sell |
| Alerts | popup, push notification, email, sound |
| Inputs | 12 |
The plots and where they sit
Two lines, a histogram and two marks in a pane.
`Normalized MACD` traces dodger blue at width 2.
`Signal` traces orange at width 2.
`Histogram` fills silver for the gap between them.
`Buy` prints lime at the line with arrow 233.
`Sell` prints red at the line with arrow 234.
- Normalized MACD: line, dodger blue, width 2
- Signal: line, orange, width 2
- Histogram: histogram, silver, width 1
- Buy: arrow, lime, width 2, arrow code 233
- Sell: arrow, red, width 2, arrow code 234

What feeds each plot
The MACD
`FastEMA` `12` minus `SlowEMA` `26` gives the usual MACD line, both seeded with a simple average.
Normalising
That gap is divided by an `ATRPeriod` `20` average range. The result reads in ranges rather than price.
The marks
A buy prints when the line crosses above the `SignalSMA` `9` average while under `UpperLevel` `2.0`, or when it crosses above zero. Sells mirror that.
How to read the pane
Above zero means the fast average leads.
Beyond plus or minus 2 is a stretched reading.
The histogram shows line minus signal.
Marks sit on the line itself, inside the pane.
Zero crosses also print marks.
Warm-up needs about sixty bars.
Alert channels in this build: popup, push notification, email and sound, one message per closed bar.
A signal cross or zero cross is what reports, naming the side. `EnableAlerts` is the switch; the popup and the speaker playing `SoundFile` ship on, while the phone and email routes start off.
Every Normalized Macd Indicator input
Core settings
| Setting | What it does | Default |
|---|---|---|
FastEMA |
Quick average length, `12`. | 12 |
SlowEMA |
Slow average length, `26`. | 26 |
SignalSMA |
Signal line length, `9`. | 9 |
ATRPeriod |
Range window for scaling, `20`. | 20 |
UpperLevel |
Stretched-up guide, `2.0`. | 2.0 |
LowerLevel |
Stretched-down guide, `-2.0`. | -2.0 |
Alert settings
| Setting | What it does | Default |
|---|---|---|
EnableAlerts |
Switch for cross messages, `true`. | on |
EnablePopup |
Popup, `true`. | on |
EnableSound |
Speaker, ships on, `true`. | on |
EnablePush |
(see inputs panel) | off |
EnableEmail |
Email route, `false`. | off |
SoundFile |
(see inputs panel) | alert.wav |

Where the settings fit
Scaling by range makes one set of levels work on every pair. EURUSD H1 is the reference chart. On GBPJPY the same plus or minus 2 lines still mean a stretched move. On D1 readings past 2 are rare.
When the Normalized Macd Indicator fails
Crosses come often, including in ranges.
Zero crosses add marks late in a move.
ATR scaling shrinks readings in fast markets.
The speaker route ships on.
Copy the compiled Normalized Macd 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 Normalized Macd Indicator for MT4 and MT5
The zip holds the compiled Normalized Macd 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 divide by ATRPeriod 20?
It turns the MACD gap into average ranges. A reading of 1 then means the averages sit one typical bar apart, whatever the pair or its price level.
What does UpperLevel 2.0 block?
Buy crosses that happen while the line is already above 2. At that stretch a fresh buy is late, so only crosses below the level print a lime mark.
Why do some Buy marks appear without a signal cross?
A cross of the line above zero also prints a buy. That catches the moment the fast average moves above the slow one, even when no signal cross happens.
Is Signal an EMA as in standard MACD?
No. It is a simple 9-bar average of the normalised line, as the `SignalSMA` name says, so it reacts a little more slowly than the usual exponential signal.
Are results guaranteed?
No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Normalized Macd Indicator as one input. Always backtest before trading live.
Category: this is part of our Oscillators collection. Browse more Oscillators for MetaTrader, or explore every MT4 indicator and MT5 indicator on the site.
External references
- The core method is documented in Trading turret on Wikipedia.
- Additional market context is at Triangle at Investopedia.
