ICT killzone sweep reversal, New York AM 07:00–10:00, 2R
Inside the killzone, a candle that takes out the last 20 candles' low and closes back above it goes long at the next open, and its mirror goes short. The stop sits a tick beyond the sweep's wick and the target twice the risk away. One trade a killzone, flat at 15:55 New York.
- Trades
- 515
- Won
- 31.3%
- Profit factor
- 0.75
- Net
- −6.7%
- Worst drawdown
- −6.7%
- Worst trade
- −$687
MNQ1! · 5-minute · 23 October 2024 → 22 October 2026 · 2 years · 517 sessions · $2.50 a contract each side, one tick of slippage, one micro contract a trade
//@version=6
// Suggested timeframe: 5-minute
strategy("ICT killzone sweep reversal (New York AM 07:00-10:00)", overlay=true, initial_capital=50000, default_qty_type=strategy.fixed, default_qty_value=1, commission_type=strategy.commission.cash_per_contract, commission_value=2.5, slippage=1, margin_long=0, margin_short=0)
// Inside the killzone, a candle that takes out the last 20 candles' low and closes back above it
// goes long at the next open; one that takes out their high and closes back below goes short. The
// stop sits a tick beyond that candle's wick and the target a fixed multiple of the risk away. One
// trade a killzone; a trade still open is closed at 15:55 New York.
kz = input.session("0700-1000", "Killzone (New York)")
look = input.int(20, "Liquidity: the last N candles' high or low", minval=2)
rr = input.float(2.0, "Target, times the risk", minval=0.5, step=0.5)
inKz = not na(time(timeframe.period, kz, "America/New_York"))
nyMins = hour(time, "America/New_York") * 60 + minute(time, "America/New_York")
var bool done = false
if inKz and not inKz[1]
done := false
lo = ta.lowest(low, look)[1]
hi = ta.highest(high, look)[1]
sweepLow = low < lo and close > lo
sweepHigh = high > hi and close < hi
if inKz and not done and strategy.position_size == 0
if sweepLow
stp = low - syminfo.mintick
strategy.entry("Long", strategy.long)
strategy.exit("Long exit", "Long", stop=stp, limit=close + rr * (close - stp))
done := true
else if sweepHigh
stp = high + syminfo.mintick
strategy.entry("Short", strategy.short)
strategy.exit("Short exit", "Short", stop=stp, limit=close - rr * (stp - close))
done := true
if strategy.position_size != 0 and nyMins >= 955 and nyMins < 965
strategy.close_all(comment="Flat by the close")
plotshape(inKz and sweepLow and not done[1] and done, "Long sweep", shape.triangleup, location.belowbar, color.new(#16A56A, 0), size=size.tiny)
plotshape(inKz and sweepHigh and not done[1] and done, "Short sweep", shape.triangledown, location.abovebar, color.new(#E5484D, 0), size=size.tiny)
bgcolor(inKz ? color.new(#A3A39E, 92) : na, title="Killzone")

