Skip to content

Free TradingView indicator

Killzones (New York Time)

Shades configurable kill-zone windows in New York time, with optional high and low lines that extend until price trades through.

Sessionsv1.0TradingView (Pine Script v6) Non-repainting signals Alerts

What it does

Kill zones are short time windows when a session's heaviest activity tends to begin. Traders who use smart money concepts often focus on them. This indicator shades up to four configurable windows on the chart, all written in New York time, and can draw each window's high and low. Those lines keep running to the right until price trades through them, so you can see which levels are still untouched.

How it works

  1. Every window is a session string in the America/New_York time zone, so the shading follows daylight-saving changes on its own. The defaults are Asia 20:00 to 00:00, London open 02:00 to 05:00, New York open 07:00 to 10:00 and London close 10:00 to 12:00 (off by default).
  2. A candle is inside a window when its opening time falls in that window. Those candles get a background color.
  3. On the first candle of a window, two lines start at its high and low. They update while the window runs, so they always mark the window's highest high and lowest low.
  4. After the window ends, each line keeps extending to the right. Once a later candle trades beyond it, the line stops and turns dotted, showing that the level has been taken.
  5. Each window keeps a set number of past line pairs; older lines are deleted.

How to use it

  • Use the windows to decide when to pay attention, not what to do. Many traders only look for setups inside the London and New York windows and stay flat outside them.
  • The Asia window's high and low are popular reference levels for the London session. A run above or below them early in London is something to watch, not a signal by itself.
  • Untouched (solid) lines show levels price has not revisited yet. Dotted lines have already been traded through.
  • Works best on M1 to M15. Higher timeframes are too coarse for windows that last only a few hours. For the wider session picture see forex sessions.

Alerts fire at the start of each window.

Settings

InputDefaultWhat it changes
AsiaOn, 2000-0000Asia window and color
London openOn, 0200-0500London window and color
New York openOn, 0700-1000New York window and color
London closeOff, 1000-1200Optional fourth window
Background transparency88Shading strength
Draw kill-zone high / lowOnRange lines
Extend high / low until traded throughOnLine extension
Kill zones kept per window10Number of past line pairs

Limitations

The windows are a teaching convention, not market rules, and different educators use slightly different times, so adjust them to your own approach. Candles are assigned to a window by their open time, so on M30 or H1 the shading is approximate. A window being active does not mean price will move. Quiet days, holidays and news outside the windows all happen often.

Pine Script source

In TradingView open Pine Editor, paste the code, click Save and then Add to chart.

FXP_Killzones.pine

93 lines

// © FXPIPS ONLINE — https://fxpips.online/tradingview-indicators/ict-killzones/
// License: MIT. Educational tool — not financial advice. Trading involves substantial risk.
//@version=6
// Shades configurable "kill-zone" windows defined in New York time (daylight saving is
// handled automatically) and optionally draws each window's high and low, extending the
// lines until price trades through them.
indicator("FXP Killzones", shorttitle = "FXP Killzones", overlay = true, max_lines_count = 500)

NY_TZ = "America/New_York"

