OPEN-SOURCE SCRIPT

Market Sessions + Killzones [Income Statement]

3 479
A persistent challenge in intraday trading is that price behaviour is not uniform across the 24-hour clock. Volatility, liquidity, and directional bias are heavily concentrated in specific windows tied to the opening and closing of major financial centres.
Market Sessions + Killzones indicator maps those windows directly onto the chart, layers in the structural tools that ICT-based traders use to read them, and combines everything into a single cohesive visual so traders do not need to manage multiple overlapping indicators.

WHY THESE FEATURES ARE COMBINED
Session ranges, killzones, overlap periods, and previous session highs/lows are not independent ideas — they are sequential layers of the same framework. The session range defines the pool of liquidity that formed during a given market period. The previous session high and low represent the edges of that pool (similar to support and resistance) and become magnets for price in the following session. Killzones are the time windows within which institutional order flow is most likely to be active and capable of driving price through those levels. The overlap periods are where two separate liquidity pools interact simultaneously, producing the conditions most likely to generate sharp directional moves.

Combining all four in one indicator preserves the cause-and-effect relationship between them. Displaying sessions without killzones, or killzones without previous session levels, loses the context that makes each layer meaningful.

HOW THE INDICATOR WORKS
Session Boundaries
Each session (Tokyo, London, New York, optional Sydney) is tracked using the exchange's native timezone, not a fixed UTC offset. This matters because major sessions observe daylight saving time on different schedules, and a fixed-offset approach will silently drift by an hour during DST transitions. The script uses Pine's time() function with named timezone strings (Asia/Tokyo, Europe/London, etc.) to handle this automatically.

As each session progresses, the script tracks the running high and low bar-by-bar and extends the boundary lines to the current bar. At session close, the lines are locked in place and faded to indicate a completed session — distinguishing live sessions from historical ones at a glance.

Midpoint and Quartile Lines
Within each session, the script calculates the 50% midpoint and the 25%/75% quartile levels of the live range. These levels are drawn not because they are support/resistance in the classical sense, but because they divide the session's range into statistically meaningful zones. In ICT methodology, the midpoint (sometimes called the equilibrium) is a commonly referenced level for entries and targets. The quartiles indicate whether price is in the upper or lower half of the session's distribution.

Previous Session Highs and Lows
When a new session opens, the script saves the completed session's high and low and draws them forward as dashed lines into the new session. These levels represent the most visible liquidity pools from the prior period — stop-losses from traders who traded that session cluster above and below them. Price frequently targets these levels before establishing a new directional move.

ICT Killzones
Killzones are specific time windows identified in ICT methodology as high-probability trading periods:
• London Killzone: 02:00–05:00 New York time — the pre-London and early London open window, a period of frequent liquidity grabs before the main London trend establishes.
• New York Killzone: 07:00–10:00 New York time — encompasses the NY pre-market and the first 30 minutes of the NY open, the most liquid window of the trading day for USD pairs and US indices.

Each killzone is rendered as a box that expands dynamically with price throughout the window and locks when the window closes. The box captures the exact range of price movement during that period, making it easy to measure killzone expansion and compare it to the current session range.

Overlap Periods
Two overlap windows are detected and highlighted:
• Tokyo + London overlap: the brief window where Asian and European institutional flow intersect.
• London + New York overlap (08:30–12:00 ET approximately): historically the highest-volume period of the trading day for most major pairs. This overlap frequently produces the session's largest directional move or the strongest reversal of an earlier London move.

The overlap boxes expand dynamically with price, making it simple to see how much range was generated during the high-liquidity window versus the rest of the session.

Live Statistics Table
The table in the top-right corner displays the live session high, low, range in points, and range as a percentage of the 14-period ATR. The ATR ratio is the key metric here: it tells you not just how far price has moved, but how that move compares to recent volatility. A session range at 120% ATR suggests an unusually expansive session; one at 40% suggests compression that may precede a breakout.

SETTINGS GUIDE
  • Swing Length: Not applicable to this indicator.
  • Show Midpoint / Quartile Lines: Toggle to reduce visual noise on lower timeframes where the chart is already dense.
  • Show Prev Session H/L: Disable if you only want the current session boundaries and killzones without the historical dashed levels.
  • Show Overlap Zones: Disable for cleaner charts on assets where overlap volatility is less relevant (e.g. Asian equity CFDs).
  • Show ICT Killzones: Toggle independently of sessions — useful if you want session ranges as context but only want to trade the killzone windows.
  • Range as % ATR: Enables the ATR normalisation column in the table.


TIMEFRAME
This indicator is intentionally restricted to timeframes below 1 hour. Session structure and killzones are intraday concepts — applying them to daily or weekly charts produces meaningless output. Recommended: 1m, 3m, 5m, 15m, or 30m.

USAGE NOTES
This indicator provides structural context, not signals. A common workflow is to identify the previous session high or low as a liquidity target, wait for price to enter a killzone, then use a separate entry model (e.g. order block, fair value gap, or market structure shift) to time the trade. The indicator does not generate buy or sell signals on its own.

Disclaimer

The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.