ICT Session Zones & Sweep Signals [WillyAlgoTrader]🎯 ICT Session Zones & Sweep Signals is an overlay indicator that maps the full ICT session framework onto your chart: five configurable killzone boxes with adaptive high/low pivots, confirmed liquidity sweep signals scored by ATR-normalized wick depth, session VWAP lines, Asian session bias engine, D/W/M open and previous high/low levels, custom opening price lines, vertical timestamps, and a day-of-week label system. Everything is timezone-aware, timeframe-gated, and designed for 1m–15m intraday charts.
🏗️ Most session indicators on TradingView draw static time boxes and stop there. This indicator builds a complete ICT session analysis environment: it tracks killzone ranges in real time, extends session pivots beyond the killzone until price sweeps them, detects and confirms the sweep with multiple filters (ATR depth, body confirmation, cooldown), scores each sweep's strength, calculates session VWAP inside each killzone for fair value reference, tracks Asian session bias, and overlays D/W/M structural levels — all in one tool with a unified dashboard.
🔍 WHAT MAKES IT ORIGINAL
1️⃣ Confirmed liquidity sweep detection with strength scoring. The core signal engine detects when price wicks beyond a session high or low and closes back inside — the classic ICT liquidity grab pattern. Every sweep must pass four filters before becoming a signal:
— 📏 ATR depth filter : the wick beyond the pivot must exceed a configurable ATR multiple (default 0.1×) — filtering out insignificant touches
— 🕯️ Body confirmation : close must be beyond the candle body midpoint in the rejection direction (bullish sweep: close in upper half; bearish: close in lower half) — confirming genuine rejection, not just a wick
— ⏱️ Cooldown filter : minimum bars between sweeps from the same session (default 3) — preventing rapid-fire signals from the same pivot
— ✅ Bar-close confirmation : all sweeps require barstate.isconfirmed — no intrabar repainting
Each confirmed sweep receives a strength score based on wick depth as an ATR multiple: Strong (≥ 0.5× ATR), Medium (≥ 0.2×), or Weak (< 0.2×). The score and strength appear in the label tooltip and on the dashboard.
2️⃣ Intelligent pivot lifecycle management. Session high/low lines are not static — they follow a lifecycle:
— 🟢 Created at session start with the first bar's high/low
— 📈 Updated during the session as new highs/lows form
— ➡️ Extended beyond the session until swept or invalidated
— 🎯 Swept: wick beyond + close back inside → sweep signal fires
— ❌ Invalidated: only when price closes decisively beyond the level (not just a wick touch) — preventing premature pivot death from intrabar noise
— 🔄 Mode option: "Until Swept" (pivot disappears after sweep) or "Always" (pivots extend indefinitely for historical reference)
3️⃣ Session VWAP (volume-weighted average price per killzone). Unlike the simple midpoint between session high and low, the session VWAP accumulates close × volume inside each killzone, providing the true volume-weighted fair value for that session. The VWAP line extends beyond the session end, serving as a more accurate equilibrium reference than the midpoint. This is especially useful on instruments with uneven volume distribution within a session.
4️⃣ Asian session bias engine. The dashboard continuously shows the Asian bias state: Bullish (price above Asia high), Bearish (price below Asia low), or Neutral (inside range). This directly implements the ICT concept that the Asian range sets the liquidity pool for London and NY sessions — if price is above Asia high, London/NY are expected to seek downside liquidity, and vice versa.
5️⃣ Five fully customizable killzones. Each killzone has independently configurable:
— Session name, time window, and color
— High/Low pivot label text (e.g., "AS.H" / "AS.L")
— Enable/disable toggle
Default zones cover the standard ICT framework: Asia (20:00–00:00), London (02:00–05:00), NY AM (09:30–11:00), NY Lunch (12:00–13:00), NY PM (13:30–16:00). All times follow the selected timezone. You can modify any zone to match your specific session definitions.
6️⃣ D/W/M structural levels with break alerts. The indicator tracks and draws:
— 📅 Daily / Weekly / Monthly opening price lines
— 📊 Previous Day High/Low (PDH/PDL), Previous Week High/Low (PWH/PWL), Previous Month High/Low (PMH/PML)
— 📍 Vertical day/week/month separators
Each level extends across the chart with configurable style and width. Break alerts fire when price closes above PDH, below PDL, above PWH, below PWL, above PMH, or below PML — six structure-level alerts in addition to sweep alerts.
7️⃣ Custom opening price lines and vertical timestamps. Four configurable opening price slots let you mark any specific time's opening price (e.g., True Day Open at 00:00, 06:00 open, 10:00 open, 14:00 open). Four vertical timestamp slots add time-of-day vertical lines (e.g., 08:00 London open, 10:00 macro time, etc.). All follow the selected timezone and are trimmed by session history.
8️⃣ Killzone range comparison table. An optional range table shows each killzone's current range (high − low) alongside its N-session average range. This helps you identify when a session is extended beyond its typical range (potential exhaustion) or still compressed (potential expansion ahead).
9️⃣ Comprehensive dashboard. The info panel shows:
— 🔵 Active session name (with overlap count when multiple sessions are active simultaneously)
— 📊 Asian session bias (Bullish / Bearish / Neutral)
— 🎯 Last sweep type, session, and strength with ATR score
— 📈 Total sweep counts (bullish / bearish)
— ⏱️ Current timeframe and symbol
— 🏷️ Indicator version
🔟 Full timezone support with 35+ timezone options. All session calculations use a single timezone setting. Options include named timezones (America/New_York, Europe/London, Asia/Tokyo, etc.) and GMT offsets (GMT-12 through GMT+12). This ensures killzone boxes, pivot times, opening prices, and timestamps all align correctly regardless of your broker's server time.
⚙️ HOW IT WORKS
🏗️ Killzone box creation:
On each bar, the indicator checks whether the current time falls inside each enabled killzone using the configured session string and timezone. When a session starts (current bar inside, previous bar outside), a new box is created with the bar's high/low. During the session, the box expands to encompass the full range. Pivot lines (high/low) are created at session start and updated as new extremes form. Session VWAP accumulates close × volume and updates on each bar.
🎯 Sweep detection:
After a session ends, the pivot lines continue extending on each bar. On every confirmed bar, the indicator checks: does the wick exceed the pivot level? If yes, it evaluates four conditions: ATR depth threshold met, close back inside the level, body confirmation (close in correct half of candle), and cooldown since last sweep from this session. Only if all four pass does the sweep signal fire. The pivot is invalidated (stops extending) only when price closes decisively through the level — not on a wick touch alone.
📊 Sweep strength:
Wick depth beyond the pivot is divided by ATR(14) to produce a dimensionless score. Strong ≥ 0.5×, Medium ≥ 0.2×, Weak < 0.2×. The score appears in the signal tooltip and on the dashboard, helping you prioritize higher-quality sweeps.
📏 Session VWAP:
Inside each killzone, the indicator accumulates sum(close × volume) and sum(volume). VWAP = numerator / denominator. The line updates on each bar during the session and extends beyond session end as a reference level. Volume is floored at 1.0 to handle instruments with zero reported volume.
🔄 Asian bias:
The dashboard reads the Asia session's most recent high and low pivot levels. If the current close is above Asia high → Bullish. Below Asia low → Bearish. Inside the range → Neutral. This updates in real time.
📅 DWM levels:
On each D/W/M timeframe change, the indicator stores the previous period's high and low, then draws horizontal lines at those levels. Lines extend forward on each bar. Break detection fires alerts when price closes above the high or below the low for the first time since the period change.
📖 HOW TO USE
🎯 Recommended setup:
— ⏱️ Timeframe: 1m–15m — the indicator auto-hides on timeframes ≥ the TF Limit setting (default 30m). Session zones and sweeps are most meaningful on intraday charts.
— 🌐 Timezone : set to your exchange or broker timezone for accurate killzone alignment. For ICT concepts, America/New_York (EST/EDT) is the standard reference.
— 📦 Session History (default 3): controls how many past sessions' boxes and pivot lines remain on chart. Increase for more context, decrease for cleaner charts.
👁️ Reading the chart:
— 📦 Colored boxes = killzone time windows (Asia blue, London red, NY AM green, NY Lunch yellow, NY PM purple)
— ─── Horizontal lines extending from boxes = session high/low pivots (active until swept or invalidated)
— ··· Dotted lines = session midpoints and/or VWAP
— 🟢 ▲ label below candle = confirmed bullish sweep (wick below session low + close back above)
— 🔴 ▼ label above candle = confirmed bearish sweep (wick above session high + close back below)
— Hover over sweep labels for tooltip: session name, strength, ATR score, price
🔁 ICT workflow with this indicator:
1. 🌏 Check Asian session range — note the high and low pivots
2. 📊 Read the dashboard — Asian Bias tells you the directional lean
3. 🇬🇧 During London killzone — watch for sweeps of Asian high/low pivots
4. 🇺🇸 During NY AM — watch for sweeps of London or Asian pivots
5. 🎯 When a sweep fires — check strength (Strong > Medium > Weak) and confluence with DWM levels
6. 📍 Use PDH/PDL, PWH/PWL as additional confluence — sweep + DWM level break = highest conviction
7. 🕐 NY Lunch — lower probability zone, expect consolidation
8. 🔄 NY PM — potential continuation or reversal of AM move, watch for PM pivot sweeps
🔧 Tuning sweep sensitivity:
— 🎚️ Min Sweep Depth 0.0 : any wick beyond the pivot counts (most signals, more noise)
— 🎚️ Min Sweep Depth 0.1 (default): requires 10% of ATR beyond pivot (balanced)
— 🎚️ Min Sweep Depth 0.2–0.3 : only significant wicks qualify (fewer but stronger signals)
— 🔄 Cooldown 0 : no restriction (same pivot can trigger multiple sweeps)
— 🔄 Cooldown 3 (default): minimum 3 bars between sweeps from the same session
— 🕯️ Body Confirmation On (default): filters weak wicks — recommended to keep enabled
⚙️ KEY SETTINGS REFERENCE
⚙️ Main:
— Timezone (default GMT+0): 35+ options including named and GMT offset
— Timeframe Limit (default 30m): hide all drawings on TFs ≥ this value
— Session History (default 3): number of past sessions to keep visible
📦 Killzones:
— 5 independently configurable zones: name, session time, color, enable/disable
— Box Transparency (default 80%): killzone box fill opacity
— Show Box Labels (default On): session name text inside boxes
📏 Session Pivots:
— Show Session Pivots (default On): high/low lines from each killzone
— Show Midpoints (default Off): 50% level between session high and low
— Show Session VWAP (default Off): volume-weighted average price per killzone
— Extend Pivots (default Until Swept): line stops after sweep, or "Always" for permanent extension
— Show Price on Labels (default Off): append price value to pivot label text
— Customizable pivot label text per killzone (e.g., AS.H, LO.H, AM.H)
🎯 Sweep Signals:
— Min Sweep Depth (default 0.1× ATR): minimum wick beyond pivot
— Cooldown (default 3 bars): minimum bars between sweeps from same session
— Body Confirmation (default On): require close in correct body half
📅 Day / Week / Month:
— Daily / Weekly / Monthly Open lines (each toggleable)
— Previous D/W/M High/Low lines with labels (PDH, PDL, PWH, PWL, PMH, PML)
— Day / Week / Month separator verticals
— Day-of-Week text labels (top or bottom, weekends hideable)
— Unlimited DWM Lines (default Off): override session history limit
🕐 Opening Prices:
— 4 configurable opening price slots (session time, name, color)
— Line style and width settings
📍 Timestamps:
— 4 configurable vertical timestamp slots (session time, color)
— Line style and width settings
🎨 Visual:
— Auto / Dark / Light theme detection
— Bull / Bear signal colors
— Watermark toggle
📊 Dashboards
— 📋 Main Dashboard : active session, Asian bias, last sweep (type + session + strength + ATR score), sweep counts (bull/bear), timeframe, symbol, version
— 📏 Range Table (optional): current range and N-session average range per killzone — identify extended vs. compressed sessions
🔔 Alerts
Sweep alerts (bar-close confirmed):
— 🟢 Sweep Buy — includes ticker, timeframe, price, strength, reason (which session's pivot was swept)
— 🔴 Sweep Sell — same fields
Both support plain text and JSON webhook format for bot integrations.
DWM break alerts:
— 📈 PDH / PWH / PMH Break — price closes above previous high
— 📉 PDL / PWL / PML Break — price closes below previous low
Six structural alerts, all bar-close confirmed.
⚠️ IMPORTANT NOTES
— ⏱️ Designed for intraday timeframes (1m–15m). The indicator auto-hides on timeframes at or above the TF Limit setting. Session zones and sweeps lose their meaning on higher timeframes.
— 🚫 No repainting. All sweep signals and DWM break alerts require barstate.isconfirmed. Pivot invalidation also occurs only on confirmed bar close, not intrabar.
— 🌐 Timezone accuracy is critical. If your killzone boxes don't align with the expected session times, verify that the Timezone setting matches your exchange or broker timezone. For standard ICT analysis, use America/New_York.
— 📊 Sweep signals indicate liquidity grabs — they show where stop-losses were likely triggered. They are not standalone entry signals. Combine with order flow, FVGs, order blocks, or other ICT concepts for complete trade setups.
— 🔄 Session VWAP requires volume data. On instruments with no reported volume (some forex pairs), the VWAP line defaults to close-based calculation.
— 📏 The range table's average is calculated from the last N completed sessions (configurable, default 5). It takes several sessions to build a meaningful average.
— 🎯 Sweep strength is relative — "Strong" on a low-volatility instrument may represent a smaller absolute move than "Weak" on a high-volatility one. The ATR normalization makes strength comparable across timeframes but not across instruments with very different ATR profiles.
— 🛠️ This is an analysis and signal tool , not an automated trading system. It visualizes ICT session concepts and detects liquidity sweeps — trade decisions remain yours.
Pine Script® indicator






