// ── Inputs ─────────────────────────────────────────────────────────────
grpZ   = "Kill zones (New York time)"
showA  = input.bool(true, "Asia", inline = "a", group = grpZ)
sessA  = input.session("2000-0000", "", inline = "a", group = grpZ)
colA   = input.color(#f9a825, "", inline = "a", group = grpZ)
showL  = input.bool(true, "London open", inline = "l", group = grpZ)
sessL  = input.session("0200-0500", "", inline = "l", group = grpZ)
colL   = input.color(#2962ff, "", inline = "l", group = grpZ)
showN  = input.bool(true, "New York open", inline = "n", group = grpZ)
sessN  = input.session("0700-1000", "", inline = "n", group = grpZ)
colN   = input.color(#e91e63, "", inline = "n", group = grpZ)
showC  = input.bool(false, "London close", inline = "c", group = grpZ)
sessC  = input.session("1000-1200", "", inline = "c", group = grpZ)
colC   = input.color(#7e57c2, "", inline = "c", group = grpZ)

grpD      = "Display"
bgTransp  = input.int(88, "Background transparency", minval = 0, maxval = 100, group = grpD)
showLines = input.bool(true, "Draw kill-zone high / low", group = grpD)
extendLn  = input.bool(true, "Extend high / low until traded through", group = grpD)
keepCount = input.int(10, "Kill zones kept per window", minval = 1, maxval = 100, group = grpD)

// ── Kill-zone engine ───────────────────────────────────────────────────
killzone(string sess, color col, bool show) =>
    bool inZone  = show and timeframe.isintraday and not na(time(timeframe.period, sess, NY_TZ))
    bool started = inZone and not inZone[1]
    var float hi     = na
    var float lo     = na
    var line  hiLn   = na
    var line  loLn   = na
    var bool  hiLive = false
    var bool  loLive = false
    var array<line> hist = array.new<line>()
    if started
        hi := high
        lo := low
        hiLive := true
        loLive := true
        if showLines
            hiLn := line.new(bar_index, high, bar_index, high, color = col, width = 1)
            loLn := line.new(bar_index, low, bar_index, low, color = col, width = 1)
            hist.push(hiLn)
            hist.push(loLn)
            while hist.size() > keepCount * 2
                line.delete(hist.shift())
    else if inZone
        hi := math.max(hi, high)
        lo := math.min(lo, low)
        if showLines and not na(hiLn)
            hiLn.set_y1(hi)
            hiLn.set_y2(hi)
            hiLn.set_x2(bar_index)
            loLn.set_y1(lo)
            loLn.set_y2(lo)
            loLn.set_x2(bar_index)
    else if showLines and extendLn and not na(hiLn)
        if hiLive
            hiLn.set_x2(bar_index)
            if high > hi
                hiLive := false
                hiLn.set_style(line.style_dotted)
        if loLive
            loLn.set_x2(bar_index)
            if low < lo
                loLive := false
                loLn.set_style(line.style_dotted)
    [inZone, started]

[inA, startA] = killzone(sessA, colA, showA)
[inL, startL] = killzone(sessL, colL, showL)
[inN, startN] = killzone(sessN, colN, showN)
[inC, startC] = killzone(sessC, colC, showC)

bgcolor(inA ? color.new(colA, bgTransp) : na, title = "Asia kill zone")
bgcolor(inL ? color.new(colL, bgTransp) : na, title = "London open kill zone")
bgcolor(inN ? color.new(colN, bgTransp) : na, title = "New York open kill zone")
bgcolor(inC ? color.new(colC, bgTransp) : na, title = "London close kill zone")

// ── Alerts ─────────────────────────────────────────────────────────────
alertcondition(startA, "Asia kill zone start", "{{ticker}}: Asia kill zone started")
alertcondition(startL, "London open kill zone start", "{{ticker}}: London open kill zone started")
alertcondition(startN, "New York open kill zone start", "{{ticker}}: New York open kill zone started")
alertcondition(startC, "London close kill zone start", "{{ticker}}: London close kill zone started")

Key inputs

Key inputs of Killzones (New York Time)
InputDefaultDescription
Asia2000-0000Asia kill-zone window in New York time.
London open0200-0500London kill-zone window in New York time.
New York open0700-1000New York kill-zone window in New York time.
London close1000-1200 (off)Optional London-close window in New York time.
Draw kill-zone high / lowOnLines at each window's high and low.
Extend high / low until traded throughOnKeeps lines running right until price takes them out.

Educational tools, not advice. Indicators and Expert Advisors describe price; they do not predict it, and past behaviour does not guarantee future results. Test everything on a demo account first and never risk money you cannot afford to lose. See our disclaimer.

Keep exploring

Related tradingview indicators