//@version=5
strategy("ICT Advanced Strategy - Indian Market (v1.2)", overlay=true,
default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === INPUTS ===
length = input(20, "Market Structure Lookback")
fvgGap = input(2.0, "Fair Value Gap Threshold")
obLookback = input(5, "Order Block Lookback")
liqLookback = input(30, "Liquidity Lookback")
killZoneStart = input.time(timestamp("2022-01-01 09:15 +0530"), "Kill Zone Start")
killZoneEnd = input.time(timestamp("2022-01-01 10:30 +0530"), "Kill Zone End")
higherTF = input.timeframe("60", "Higher Timeframe")
// === MULTI-TIMEFRAME MARKET STRUCTURE ===
hhtf = request.security(syminfo.tickerid, higherTF, high)
lhtf = request.security(syminfo.tickerid, higherTF, low)
plot(hhtf, title="HTF High", color=color.fuchsia, linewidth=1)
plot(lhtf, title="HTF Low", color=color.aqua, linewidth=1)
// === LIQUIDITY ZONES ===
highLiq = ta.highest(high, liqLookback)
lowLiq = ta.lowest(low, liqLookback)
plot(highLiq, color=color.red, title="Buy-side Liquidity",
style=plot.style_stepline)
plot(lowLiq, color=color.blue, title="Sell-side Liquidity",
style=plot.style_stepline)
// === FAIR VALUE GAPS ===
fvgUp = low[1] > high[2] and (low[1] - high[2]) >= fvgGap
fvgDown = high[1] < low[2] and (low[2] - high[1]) >= fvgGap
bgcolor(fvgUp ? color.new(color.green, 80) : na, offset=-1)
bgcolor(fvgDown ? color.new(color.red, 80) : na, offset=-1)
// === ORDER BLOCKS ===
bullOB = close > open and low == ta.lowest(low, obLookback)
bearOB = close < open and high == ta.highest(high, obLookback)
plotshape(bullOB, location=location.belowbar, color=color.lime, style=shape.square,
title="Bullish OB")
plotshape(bearOB, location=location.abovebar, color=color.maroon,
style=shape.square, title="Bearish OB")
// === ICT KILL ZONE ===
isKillZone = time >= killZoneStart and time <= killZoneEnd
bgcolor(isKillZone ? color.new(color.navy, 85) : na, title="Kill Zone")
// === BREAKER BLOCKS ===
breakerBull = close > open and close[1] < open[1] and low < low[1]
breakerBear = close < open and close[1] > open[1] and high > high[1]
plotshape(breakerBull, location=location.belowbar, color=color.teal,
style=shape.circle, title="Breaker Bull")
plotshape(breakerBear, location=location.abovebar, color=color.orange,
style=shape.circle, title="Breaker Bear")
// === OTE ZONE ===
rangeHigh = ta.highest(high, length)
rangeLow = ta.lowest(low, length)
oteLow = rangeLow + 0.62 * (rangeHigh - rangeLow)
oteHigh = rangeLow + 0.79 * (rangeHigh - rangeLow)
plot(oteLow, color=color.yellow, title="OTE Low", style=plot.style_linebr)
plot(oteHigh, color=color.yellow, title="OTE High", style=plot.style_linebr)
// === SMART MONEY CONCEPT LABELS ===
label.new(bar_index, high, "HH", color=color.red, textcolor=color.white,
style=label.style_label_down)
label.new(bar_index, low, "LL", color=color.blue, textcolor=color.white,
style=label.style_label_up)
label.new(bar_index, high, "LH", color=color.yellow, textcolor=color.black,
style=label.style_label_down)
label.new(bar_index, low, "HL", color=color.green, textcolor=color.black,
style=label.style_label_up)
label.new(bar_index, close, "BMS", color=color.aqua, textcolor=color.black,
style=label.style_label_down)
label.new(bar_index, close, "CHoCH", color=color.orange, textcolor=color.black,
style=label.style_label_up)
// === ENTRY & EXIT ICONS ===
longEntry = bullOB and close > oteLow and isKillZone
shortEntry = bearOB and close < oteHigh and isKillZone
if longEntry
strategy.entry("Long", strategy.long)
label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white,
style=label.style_label_up)
if shortEntry
strategy.entry("Short", strategy.short)
label.new(bar_index, high, "SELL", color=color.red, textcolor=color.white,
style=label.style_label_down)
strategy.exit("Exit Long", from_entry="Long", stop=lowLiq, limit=highLiq)
strategy.exit("Exit Short", from_entry="Short", stop=highLiq, limit=lowLiq)
// === ALERT CONDITIONS ===
alertcondition(longEntry, title="Long Signal", message="ICT Long Entry Confirmed")
alertcondition(shortEntry, title="Short Signal", message="ICT Short Entry
Confirmed")
// === DASHBOARD ===
var label dash = na
if bar_index % 50 == 0
label.delete(dash)
dash := label.new(bar_index, high, "ICT Strategy Ready (v1.2)",
style=label.style_label_down, color=color.green, textcolor=color.white)
// === END OF STRATEGY ===