The ict macros indicator shades the short windows around the New York session that ICT traders watch for algorithmic delivery. Three windows ship by default: 08:50 to 09:10, 09:50 to 10:10 and 10:50 to 11:10, all in New York time. Your broker almost certainly runs a different clock, so a single offset input lines the windows up with your 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 | Main price chart |
| Plots | 0 |
| Alerts | popup, push notification, email, sound |
| Inputs | 17 |
What the Ict Macros Indicator draws on the chart
A shaded rectangle covers each macro window, sized to the recent price range so it stays visible.
Vertical lines mark the opening and closing minute of every window.
Text objects name which macro each block belongs to, such as Macro 2 (09:50-10:10 NY).
This build carries no indicator buffers at all. Everything on screen is a chart object, and there are no signal markers.

How the Ict Macros Indicator calculates its values
Converting your broker clock to New York
`InpNYServerOffset` holds the difference in hours between your chart server and New York. An EET broker sits seven hours ahead, so the comment in the source suggests +7 for that case. Every window boundary passes through this conversion before the code draws anything, which is why the same settings land correctly on brokers in different regions.
Testing the minute, not the hour
Macro windows straddle the top of the hour, so an hour comparison cannot express them. The code builds hm as mdt.hour * 60 + mdt.min and works in minutes from midnight. That lets a window run from 08:50 to 09:10 as a single continuous range.
Sizing the boxes to the visible range
A rectangle needs a top and a bottom in price. The code takes hi from iHighest over 200 bars and lo from iLowest over the same span, then derives yMid as (hi + lo) / 2.0. Anchoring to the recent range keeps every box in view rather than flat against the axis. `InpRectAlpha` controls how solid the fill looks and `InpHistoryDays` limits how far back the drawing runs.
How to read the signals
Each shaded block is a time window, not a price zone. Its height carries no meaning.
Vertical lines give the precise boundaries, while the shading only makes the window easy to spot.
What happens inside the window is the point: expansion, a reversal, or nothing at all.
Boxes older than the history limit disappear, so the chart stays readable as you scroll back.
Alert channels in this build: popup, push notification, email and sound, one message per closed bar.
This build wires four channels: popup, push notification, email and sound, each with a switch under `EnableAlerts`. Popup starts on, the rest start off, and `SoundFile` points at `”alert.wav”`. The guard limits output to one message per closed bar when a macro window opens.
Every Ict Macros Indicator input
Core settings
| Setting | What it does | Default |
|---|---|---|
InpNYServerOffset |
hours: chart-server – NY (e.g. EET broker = +7). Hours between your chart server and New York, default `0`. Set this first, because every window depends on it. An EET broker needs +7. | 0 |
InpRectAlpha |
background rectangle alpha hint. How solid the shaded blocks look, default `35`. Lower it when the fill hides candle bodies. | 35 |
InpObjectPrefix |
Names every object the tool creates, default `”ICTMACRO_”`. Change it only when another indicator writes objects under the same prefix. | ICTMACRO_ |
Display settings
| Setting | What it does | Default |
|---|---|---|
InpDrawMacro1 |
08:50-09:10 NY. Switches the 08:50 to 09:10 window on or off; `InpDrawMacro2` and `InpDrawMacro3` do the same for the later two. | on |
InpDrawMacro2 |
09:50-10:10 NY. | on |
InpDrawMacro3 |
10:50-11:10 NY. | on |
InpColorMacro1 |
(see inputs panel) | dodger blue |
InpColorMacro2 |
(see inputs panel) | orange |
InpColorMacro3 |
(see inputs panel) | medium purple |
InpVLineWidth |
(see inputs panel) | 1 |
InpHistoryDays |
how many days back to draw. How far back the boxes draw, default `30` days. | 30 |
Alert settings
| Setting | What it does | Default |
|---|---|---|
EnableAlerts |
(see inputs panel) | on |
EnablePopup |
(see inputs panel) | on |
EnablePushNotify |
(see inputs panel) | off |
EnableEmail |
(see inputs panel) | off |
EnableSound |
(see inputs panel) | off |
SoundFile |
(see inputs panel) | alert.wav |

Settings that fit your chart
Macro windows last twenty minutes, so the chart has to resolve them. M1 through M15 show the windows properly, and EURUSD is the reference instrument. On H1 a whole macro collapses into part of one candle and the boxes stop being useful. Index and gold traders who follow New York hours can apply the same offset logic, since the windows are clock based rather than instrument based.
When the Ict Macros Indicator fails
Everything depends on the offset being right. Get `InpNYServerOffset` wrong and the boxes land on the wrong candles while still looking perfectly plausible.
New York observes daylight saving and many brokers shift their server clock on a different date, so an offset that was correct in January can be an hour out in April.
The windows are fixed times. On a quiet holiday session the block appears exactly as usual with nothing happening inside it.
Copy the compiled Ict Macros 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.
Related on forexmt4systems.com: ICT Style Strategy.
Background reading on the method behind the Ict Macros Indicator: Commodity market on Wikipedia, Renkochart at Investopedia.
Download the Ict Macros Indicator for MT4 and MT5
The zip holds the compiled Ict Macros 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 should I set InpNYServerOffset to?
The difference in hours between your chart server clock and New York. The source comment gives the common case: an EET broker sits seven hours ahead, so +7. Check your own chart clock against New York time and enter that gap. Everything else the tool draws depends on getting this one number right.
Why does the ict macros indicator draw no arrows?
Because it has no indicator buffers. This build is objects only: rectangles for the windows, vertical lines for the boundaries and text for the labels. It marks when the market is in a macro window and leaves the read to you. Nothing in it generates a directional signal.
Which three windows does InpDrawMacro1 through 3 cover?
Macro 1 runs 08:50 to 09:10 New York, Macro 2 runs 09:50 to 10:10, and Macro 3 runs 10:50 to 11:10. Each has its own on and off switch and its own colour input, so you can show only the one that fits your session. All three default to true.
Why does InpRectAlpha shading change height as I scroll?
Height comes from the recent range, not from `InpRectAlpha`, which only controls how solid the fill looks. The code takes the highest high and lowest low over the last 200 bars and centres each block between them. That keeps every window visible instead of squashed against the price axis. Height carries no price meaning at all.
Are results guaranteed?
No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Ict Macros Indicator as one input. Always backtest before trading live.
Category: this is part of our Smart Money collection. Also, 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 Commodity market on Wikipedia.
- Additional market context is at Renkochart at Investopedia.
