ICT SMC Indicator: BoS, CHoCH and Order Block Zones

Written by Dominic Walsh · Published · Last updated

The ict smc indicator separates two structure events that look alike on a chart but mean different things. A break of structure continues the current direction. A change of character breaks it. Each gets its own colour of arrow. Behind every event the tool then hunts backwards for the candle that caused the move and shades it as an order block.

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 4: BoS_Up, BoS_Dn, CHoCH_Up, CHoCH_Dn
Alerts popup
Inputs 9

What the Ict Smc Indicator draws on the chart

BoS_Up in lime and BoS_Dn in red mark breaks that continue the existing direction.

CHoCH_Up in deep sky blue and CHoCH_Dn in magenta mark the reversal events.

Rectangles shade the order block found behind each break, tinted light green for bullish and light pink for bearish.

Only the newest blocks stay on screen, so old shading does not pile up.

  • BoS_Up: arrow, lime, width 2, arrow code 233
  • BoS_Dn: arrow, red, width 2, arrow code 234
  • CHoCH_Up: arrow, deep sky blue, width 2, arrow code 233
  • CHoCH_Dn: arrow, magenta, width 2, arrow code 234
ICT SMC indicator on EURUSD H1 with BoS and CHoCH arrows plus order block zones
ICT SMC indicator on EURUSD H1 with BoS and CHoCH arrows plus order block zones

How the Ict Smc Indicator calculates its values

Locating the pivot

The code sets piv as i + `InpSwingRight`, stepping back from the candidate bar so the pivot has bars on its newer side to be judged against. `InpSwingLeft` supplies the older side. Both default to `3`, which is a deliberately shallow pivot: smart-money structure reading cares about recent turns rather than major swings.

Testing the close against structure

Each bar reads its close into c and compares it with the relevant pivot level. A break in the direction of travel writes BoSUp at low[i] minus 10 points, or BoSDn at high[i] plus 10. A break against it writes ChochUp or ChochDn instead. The offset is fixed in the code here rather than exposed as an input.

Finding the order block behind the move

After a break the code searches backwards for the last opposing candle. searchTo takes MathMin(i + `InpOB_Lookback`, rates_total – 2) to bound the hunt. For a bullish break it looks for close[q] < open[q], the final down candle before price ran up. That candle becomes the order block rectangle. `InpMaxOBs` caps how many stay drawn at `6`, so the oldest drops off as new ones appear.

How to read the signals

Arrow colour is the whole message. Lime and red continue the story; deep sky blue and magenta interrupt it.

The rectangle sits behind the arrow in time, marking the candle that caused the break rather than the break itself.

A CHoCH after a run of BoS in one direction is the sequence most smart-money traders are watching for.

Blocks vanish as newer ones arrive, so an untouched zone that stays on chart is one price has not revisited.

Alert channels in this build: popup, one message per closed bar.

This build speaks through a terminal popup and nothing else. `InpAlertOnBoS` covers both event types, so turning it on gives you break of structure and change of character messages together. The code reads bar 1 rather than the forming bar, and the guard stores that bar’s time so each closed bar speaks once.

Every Ict Smc Indicator input

Core settings

Setting What it does Default
InpSwingLeft Pivot left bars. Bars on the older side of a pivot, default `3`. 3
InpSwingRight Pivot right bars. Bars on the newer side, default `3`. Raising both makes pivots rarer and structure coarser. 3
InpOB_Lookback Order block search lookback. How far back the order block search runs, default `30` bars. Too small and a fast move outruns the search. 30
InpMaxOBs Max OBs to retain on chart. How many blocks stay drawn, default `6`. Raise it to keep older zones visible on a slower chart. 6
InpObjPrefix Names the rectangles, default `”ICTSMC_”`. ICTSMC_

Display settings

Setting What it does Default
InpShowOB Draw order blocks. Set it `false` for arrows without shading. on
InpOBBullColor (see inputs panel) light green
InpOBBearColor (see inputs panel) light pink

Alert settings

Setting What it does Default
InpAlertOnBoS Alert on BoS / CHoCH. on
ICT SMC indicator inputs: InpSwingLeft, InpOB_Lookback and InpMaxOBs
ICT SMC indicator inputs: InpSwingLeft, InpOB_Lookback and InpMaxOBs

Settings that fit your chart

Structure work suits instruments that move in clean legs, and EURUSD on H1 is the reference chart. A three-bar pivot on H1 catches intraday turns without drowning in noise. On M1 the same setting marks nearly every wiggle as structure. On H4 and daily the arrows become sparse and each one carries more weight, which some traders prefer for bias rather than entries.

When the Ict Smc Indicator fails

Shallow pivots mean plenty of structure events. Three bars either side is easy to satisfy, and in a range the tool alternates BoS and CHoCH without any real trend behind it.

The order block search takes the last opposing candle within the lookback, which is a rule of thumb rather than a definition. In a choppy approach it can land on a candle that had nothing to do with the move.

With only six blocks retained, a level that matters later may already have been dropped from the chart.

Copy the compiled Ict Smc 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 Smc Indicator: Constant function market maker on Wikipedia, Doubletop at Investopedia.

Download the Ict Smc Indicator for MT4 and MT5

The zip holds the compiled Ict Smc 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 separates a BoS_Up arrow from a CHoCH_Up arrow?

Direction relative to the existing structure. BoS_Up marks a close through a level in the direction price was already travelling, so it continues the sequence. CHoCH_Up marks a close through a level in the opposite direction, which breaks it. The colours differ for that reason: lime for continuation, deep sky blue for the change.

How does InpOB_Lookback find an order block?

After a break, the code walks backwards up to that many bars looking for the last candle that opposed the move. For a bullish break it wants close[q] below open[q], the final down candle before price ran up. That candle becomes the rectangle. Set the value too low and a fast move outruns the search.

Why does InpMaxOBs default to 6?

To stop the chart filling with shaded rectangles. Six blocks cover the zones still plausibly in play while leaving the candles readable. Once a seventh appears, the oldest drops off. On a slower timeframe where blocks stay relevant for longer, raising the value is reasonable.

Are InpSwingLeft and InpSwingRight at 3 too shallow?

They are shallow on purpose. Smart-money structure reading works on recent turns, not major swings, so a three-bar pivot suits the method. It does mean plenty of events on fast charts. Raising both to five or six gives coarser structure and noticeably fewer arrows if the default proves too busy.

Are results guaranteed?

No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Ict Smc 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

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