Indicators/ICTMacros
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-11-01 04:00:47 +02:00
..
ICTMacros.mq5 Move ICTMacros indicator and README into their own folder 2026-11-01 04:00:47 +02:00
README.md Move ICTMacros indicator and README into their own folder 2026-11-01 04:00:47 +02:00

ICT Macros (MetaTrader 5)

ICTMacros.mq5 is a MetaTrader 5 chart indicator that draws ICT macro windows for the Asia, London and New York sessions directly on the price chart.

Each macro window is drawn as a rectangle covering the high/low range of the bars inside the window, with an optional 50% midline, start/end vertical lines and a text label. Everything is a normal chart object, so the zones stay on the chart, can be styled by the indicator inputs, and are removed automatically when the indicator is deleted.

The indicator is a visualisation tool only: it draws no signals, exposes no buffers, and never places or manages trades.


Files

File Description
ICTMacros/ICTMacros.mq5 Indicator source code (MQL5, MetaTrader 5 build 3400+).
ICTMacros/README.md This document.

The compiled ICTMacros.ex5 is build output and is intentionally not committed (see .gitignore).


What is an ICT macro window?

ICT macro windows are short time slices inside a trading session where institutional order flow is often expected (for example the London open macro, or the New York AM session macros). This indicator converts the windows from New York local time into broker server time and highlights them per day.

Default windows (New York local time):

Session Default windows
London 02:33-03:00;04:03-04:30
New York 08:50-09:10;09:50-10:10;10:50-11:10;11:50-12:10;13:10-13:40;15:15-15:45
Asia (empty by default)

The Asia list is empty on purpose: paste your own Asia windows into InpAsiaMacros and the Asia toggle starts working immediately.


Installation

  1. Copy ICTMacros/ICTMacros.mq5 into MQL5/Indicators/ of your MetaTrader 5 data folder (MetaEditor: File → Open Data Folder).
  2. Compile it in MetaEditor (F7), or copy a prebuilt ICTMacros.ex5.
  3. In MetaTrader 5 open Navigator → Indicators → ICTMacros and attach it to a chart (M1 to M15 is recommended).

No DLLs, no external files and no network access are used.


Inputs

Sessions

Input Default Description
InpShowAsia true Draw Asia macros.
InpShowLondon true Draw London macros.
InpShowNewYork true Draw New York macros.

Macro windows (New York local time, format HH:MM-HH:MM;...)

Input Default Description
InpAsiaMacros (empty) Asia window list.
InpLondonMacros 02:33-03:00;04:03-04:30 London window list.
InpNYMacros 08:50-09:10;09:50-10:10;10:50-11:10;11:50-12:10;13:10-13:40;15:15-15:45 New York window list.

A window whose end time is not later than its start time is treated as crossing midnight (for example 23:30-00:15).

Time base

Input Default Description
InpTimeBase ICT_TB_NEWYORK Reference zone of the window lists: New York local, broker server, or GMT.
InpServerOffsetMode ICT_SRV_AUTO Detect the broker server offset automatically, or use the manual value.
InpManualServerGmtOffset 0.0 Server GMT offset in hours, used when the manual mode is selected.

Display

Input Default Description
InpDrawBox true Draw the macro box.
InpFillBox false Fill the box (opaque, drawn behind the bars).
InpMidline false Draw the 50% midline of the window.
InpVerticalLines true Draw vertical lines at window start and end.
InpShowLabels true Draw the window label.
InpLabelFontSize 8 Label font size.
InpAsiaColor clrKhaki Asia colour.
InpLondonColor clrSteelBlue London colour.
InpNewYorkColor clrTomato New York colour.
InpLiveBox true Refresh the window that is currently open.

History / limits

Input Default Description
InpHistoryDays 20 Past days to draw (0 = current day only, capped at 200).
InpMaxObjects 2000 Safety cap on objects created per rebuild.
InpCleanStaleObjects true Remove leftover ICTMacros_ objects from former runs.

Diagnostics

Input Default Description
InpVerboseLog true Print time base, offset and object diagnostics to the Experts log.

Time handling

  • Chart bars are in broker server time; the configured windows are converted New York local → UTC → server time.
  • US DST rules are implemented inside the indicator (second Sunday of March → first Sunday of November), so EST/EDT is handled without external data.
  • The server/UTC offset is auto-detected as TimeTradeServer() - TimeGMT() rounded to 5 minutes, or taken from InpManualServerGmtOffset when ICT_SRV_MANUAL is selected.
  • TimeGMT() depends on the accuracy of the local PC clock. If that clock is not reliable, switch InpServerOffsetMode to ICT_SRV_MANUAL.
  • The detected offset is re-checked on every new bar, so broker DST switches are picked up without reloading the indicator.

Behaviour and object naming

  • Object prefix: ICTMacros_. Names follow ICTMacros_<Session>_<index>_<YYYYMMDD> with _mid, _S, _E and _L suffixes for the midline, start line, end line and label.
  • Only objects created by this program are ever deleted; foreign objects are left untouched.
  • Boxes are rebuilt on OnInit and on every new bar; only the currently open window is refreshed intrabar (InpLiveBox), so closed windows never move.
  • A window is skipped when no bars exist for it (weekend, holiday, data gap), and a later window of the day appears once its first bar has formed.
  • The rectangle top/bottom are the high/low of the bars inside the window; tEnd is clamped to the window end.

Limitations

  • Chart objects only — there are no indicator buffers, so nothing is available to iCustom() or to an Expert Advisor.
  • MT5 chart objects have no alpha transparency: a filled box is opaque (it is drawn behind the bars). Outline-only is the default, and is the recommended setting on busy charts.
  • Best on M1–M15. On coarse timeframes a window can cover 0 or 1 bar, and the indicator logs a warning when the period is above 30 minutes.
  • The object count grows with InpHistoryDays; watch InpMaxObjects on long histories.
  • Window definitions are plain text inputs, so a typo silently drops only the malformed entry — check the Experts log (InpVerboseLog = true prints the parsed window count per session).

Requirements

  • MetaTrader 5 (MQL5), compiled with a recent MetaEditor build.
  • Any symbol and timeframe; no additional files required.

Disclaimer

This indicator is provided for educational and analytical purposes. It draws time-based zones only, produces no trading signals, and does not trade. Nothing in this repository is financial advice, and past behaviour of any market window does not guarantee future results.