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.

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 |

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.
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
- The core method is documented in Currency on Wikipedia.
- Additional market context is at Wyckoff Analysis Articles at StockCharts ChartSchool.
