Currency Heatmap Indicator for MT4 and MT5

Written by Dominic Walsh · Published · Last updated

One chart shows you one pair. The currency heatmap indicator shows twenty-eight at once, laying the eight majors out as a grid, measuring how far each pairing has moved over the last day of bars, and colouring every cell by how big that move was relative to a threshold you set.

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 0
Alerts popup, push notification, email, sound
Inputs 28

On the chart: plots and colours

A grid of coloured cells, drawn as objects.

`InpPosColor` fills a cell that rose.

`InpNegColor` fills one that fell.

`InpFlatColor` fills a cell with no change.

`InpCellW` `58` and `InpCellH` `22` size them.

Header labels name the eight currencies.

currency heatmap indicator: The full grid with one currency leading, EURUSD H1.
The full grid with one currency leading, EURUSD H1.

How the Currency Heatmap Indicator calculates its values

What each cell measures

`InpLookback` `24` bars of change for that pairing. The reading is a percentage, so a cross moving half a percent and gold moving half a percent shade identically.

Finding the symbols

`InpSuffix` starts blank, and the code works the broker’s naming out from the chart. It also tries each pairing the other way round, so a missing cross fills from its mirror.

Colour saturation

`InpScalePct` `0.80` is the move that fills a cell completely. Anything smaller shades proportionally, which is what makes the grid readable at a glance.

How to take it

A mostly green row marks a strong currency.

A mostly green column marks a weak one.

Every cell has its mirror on the other diagonal.

`InpShift` `0` reads the live bar, one reads the last closed.

`InpTimeframe` `PERIOD_CURRENT` follows your chart.

`InpRefreshSec` `2` limits how often the grid rebuilds.

Alert channels in this build: popup, push notification, email and sound, one message per closed bar.

`EnableAlerts` is the master switch over the grid’s messages with the terminal popup already on. The phone notification, the email route and the sound file named by `SoundFile` each stay off until you switch them on yourself.

Every Currency Heatmap Indicator input

Core settings

Setting What it does Default
InpLookback Bars of change measured in every cell. Bars of change measured per cell, `24`. 24
InpTimeframe Timeframe the change is measured on. Chart it measures the change on, `PERIOD_CURRENT`. PERIOD_CURRENT
InpShift Read shift (0 = live bar, 1 = last closed bar). Live bar or last closed bar, `0`. 0
InpSuffix Broker symbol suffix (blank = auto-detect from the chart symbol). Broker symbol suffix, blank for auto, `””`.
InpScalePct Percent move that saturates a cell colour. Percent move that saturates a cell, `0.80`. 0.80
InpRefreshSec Minimum seconds between full 28-pair refreshes. Seconds between full rebuilds, `2`. 2
InpX Panel X offset (px). 12
InpY Panel Y offset (px) – clears the one-click panel. 120
InpCellW Cell width (px). Cell width in pixels, `58`. 58
InpCellH Cell height (px). 22
InpMaxCells Hard cap on panel objects drawn (a full grid needs ~190). Hard cap on panel objects, `500`. 500

Display settings

Setting What it does Default
InpCorner Panel corner (0=UL 1=UR 2=LL 3=LR). 0
InpFontSize Cell font size. 8
InpFont Panel font. Consolas
InpPanelBg Panel background colour. RGB 14,14,20
InpBorderColor Panel border colour. dark khaki
InpHeaderBg Header cell background. RGB 34,36,44
InpFlatColor Zero-change cell colour. RGB 30,34,40
InpPosColor Saturated positive cell colour. RGB 0,150,72
InpNegColor Saturated negative cell colour. RGB 176,38,44
InpTextColor Header and label text colour. gainsboro
InpValueColor Cell value text colour. white

Alert settings

Setting What it does Default
EnableAlerts Master alert switch. Master alert switch, `true`. on
EnablePopup Terminal popup alert. Terminal popup, `true`. on
EnablePushNotify Push notification to the phone. off
EnableEmail Email alert. off
EnableSound Play a sound file. off
SoundFile Sound file name. alert.wav
currency heatmap indicator: Inputs panel, the lookback above the colour scaling.
Inputs panel, the lookback above the colour scaling.

Where the defaults make sense

The lookback and the chart together decide what the grid describes. On the EURUSD H1 reference chart, twenty-four bars covers a day of trade. Open it on M15 and the same count spans six hours. On D1 it reaches a month.

Where the logic runs out

Percent change is not the same as strength.

A broker missing a cross leaves that cell empty.

Reading the live bar means the grid keeps moving.

Nearly two hundred objects is a heavy panel.

Copy the compiled Currency Heatmap 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 Currency Heatmap Indicator: Currency pair on Wikipedia, Currency Pair at Investopedia.

Download the Currency Heatmap Indicator for MT4 and MT5

The zip holds the compiled Currency Heatmap 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.

  • 1,380+ indicators
  • MT4 and MT5 files
  • No spam, unsubscribe any time

FAQ

What does InpLookback 24 actually compare?

The close now against the close twenty-four bars back, as a percentage. On the hourly reference chart that covers a day of trade, so the grid describes the last session rather than the last week.

Do I have to fill InpSuffix in myself?

Not usually. Left blank it reads the convention off the chart symbol, and it also tries each pairing the other way round, so a cross your broker lists inverted still fills its own cell.

What does InpScalePct 0.80 change?

The move that produces a fully saturated cell. Lower it and ordinary days look dramatic; raise it and only genuinely big moves stand out, which is usually the better setting on a quiet week.

Why read InpShift 0 rather than the closed bar?

It keeps the grid live, updating as prices move. Set it to one and every cell describes only finished bars, which is steadier to read but always a full bar behind the market.

Are results guaranteed?

No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Currency Heatmap Indicator as one input. Always backtest before trading live.

External references

Dominic Walsh - Forex trader and MT4/MT5 developer

About the author

Written by Dominic Walsh, a Forex trader and MT4/MT5 indicator, Expert Advisor and script developer. Every tool on forexmt4systems.com is tested on live charts before release and ships with ready-to-use compiled MT4 (.ex4) and MT5 (.ex5) files. Learn more about the trader and developer behind this site.

How we build, test and correct every tool: Editorial & Testing Policy. Trading carries risk; see the disclaimer.

Leave a Comment