The ICT concepts indicator layers four smart-money drawings onto one chart. Fair value gaps, order blocks, liquidity pools and session kill zones all appear together. Every mark comes from chart objects, so the single buffer stays hidden. Traders who draw these levels by hand get the same map without the work.
This build ships as ict-concepts-indicator-forexmt4systems.ex4 for MT4 and ict-concepts-indicator-forexmt4systems.ex5 for MT5; the screenshots below come from EURUSD H1.
| Platforms | MT4 (.ex4) + MT5 (.ex5) |
|---|---|
| Chart window | Main price chart |
| Plots | 1: ICT Concepts Overlay |
| Alerts | popup, push notification, email, sound |
| Inputs | 24 |
What the ICT Concepts Indicator draws on the chart
Fair value gaps arrive as rectangles. The buffer named ICT Concepts Overlay draws nothing at all. A bullish gap covers the space between the low two bars back and the reference high. BullFVGColor paints it, and BearFVGColor paints the mirror case.
Order blocks arrive as shorter boxes around the candle range. BullOBColor marks the down candle that came before an up push. BearOBColor marks the up candle before a down push. Each box extends a few bars to the right.
Liquidity pools and kill zones finish the map. Swing highs get a line and a BSL tag in BSLColor. Swing lows get an SSL tag in SSLColor. The three session windows drop coloured vertical bands with a dotted start line.
- ICT Concepts Overlay: hidden buffer

How the ICT Concepts Indicator calculates its values
Fair value gaps and order blocks
Two candle patterns drive the boxes. A bullish gap needs the low two bars back above the reference high. That leaves untraded space between them. The bearish version needs the high two bars back below the reference low.
Order blocks look for the last candle facing the wrong way. A down candle followed by an up close above its high marks a bullish block. The mirror pattern marks a bearish one. MaxFVG and MaxOB stop either list from filling the chart.
Liquidity pools from fractal swings
Swing detection uses a plain fractal test. SwingLookback sets how many bars a high must beat on each side. Confirmed highs become buyside liquidity and confirmed lows become sellside liquidity. MaxLiquidity caps how many lines survive.
Session kill zones
Kill zones come from the clock. The code reads the hour of each bar in server time. It shades three windows for Asia, London and New York. Weekend bars drop out of the loop.
Server time matters here. Your broker’s clock decides where those bands land. A terminal two hours away shades different candles.
How to read the signals
Unfilled gaps act as targets. Price that leaves a gap behind often returns to trade through part of it. The rectangle shows where that unbalanced range sits.
Order blocks give you a zone rather than a line. Many traders wait for price to reach the block. They then look for a reaction inside it instead of entering on touch.
BSL and SSL tags mark where stops cluster. A sweep through one, followed by a close back inside, is the sequence liquidity traders want. The kill zone bands tell you whether that sweep landed in an active session.
Alert channels in this build: popup, push notification, email and sound, one message per closed bar.
A fresh three candle imbalance can raise a popup, a push notification, an email or a sound. The guard allows one message per closed bar. The gap test itself reads the forming bar, so treat the message as a heads-up.
Every ICT Concepts Indicator input
Core settings
| Setting | What it does | Default |
|---|---|---|
LookbackBars |
bars to scan for structure. How far back the scan runs. A longer window finds more history and leaves more objects. | 400 |
SwingLookback |
fractal swing strength (left/right). Bars either side of a fractal swing. Raise it to keep only prominent swings. | 5 |
MaxFVG |
max FVG zones to keep on chart. Ceiling on fair value gap rectangles. Lower it when the chart fills with boxes. | 30 |
MaxOB |
max Order Blocks to keep. Ceiling on order block rectangles, counted separately from the gaps. | 20 |
MaxLiquidity |
max liquidity pool lines. Ceiling on BSL and SSL lines, shared between highs and lows. | 30 |
ObjPrefix |
Name stem for every object the build creates. Change it to run two copies on one chart. | ICTC_ |
Display settings
| Setting | What it does | Default |
|---|---|---|
BullFVGColor |
(see inputs panel) | sea green |
BearFVGColor |
(see inputs panel) | maroon |
BullOBColor |
(see inputs panel) | lawn green |
BearOBColor |
(see inputs panel) | crimson |
BSLColor |
buyside liquidity. | deep sky blue |
SSLColor |
sellside liquidity. | tomato |
AsiaKZColor |
(see inputs panel) | gold |
LondonKZColor |
(see inputs panel) | aqua |
NewYorkKZColor |
(see inputs panel) | medium orchid |
ShowAsiaKZ |
(see inputs panel) | on |
ShowLondonKZ |
(see inputs panel) | on |
ShowNYKZ |
(see inputs panel) | on |
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
Smart-money drawings need clean sessions. EURUSD on H1 keeps all three kill zones visible in one screen. M15 suits traders working inside a single session, though the box count climbs. H4 thins everything out and suits swing planning. Index CFDs with a cash open behave differently, because the kill zone hours follow the server clock.
When the ICT Concepts Indicator fails
Gaps and blocks are pattern matches, not context. The code accepts every three candle imbalance in range. That includes the ones left by a news spike price never revisits.
Kill zone hours follow the broker clock. A terminal on a different server offset shades the wrong candles. Nothing in the build detects that.
The object count grows quickly. A long scan with all three caps near their shipped values fills a chart. Older machines then redraw slowly on every new bar.
The alert reads the bar still forming. Its gap test compares the current unfinished candle with the one two bars back. A message can therefore arrive on a shape that changes before the close.
Copy ict-concepts-indicator-forexmt4systems.ex4 into MQL4/Indicators and ict-concepts-indicator-forexmt4systems.ex5 into MQL5/Indicators, then restart the terminal and drag the ICT Concepts Indicator onto a chart. The step-by-step guide with screenshots is at how to install MT4 and MT5 indicators.
Related on forexmt4systems.com: Smart Money Concepts Strategy.
Download the ICT Concepts Indicator for MT4 and MT5
The zip ict-concepts-indicator-forexmt4systems.zip holds ict-concepts-indicator-forexmt4systems.ex4, ict-concepts-indicator-forexmt4systems.ex5 and a short README, compiled files only. 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
How does SwingLookback decide what counts as a liquidity pool?
A swing high has to beat every high for that many bars on both sides. The same test applies to lows. Confirmed highs get a BSL line and confirmed lows get an SSL line. Raising the number leaves fewer, cleaner pools. Lowering it fills the chart with minor swings.
Why do the ShowLondonKZ bands cover different candles on my broker?
Hours come from server time, not from your local clock. Asia shades the first three hours of the trading day. London and New York shade their own three hour windows on the same clock. Compare your server time against your chart before reading anything into the placement.
What separates a bullish order block from a bullish fair value gap?
The gap needs three candles with untraded space between the first and third. The block needs one down candle followed straight away by an up close above it. One marks an imbalance and the other marks the last opposite candle before a push. The build draws both in different colours.
Can I raise MaxFVG without slowing the chart down?
Up to a point. Every rectangle is a separate chart object, and the terminal redraws all of them. Thirty gap boxes alongside twenty blocks and thirty liquidity lines already keeps an older machine busy. Raise the cap in small steps and watch the redraw before pushing further.
Are results guaranteed?
No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the ICT Concepts Indicator as one input. Always backtest before trading live.
Category: this is part of our Smart Money collection. Also, truly, browse more Smart Money for MetaTrader, or explore every MT4 indicator and MT5 indicator on the site.
External references
- For background on this concept, see China concepts stock on Wikipedia.
- For broader market context, see Accumulationdistribution at Investopedia.
