ICT Silver Bullet, 10:00–11:00 New York, 2R
Inside the hour, the first fair value gap sets a limit order at the gap's near edge, the stop beyond the gap's first candle and the target twice the risk away. One setup a window, an order left unfilled at the hour's end is cancelled, and a trade still open is closed by 15:55 New York.
- Trades
- 328
- Won
- 35.7%
- Profit factor
- 1.03
- Net
- +1.5%
- Worst drawdown
- −5.0%
- Worst trade
- −$443
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 Silver Bullet (New York 10:00-11: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)
// The ICT Silver Bullet, written as rules: inside the one-hour window, the first fair value gap
// (three candles, the third's low above the first's high, or its high below the first's low) sets
// a limit order at the gap's near edge, a stop beyond the first candle and a target a fixed
// multiple of the risk away. One setup a window; an order not filled by the window's end is
// cancelled; a trade still open is closed before the cash close.
win = input.session("1000-1100", "Silver Bullet window (New York)")
rr = input.float(2.0, "Target, times the risk", minval=0.5, step=0.5)
sideMode = input.string("Both", "Direction", options=["Both", "Long only", "Short only"])
flatAt = input.int(1555, "Flat by (HHMM, New York)")
inWin = not na(time(timeframe.period, win, "America/New_York"))
nyMins = hour(time, "America/New_York") * 60 + minute(time, "America/New_York")
flatMins = math.floor(flatAt / 100) * 60 + flatAt % 100
bullGap = low > high[2]
bearGap = high < low[2]
var bool done = false
var int pending = 0
var float lim = na
var float stp = na
var float tgt = na
dNY = dayofmonth(time, "America/New_York")
if dNY != dNY[1]
done := false
pending := 0
if inWin and not done and pending == 0 and strategy.position_size == 0
if bullGap and sideMode != "Short only"
lim := low
stp := low[2]
tgt := lim + rr * (lim - stp)
strategy.entry("Long", strategy.long, limit=lim)
strategy.exit("Long exit", "Long", stop=stp, limit=tgt)
pending := 1
done := true
else if bearGap and sideMode != "Long only"
lim := high
stp := high[2]
tgt := lim - rr * (stp - lim)
strategy.entry("Short", strategy.short, limit=lim)
strategy.exit("Short exit", "Short", stop=stp, limit=tgt)
pending := -1
done := true
if pending != 0 and strategy.position_size != 0
pending := 0
if pending != 0 and not inWin and strategy.position_size == 0
strategy.cancel("Long")
strategy.cancel("Short")
pending := 0
if strategy.position_size != 0 and nyMins >= flatMins
strategy.close_all(comment="Flat by the close")
plotshape(inWin and bullGap and pending == 1 and pending[1] == 0, "Long setup", shape.triangleup, location.belowbar, color.new(#16A56A, 0), size=size.tiny)
plotshape(inWin and bearGap and pending == -1 and pending[1] == 0, "Short setup", shape.triangledown, location.abovebar, color.new(#E5484D, 0), size=size.tiny)
bgcolor(inWin ? color.new(#A3A39E, 92) : na, title="Window")


