The rules at a glance
- Asian range: the high and low from 8 p.m. to midnight New York time (05:30 to 09:30 IST in US summer time, 06:30 to 10:30 IST in winter)
- Kill zone: the London kill zone, 2 to 5 a.m. New York time (11:30 to 14:30 IST in summer, 12:30 to 15:30 IST in winter)
- Entry: a candle trades through the Asian high or low and closes back inside the range, in the half of its own range away from the sweep; enter at that close, against the sweep
- Stop loss: beyond the tip of the sweep's wick plus a tenth of the ATR
- Target: twice the risk (2R), or the other side of the Asian range
- Limits: one trade a day; anything still open is closed at noon New York time
What ICT kill zones are
The Inner Circle Trader, the online teacher whose ideas became smart money concepts, divides the forex day into a few windows where he expects the important moves to start. He calls them kill zones. They're built around the London and New York opens, when the most trading happens, and they're always given in New York time.
The reasoning is simple and doesn't need any special belief: liquidity arrives in bursts. Most of the day's volume comes when London and New York are open, and moves that start then tend to carry more weight than moves in the quiet hours. The kill zones are a way of only looking for trades when the market is most likely to move.
Kill zone times in IST
| Kill zone | New York time | IST in US summer time | IST in US winter time |
|---|---|---|---|
| Asian kill zone (the Asian range) | 20:00 to 00:00 | 05:30 to 09:30 | 06:30 to 10:30 |
| London kill zone | 02:00 to 05:00 | 11:30 to 14:30 | 12:30 to 15:30 |
| New York kill zone | 07:00 to 10:00 | 16:30 to 19:30 | 17:30 to 20:30 |
| London close kill zone | 10:00 to 12:00 | 19:30 to 21:30 | 20:30 to 22:30 |
Because these times follow New York's clock, the weeks when only one country has changed its clocks are unusual. Between the UK's change on 25 October 2026 and the US one on 1 November 2026, and again in March, when the US changes its clocks two or three weeks before the UK, the London kill zone starts two hours before the London open instead of one. The forex market hours clock shows the sessions live in IST.
For traders in India, the London kill zone falls in the late morning and early afternoon and the New York kill zone in the early evening, which is often easier to fit around a day job. The Asian range forms in the early morning in IST.
What traders look for in each kill zone
- Asian kill zone (the Asian range). Usually quiet. Its high and low become the levels the London session tests.
- London kill zone. A common pattern is a false move that takes out one side of the Asian range, then the real move the other way. That's the setup this page trades.
- New York kill zone. US data at 8:30 a.m. New York time (18:00 IST in summer, 19:00 IST in winter) lands inside it. Traders look for moves that continue London's direction, or reverse it.
- London close kill zone. As London winds down, moves often slow or partly reverse.
The strategy: an Asian range sweep in the London kill zone
This is the same idea as the liquidity sweep strategy, timed to the kill zone. It's also the mirror image of the London breakout: that strategy buys a close outside the overnight range, this one fades a wick outside it. Running both scripts on the same pair is a quick way to see which behaviour your market shows more often.
1. Mark the Asian range
Take the high and low from 8 p.m. to midnight New York time. The script draws it and shades it.
2. Wait for a sweep in the London kill zone
Between 2 and 5 a.m. New York time, watch for a candle that trades below the Asian low and closes back above it, in the upper half of its own range (or above the Asian high and back below it, in the lower half, for a short). The candle before it must have closed inside the range, so a real breakout doesn't count as a sweep.
3. Enter at the close, stop beyond the wick
Enter as the sweep candle closes. The stop goes beyond the wick's tip, plus a tenth of the ATR. If the price goes past the sweep, the idea is wrong.
4. Target 2R, or the other side of the range
The default target is twice the risk. The script can aim for the other side of the Asian range instead, which is the classic ICT target.
5. One trade a day, out by noon
Only the first sweep of the day is traded, and anything still open at noon New York time is closed. The New York kill zone can trade sweeps of the London range instead; it's a setting.
Worked example: EURUSD, 15-minute chart
Overnight, EURUSD holds a 16-pip Asian range from 1.1690 to 1.1706. It drifts towards the low after midnight. At 02:15 New York time (11:45 IST in summer), early in the London kill zone, a candle drops to 1.1683, 7 pips under the Asian low, and closes at 1.1697, back inside the range and in the upper half of its own range. That's the long signal.
| EURUSD long | |
|---|---|
| Entry | 1.1697 |
| Stop loss | 1.1682 (wick 1.1683 minus a tenth of the ATR), 15 pips away |
| Target (2R) | 1.1727, 30 pips away |
| Account and risk | $10,000, risking 1% = $100 |
| Lot size | $100 ÷ (15 pips × $10) = 0.66 lots |
| Loss if the stop is hit | $99.00 |
| Profit at the target | $198.00 |
The price climbs through the whole Asian range and reaches the target 8 candles (two hours) after the entry. With the "other side of the range" target instead, the trade would have closed at 1.1706 for 9 pips, less than 1R, because this range was narrow. That's a good reason to test both targets: the classic one depends heavily on how wide the range is.
Risk management
- One trade a day. If the first sweep fails, the market may be breaking out rather than faking out. The script stops for the day.
- Watch for data in the window. UK releases at 7 a.m. UK time come out right at the start of the London kill zone. A sweep caused by a data spike can keep going.
- Keep the risk fixed. 0.5% to 1% a trade, sized from the stop. Sweeps of a narrow range give small stops, so the lot size can look big; that's normal as long as the risk is the same.
- On a prop firm account, check the news rules before trading the New York kill zone, which contains most US data.
Common mistakes
- Using IST times without the clock change. Kill zones follow New York's clock, so in IST they move an hour in early November.
- Trading every move inside the kill zone. The kill zone is when to look, not a signal on its own.
- Entering before the candle closes. Until it closes, a sweep and a breakout look the same.
- Treating the times as exact. Big moves don't start on the minute. The windows are a guide to when liquidity is highest.
Backtest it yourself on TradingView
This page doesn't quote a win rate or a profit figure, and you should be wary of anyone who does without showing the test. Results change with the market, the dates, the data feed and the costs you put in. The honest way is to run the test yourself, and the free script below does the work in a couple of minutes.
- Open the chart. On TradingView, open EURUSD or GBPUSD on the 15-minute chart.
- Add the script. Open the Pine Editor from the Pine icon in the panel on the right of the chart (older layouts have it as a tab under the chart), delete the code that's already there, paste this strategy's code and click "Add to chart".
- Put in your costs. Open the strategy's settings and go to Properties. Enter your broker's commission and a little slippage. A test without costs flatters every strategy, and short-term ones most of all.
- Read the Strategy Tester. The panel under the chart shows the net profit, the maximum drawdown, the profit factor, the number of trades and a list of every trade. Click a few trades and check on the chart that each one follows the rules. Trade sizes are shown in units rather than lots: 100,000 units is one lot of a forex pair, and 100 ounces is one lot of gold.
- Change one setting at a time. Compare the London and New York kill zones, the two targets, and the rejection rule on and off. Then run the same settings on XAUUSD, where the Asian range is often swept in London too.
As a rough guide, don't trust a result with fewer than 100 trades, a profit factor under 1 once costs are in, or a drawdown you couldn't sit through with real money. Settings tuned to look good on one stretch of history often fail on the next, so check the same settings on dates you didn't tune them on, then demo trade the strategy for a few weeks. How much history you can test depends on your TradingView plan: the free plan loads 5,000 candles, which is a few months of 15-minute candles but years of daily ones.
The script sizes each trade from the stop loss and your risk percentage, starts with $10,000 and assumes 1:100 leverage (a 1% margin setting), so the tester doesn't flag margin calls on normal forex trade sizes. Change these under Properties to match your account. By default TradingView fills orders at the open of the candle after the signal, so the fill can differ a little from the signal candle's close. With at most one trade a day, 100 trades needs well over 100 days of data, so the free plan's 15-minute history may not be enough.
Download the free Pine Script and PDF
The script is written in Pine Script version 6 for this guide and follows the rules above. It can't read the economic calendar, so skipping news days is up to you. It's free to use, change and share. The PDF is a one-page cheat sheet with the rules, the kill zone times in IST, a worked example and a checklist, to keep next to your chart.
Show the code (Pine Script v6, 96 lines)
//@version=6
// ICT Kill Zone strategy by PipLedger (https://pipledgerfx.com/ict-kill-zone-strategy)
// Marks the Asian range (8 p.m. to midnight New York time) and trades a sweep of its high or low during the
// London kill zone (2 to 5 a.m. New York time). Optionally trades sweeps of the London range in the New York kill zone.
// Free to use and change. For education and backtesting only; not financial advice.
strategy("PipLedger: ICT Kill Zone", shorttitle="Kill Zone", overlay=true, initial_capital=10000, pyramiding=0, default_qty_type=strategy.fixed, default_qty_value=1, margin_long=1, margin_short=1, currency=currency.USD)
// ---------- Inputs
tz = input.string("America/New_York", "Time zone for the sessions")
asiaSess = input.session("2000-0000", "Asian range (New York time)")
lonKz = input.session("0200-0500", "London kill zone (New York time)")
nyKz = input.session("0700-1000", "New York kill zone (New York time)")
tradeIn = input.string("London", "Trade sweeps in", options=["London", "New York", "Both"])
needReject = input.bool(true, "Sweep candle must close in its far half")
stopBuf = input.float(0.1, "Stop buffer beyond the wick (x ATR 14)", minval=0.0, step=0.05)
tgtMode = input.string("R multiple", "Target", options=["R multiple", "Other side of the range"])
rr = input.float(2.0, "Target (R multiple)", minval=0.5, step=0.25)
closeHour = input.int(12, "Close any open trade at (hour, New York time)", minval=1, maxval=20)
riskPct = input.float(1.0, "Risk per trade (% of equity)", minval=0.1, maxval=5.0, step=0.1)
// ---------- Helpers
fx = strategy.convert_to_account(1.0) // one unit of the chart's quote currency in account currency (1 on USD-quoted charts)
calcQty(float entry, float stop) =>
float dist = math.abs(entry - stop)
dist > 0 and not na(fx) ? strategy.equity * riskPct / 100 / (dist * syminfo.pointvalue * fx) : 0.0
atr = ta.atr(14)
inAsia = not na(time(timeframe.period, asiaSess, tz))
inLon = not na(time(timeframe.period, lonKz, tz))
inNy = not na(time(timeframe.period, nyKz, tz))
// ---------- Ranges
var float aHi = na
var float aLo = na
var float lHi = na
var float lLo = na
var bool done = false
if inAsia and not inAsia[1] // a new trading day starts with the Asian session
aHi := high
aLo := low
done := false
else if inAsia
aHi := math.max(aHi, high)
aLo := math.min(aLo, low)
if inLon and not inLon[1]
lHi := high
lLo := low
else if inLon
lHi := math.max(lHi, high)
lLo := math.min(lLo, low)
// London kill zone trades the Asian range; New York kill zone trades the London kill zone's range
useLon = tradeIn != "New York"
useNy = tradeIn != "London"
lvlHi = inLon and useLon ? aHi : inNy and useNy ? lHi : na
lvlLo = inLon and useLon ? aLo : inNy and useNy ? lLo : na
// ---------- Sweeps: a wick through the level, a close back inside (the candle before closed inside too)
rng = high - low
sweepHi = not na(lvlHi) and close[1] <= lvlHi and high > lvlHi and close < lvlHi and (not needReject or close < low + rng * 0.5)
sweepLo = not na(lvlLo) and close[1] >= lvlLo and low < lvlLo and close > lvlLo and (not needReject or close > high - rng * 0.5)
flat = strategy.position_size == 0
shortSig = sweepHi and not sweepLo and not done and flat
longSig = sweepLo and not sweepHi and not done and flat
// ---------- Orders (one trade a day)
if shortSig
float sl = high + atr * stopBuf
float tp = tgtMode == "R multiple" ? close - (sl - close) * rr : lvlLo
float q = calcQty(close, sl)
if q > 0 and tp < close
strategy.entry("Short", strategy.short, qty=q)
strategy.exit("Short exit", "Short", stop=sl, limit=tp)
done := true
if longSig
float sl = low - atr * stopBuf
float tp = tgtMode == "R multiple" ? close + (close - sl) * rr : lvlHi
float q = calcQty(close, sl)
if q > 0 and tp > close
strategy.entry("Long", strategy.long, qty=q)
strategy.exit("Long exit", "Long", stop=sl, limit=tp)
done := true
// the candle that closes at the cut-off sends the order, so it fills at the cut-off time
cutoff = timestamp(tz, year(time, tz), month(time, tz), dayofmonth(time, tz), closeHour, 0)
if strategy.position_size != 0 and time_close >= cutoff and not inAsia
strategy.close_all(comment="Kill zone over")
// ---------- Chart
plot(aHi, "Asian high", color=color.new(color.teal, 0), style=plot.style_linebr)
plot(aLo, "Asian low", color=color.new(color.orange, 0), style=plot.style_linebr)
bgcolor(inAsia ? color.new(color.gray, 92) : na, title="Asian range")
bgcolor(inLon ? color.new(color.blue, 90) : na, title="London kill zone")
bgcolor(inNy ? color.new(color.purple, 90) : na, title="New York kill zone")
plotshape(shortSig, "Sweep of the high", shape.triangledown, location.abovebar, color.red, size=size.small)
plotshape(longSig, "Sweep of the low", shape.triangleup, location.belowbar, color.teal, size=size.small)Trading this from India
Residents can trade EURUSD, GBPUSD and USDJPY futures and options on NSE and BSE through a SEBI-registered broker. The contracts are quoted the same way as the spot pair, one lot is 1,000 units of the base currency, and they're cash-settled in rupees. They trade only from 9 a.m. to 7:30 p.m. IST, volumes are thin and not every broker offers them, so check the hours and the spread first. Trading forex or CFDs with offshore online platforms isn't allowed for residents under FEMA, even if the app is easy to download. Details are in is forex trading legal in India.
Related strategies: London breakout, opening range breakout, previous day high and low, XAUUSD London session, XAUUSD New York session, liquidity sweep, fair value gap. All 34 strategies are compared on one page in forex trading strategies.