Advertisement IC Markets

Pre-NY open checklist: news, levels, max risk

Discuss 1-minute to 15-minute price action setups, fading intraday momentum, key support/resistance zones, and proven short-term trading methodologies.
LondonScalper
Posts: 701
Joined: Sat Sep 05, 2026 7:54 am

Pre-NY open checklist: news, levels, max risk

Post by LondonScalper »

Pre-NY open checklist -- especially when London already did the work.

By early afternoon London, GBP and EUR have often printed the day's useful range. Treating 13:00 as a second open with fresh full risk is how I used to give mornings back.

Pre-NY card (five minutes)
1. London high/low and mid -- is NY likely continuation or recycle?
2. My P&L vs daily target / loss stop -- both change aggressiveness.
3. US calendar inside the next two hours.
4. Spread/ATR: still London-like, or am I late to a dead tape?
5. One thesis line. No line, no trade.

Bias I fight: "I missed London, so I owe myself NY." I do not. The overlap is optional. When London was clean and I am flat and green, protecting the day beats inventing a story.

What is your go/no-go after a busy London morning?

If London already hit my soft daily target, NY defaults to observe or A+ only. That single line on the card has saved more weeks than any clever overlap pattern. Optional sessions should feel optional -- the moment they feel mandatory, you are paying tuition.
Recommended broker for automated trading & scalping IC Markets
PTScalper
Site Admin
Posts: 3027
Joined: Mon Jul 20, 2026 1:28 pm

Re: Pre-NY open checklist: news, levels, max risk

Post by PTScalper »

LondonScalper wrote: Mon Sep 14, 2026 8:51 pm Pre-NY open checklist -- especially when London already did the work.

By early afternoon London, GBP and EUR have often printed the day's useful range. Treating 13:00 as a second open with fresh full risk is how I used to give mornings back.

Pre-NY card (five minutes)
1. London high/low and mid -- is NY likely continuation or recycle?
2. My P&L vs daily target / loss stop -- both change aggressiveness.
3. US calendar inside the next two hours.
4. Spread/ATR: still London-like, or am I late to a dead tape?
5. One thesis line. No line, no trade.

Bias I fight: "I missed London, so I owe myself NY." I do not. The overlap is optional. When London was clean and I am flat and green, protecting the day beats inventing a story.

What is your go/no-go after a busy London morning?

If London already hit my soft daily target, NY defaults to observe or A+ only. That single line on the card has saved more weeks than any clever overlap pattern. Optional sessions should feel optional -- the moment they feel mandatory, you are paying tuition.
Hi LondonScalper,

Spot on. The idea that "optional sessions should feel optional" is exactly how you stop bleeding profits back to the market during the overlap. The FOMO of missing the initial London breakout is one of the most expensive psychological traps out there.

To answer your question: my ultimate go/no-go after a heavy London session always comes back to the raw price action on the Daily and 15-minute charts. If London already pushed the price into a higher timeframe daily liquidity pool or major structure point, NY is an automatic "no-go" for continuation. I assume the overlap will just be a messy recycle or a slow bleed reversion.

If London exhausted the typical daily range and we are sitting sideways at 13:00, I treat it as a dead tape. There is zero edge in trying to force a 15-minute setup when the daily candle has already printed its wick and body for the day.

Protecting the day's green P&L by just shutting the charts down is the most profitable "trade" you can execute in that scenario. Thanks for the checklist reminder—I'm definitely keeping that 5-minute pre-NY card in mind for this week.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 3027
Joined: Mon Jul 20, 2026 1:28 pm

Re: Pre-NY open checklist: news, levels, max risk

Post by PTScalper »

Pine Script: Pre-NY Open Checklist & Session Tracker

This script is built specifically for your raw price action approach. It visualizes the London High, Low, and Midpoint on your chart and projects them forward into the NY session. It also includes an on-chart "Pre-NY Card" dashboard to remind you of the daily range context and your checklist before executing.

Code: Select all

//@version=5
indicator("Pre-NY Overlap Checklist [PA]", overlay=true, max_lines_count=50, max_boxes_count=50)

// --- Inputs ---
grp_sessions = "Session Times (Exchange Time)"
london_time  = input.session("0300-0800", title="London Session", group=grp_sessions) // Adjust to your broker's timezone
ny_time      = input.session("0800-1200", title="NY AM Session", group=grp_sessions)

grp_visuals  = "Visuals & Dashboard"
show_dash    = input.bool(true, title="Show Pre-NY Card Dashboard", group=grp_visuals)
london_color = input.color(color.new(color.blue, 90), title="London Box Color", group=grp_visuals)
ny_color     = input.color(color.new(color.red, 90), title="NY Box Color", group=grp_visuals)
line_color   = input.color(color.new(color.gray, 30), title="High/Low/Mid Lines", group=grp_visuals)

// --- Session Logic ---
in_london = time(timeframe.period, london_time)
in_ny     = time(timeframe.period, ny_time)

var float lon_high = na
var float lon_low  = na
var box lon_box = na
var box ny_box = na

var line hl_line = na
var line ll_line = na
var line mid_line = na

// --- Track London High / Low ---
if in_london
    if not in_london[1]
        // New London Session starts
        lon_high := high
        lon_low  := low
        lon_box  := box.new(left=bar_index, top=lon_high, bottom=lon_low, right=bar_index, bgcolor=london_color, border_color=na)
    else
        // Update High/Low during London
        lon_high := math.max(lon_high, high)
        lon_low  := math.min(lon_low, low)
        box.set_top(lon_box, lon_high)
        box.set_bottom(lon_box, lon_low)
        box.set_right(lon_box, bar_index)

// --- Project Levels into NY ---
if in_ny
    if not in_ny[1]
        // NY Opens: Draw the High, Low, and Mid lines from London
        ny_box := box.new(left=bar_index, top=high, bottom=low, right=bar_index, bgcolor=ny_color, border_color=na)
        
        mid_level = (lon_high + lon_low) / 2
        
        hl_line := line.new(x1=bar_index, y1=lon_high, x2=bar_index + 10, y2=lon_high, color=line_color, style=line.style_dashed)
        ll_line := line.new(x1=bar_index, y1=lon_low, x2=bar_index + 10, y2=lon_low, color=line_color, style=line.style_dashed)
        mid_line := line.new(x1=bar_index, y1=mid_level, x2=bar_index + 10, y2=mid_level, color=line_color, style=line.style_dotted)
    else
        // Update NY Box and extend lines
        box.set_top(ny_box, math.max(box.get_top(ny_box), high))
        box.set_bottom(ny_box, math.min(box.get_bottom(ny_box), low))
        box.set_right(ny_box, bar_index)
        
        line.set_x2(hl_line, bar_index)
        line.set_x2(ll_line, bar_index)
        line.set_x2(mid_line, bar_index)

// --- Pre-NY Checklist Dashboard ---
var table dash = table.new(position.top_right, 2, 6, bgcolor=color.new(color.black, 80), border_width=1, border_color=color.gray)

if show_dash and barstate.islast
    lon_range_pips = (lon_high - lon_low) / syminfo.mintick / 10
    
    table.cell(dash, 0, 0, "PRE-NY CHECKLIST", text_color=color.white, text_halign=text.align_center, text_weight="bold", bgcolor=color.new(color.blue, 50))
    table.merge_cells(dash, 0, 0, 1, 0)
    
    table.cell(dash, 0, 1, "London Range (Pips)", text_color=color.silver, text_halign=text.align_left)
    table.cell(dash, 1, 1, str.tostring(lon_range_pips, "#.##"), text_color=color.white, text_halign=text.align_right)
    
    table.cell(dash, 0, 2, "1. London H/L/Mid Context?", text_color=color.silver, text_halign=text.align_left)
    table.cell(dash, 1, 2, "[ Check ]", text_color=color.yellow, text_halign=text.align_right)
    
    table.cell(dash, 0, 3, "2. P&L vs Target?", text_color=color.silver, text_halign=text.align_left)
    table.cell(dash, 1, 3, "[ Check ]", text_color=color.yellow, text_halign=text.align_right)

    table.cell(dash, 0, 4, "3. Tape: Dead or Active?", text_color=color.silver, text_halign=text.align_left)
    table.cell(dash, 1, 4, "[ Check ]", text_color=color.yellow, text_halign=text.align_right)

    table.cell(dash, 0, 5, "4. Thesis Line / Plan?", text_color=color.silver, text_halign=text.align_left)
    table.cell(dash, 1, 5, "[ Check ]", text_color=color.yellow, text_halign=text.align_right)
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 3027
Joined: Mon Jul 20, 2026 1:28 pm

Re: Pre-NY open checklist: news, levels, max risk

Post by PTScalper »

How to use this for your daily workflow:

Apply it to the 15-minute chart: The blue box will capture London's price action, and the red box tracks NY.

Read the Dashboard: At the start of the NY overlap, glance at the top-right table. If the London range pip count is already massive compared to the daily average, it serves as a mathematical reminder that NY is likely exhausted.

Price Action Context: The dashed lines project the London high, low, and 50% midpoint directly across the NY session. This immediately answers your first checklist question: Are we breaking out for continuation, or trapped inside London's range recycling the mid-level?

Have you noticed if specific pairs (like GBP vs. EUR) tend to be more prone to creating "dead tape" in NY after a heavy London trend, or do they behave similarly for you?
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 3027
Joined: Mon Jul 20, 2026 1:28 pm

Re: Pre-NY open checklist: news, levels, max risk

Post by PTScalper »

Your framework for treating the NY overlap as a secondary, strictly optional open is a critical shift toward professional capital preservation. The psychological draw of the NY session often forces unnecessary exposure, especially when London has already priced in the day’s macroeconomic drivers.

If London efficiently expands the daily range and sweeps structural liquidity on the daily or 15-minute charts, forcing NY entries usually means trading into a low-probability mean reversion or illiquid consolidation.

Once a soft P&L target is hit during European hours, the most asymmetric return on capital comes from protecting the day. NY then requires a rigid A+ setup anchored to a fresh structural thesis line. Without a clear invalidation level and order flow confirmation, the mathematical edge is flat. Keeping the NY session optional actively eliminates the tuition paid to forced, low-conviction trades.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 3027
Joined: Mon Jul 20, 2026 1:28 pm

Re: Pre-NY open checklist: news, levels, max risk

Post by PTScalper »

Pine Script: Institutional Pre-NY Context & ADR Tracker

This revised implementation is written with production-grade architecture. It actively calculates the 14-day Average Daily Range (ADR) and measures London's price action against it. If London consumes 80% or more of the ADR, the dashboard alerts you that the daily range is mathematically exhausted, providing quantitative backing for a "no-go" decision.

Code: Select all

//@version=5
indicator("Pre-NY Context & ADR Tracker [PA]", overlay=true, max_lines_count=50, max_boxes_count=50)

// ==============================================================================
// INPUTS & CONFIGURATION
// ==============================================================================
grp_time     = "Session Parameters (Exchange Time)"
session_lon  = input.session("0300-0800", title="London Session", group=grp_time, tooltip="Set to your broker's local time for Frankfurt/London.")
session_ny   = input.session("0800-1200", title="NY AM Session", group=grp_time)

grp_calc     = "Quantitative Metrics"
adr_length   = input.int(14, title="ADR Length", minval=1, group=grp_calc)
adr_thresh   = input.float(80.0, title="ADR Exhaustion Threshold (%)", minval=10, maxval=100, group=grp_calc)

grp_ui       = "Visual Architecture"
col_lon_box  = input.color(color.new(color.slate, 85), title="London Range Box", group=grp_ui)
col_ny_box   = input.color(color.new(color.maroon, 85), title="NY Range Box", group=grp_ui)
col_levels   = input.color(color.new(color.gray, 40), title="Structural Levels", group=grp_ui)

// ==============================================================================
// CORE LOGIC & STATE MANAGEMENT
// ==============================================================================
in_lon = time(timeframe.period, session_lon)
in_ny  = time(timeframe.period, session_ny)

// Use 'var' for persistent state across historical bars
var float lon_high = na
var float lon_low  = na
var box lon_box    = na
var box ny_box     = na
var line line_h    = na
var line line_l    = na
var line line_m    = na

// Calculate ADR (Average Daily Range) for statistical context
float daily_range = request.security(syminfo.tickerid, "D", high[1] - low[1])
float adr = ta.sma(daily_range, adr_length)
float adr_pips = adr / syminfo.mintick / 10

// ==============================================================================
// SESSION DRAWING & PROJECTION
// ==============================================================================
if in_lon
    if not in_lon[1] // London Open
        lon_high := high
        lon_low  := low
        lon_box  := box.new(left=bar_index, top=lon_high, bottom=lon_low, right=bar_index, bgcolor=col_lon_box, border_color=na)
    else // Accumulate London Range
        lon_high := math.max(lon_high, high)
        lon_low  := math.min(lon_low, low)
        box.set_top(lon_box, lon_high)
        box.set_bottom(lon_box, lon_low)
        box.set_right(lon_box, bar_index)

if in_ny
    if not in_ny[1] // NY Open
        ny_box := box.new(left=bar_index, top=high, bottom=low, right=bar_index, bgcolor=col_ny_box, border_color=na)
        
        float mid_level = (lon_high + lon_low) / 2
        
        // Project structural liquidity levels forward
        line_h := line.new(x1=bar_index, y1=lon_high, x2=bar_index + 5, y2=lon_high, color=col_levels, style=line.style_dashed)
        line_l := line.new(x1=bar_index, y1=lon_low, x2=bar_index + 5, y2=lon_low, color=col_levels, style=line.style_dashed)
        line_m := line.new(x1=bar_index, y1=mid_level, x2=bar_index + 5, y2=mid_level, color=col_levels, style=line.style_dotted)
    else // Extend NY box and projections
        box.set_top(ny_box, math.max(box.get_top(ny_box), high))
        box.set_bottom(ny_box, math.min(box.get_bottom(ny_box), low))
        box.set_right(ny_box, bar_index)
        
        line.set_x2(line_h, bar_index)
        line.set_x2(line_l, bar_index)
        line.set_x2(line_m, bar_index)

// ==============================================================================
// HUD / DASHBOARD
// ==============================================================================
var table panel = table.new(position.top_right, 2, 7, bgcolor=color.new(#131722, 10), border_width=1, border_color=color.new(color.gray, 80))

if barstate.islast
    float lon_range_pips = (lon_high - lon_low) / syminfo.mintick / 10
    float range_pct = (lon_high - lon_low) / adr * 100
    
    // Determine condition color based on ADR exhaustion
    color status_color = range_pct >= adr_thresh ? color.red : color.green
    string status_text = range_pct >= adr_thresh ? "EXHAUSTED" : "ACTIVE"

    table.cell(panel, 0, 0, "PRE-NY CONTEXT", text_color=color.white, text_halign=text.align_center, text_weight="bold", bgcolor=color.new(color.silver, 80))
    table.merge_cells(panel, 0, 0, 1, 0)
    
    table.cell(panel, 0, 1, "14D ADR", text_color=color.gray, text_halign=text.align_left, text_size=size.small)
    table.cell(panel, 1, 1, str.tostring(adr_pips, "#.0") + " pips", text_color=color.white, text_halign=text.align_right, text_size=size.small)
    
    table.cell(panel, 0, 2, "London Range", text_color=color.gray, text_halign=text.align_left, text_size=size.small)
    table.cell(panel, 1, 2, str.tostring(lon_range_pips, "#.0") + " pips", text_color=color.white, text_halign=text.align_right, text_size=size.small)

    table.cell(panel, 0, 3, "ADR Consumed", text_color=color.gray, text_halign=text.align_left, text_size=size.small)
    table.cell(panel, 1, 3, str.tostring(range_pct, "#.0") + "%", text_color=status_color, text_halign=text.align_right, text_size=size.small, text_weight="bold")

    table.cell(panel, 0, 4, "Tape Status", text_color=color.gray, text_halign=text.align_left, text_size=size.small)
    table.cell(panel, 1, 4, status_text, text_color=status_color, text_halign=text.align_right, text_size=size.small, text_weight="bold")

    table.cell(panel, 0, 5, "Structure Thesis Line?", text_color=color.gray, text_halign=text.align_left, text_size=size.small)
    table.cell(panel, 1, 5, "Unconfirmed", text_color=color.orange, text_halign=text.align_right, text_size=size.small)
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 3027
Joined: Mon Jul 20, 2026 1:28 pm

Re: Pre-NY open checklist: news, levels, max risk

Post by PTScalper »

By explicitly quantifying the ADR against the London expansion, the dashboard shifts the "observe or A+ only" decision from an emotional gut check into an objective mathematical threshold. If the HUD flags the tape as "EXHAUSTED", you know instantly that the probability of a clean continuation is heavily diminished.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 3027
Joined: Mon Jul 20, 2026 1:28 pm

Re: Pre-NY open checklist: news, levels, max risk

Post by PTScalper »

When evaluating the 13:00 transition, the analysis must shift from directional bias to structural liquidity mapping on the 15-minute and Daily timeframes. London establishes the day's order flow footprint. NY’s primary function is typically either to mitigate inefficiencies (imbalances/fair value gaps) left behind by London's expansion or to sweep London’s structural highs/lows to trap late retail participants.

If London's range has exceeded 1 standard deviation of the 20-day Average Daily Range (ADR), the mathematical probability of a clean NY continuation drops to near zero. The tape isn't just "dead"—it is structurally exhausted. In these conditions, NY will almost exclusively print a mean-reverting chop or a shallow liquidity sweep.

The only acceptable NY engagement after a high-volume London session is an A+ liquidity sweep: watching NY pierce the London high/low, fail to sustain volume, and close back inside the range. Otherwise, flat and green is the most aggressive and profitable position you can hold.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 3027
Joined: Mon Jul 20, 2026 1:28 pm

Re: Pre-NY open checklist: news, levels, max risk

Post by PTScalper »

Pine Script: Institutional Liquidity & Volatility Matrix

This architecture is stripped of retail noise (no lagging moving averages or arbitrary oscillators). It is engineered strictly for raw price action, tracking Asian accumulation, London expansion, and NY sweeps.

It calculates the statistical exhaustion of the daily range using ADR Z-Scores and actively flags structural liquidity sweeps if NY attempts to run London's stops and fails.

Code: Select all

//@version=5
indicator("Institutional Liquidity Matrix & Z-Score [PA]", overlay=true, max_lines_count=100, max_boxes_count=100, max_labels_count=50)

// ==============================================================================
// PARAMETERS & MACROS
// ==============================================================================
grp_time = "Market Microstructure (Exchange Time)"
sess_asia = input.session("1800-0300", title="Asian Accumulation", group=grp_time)
sess_lon  = input.session("0300-0800", title="London Expansion", group=grp_time)
sess_ny   = input.session("0800-1200", title="NY Liquidity/Overlap", group=grp_time)

grp_quant = "Quantitative Exhaustion"
adr_len   = input.int(20, title="ADR Length", group=grp_quant)
z_thresh  = input.float(1.0, title="Exhaustion Z-Score (Range/ADR)", step=0.1, group=grp_quant)

grp_ui    = "Architecture & Visuals"
col_asia  = input.color(color.new(#808080, 90), title="Asia Box", group=grp_ui)
col_lon   = input.color(color.new(#2962ff, 85), title="London Box", group=grp_ui)
col_ny    = input.color(color.new(#d50000, 85), title="NY Box", group=grp_ui)
col_sweep = input.color(color.new(#ffaa00, 0), title="Sweep Marker", group=grp_ui)

// ==============================================================================
// TIME SERIES STATE
// ==============================================================================
in_asia = time(timeframe.period, sess_asia)
in_lon  = time(timeframe.period, sess_lon)
in_ny   = time(timeframe.period, sess_ny)

var float asia_h = na, var float asia_l = na, var box box_asia = na
var float lon_h  = na, var float lon_l  = na, var box box_lon  = na
var float ny_h   = na, var float ny_l   = na, var box box_ny   = na

var line line_lh = na, var line line_ll = na, var line line_lm = na

// ==============================================================================
// VOLATILITY & STATISTICAL METRICS
// ==============================================================================
float d_range = request.security(syminfo.tickerid, "D", high[1] - low[1])
float adr = ta.sma(d_range, adr_len)
float current_range = ta.highest(high, 100) - ta.lowest(low, 100) // Approximated intraday range 
float z_score = current_range / adr // Ratio of current expansion vs average

// ==============================================================================
// SESSION LOGIC & STRUCTURAL MAPPING
// ==============================================================================
// Asia (Accumulation)
if in_asia
    if not in_asia[1]
        asia_h := high, asia_l := low
        box_asia := box.new(bar_index, asia_h, bar_index, asia_l, border_color=na, bgcolor=col_asia)
    else
        asia_h := math.max(asia_h, high), asia_l := math.min(asia_l, low)
        box.set_top(box_asia, asia_h), box.set_bottom(box_asia, asia_l), box.set_right(box_asia, bar_index)

// London (Expansion / Manipulation)
if in_lon
    if not in_lon[1]
        lon_h := high, lon_l := low
        box_lon := box.new(bar_index, lon_h, bar_index, lon_l, border_color=na, bgcolor=col_lon)
    else
        lon_h := math.max(lon_h, high), lon_l := math.min(lon_l, low)
        box.set_top(box_lon, lon_h), box.set_bottom(box_lon, lon_l), box.set_right(box_lon, bar_index)
        current_range := lon_h - (na(asia_l) ? lon_l : math.min(asia_l, lon_l))

// NY (Mitigation / Sweep / Continuation)
var bool bear_sweep = false
var bool bull_sweep = false

if in_ny
    if not in_ny[1]
        ny_h := high, ny_l := low
        box_ny := box.new(bar_index, ny_h, bar_index, ny_l, border_color=na, bgcolor=col_ny)
        
        // Lock London Structural Lines
        float mid = (lon_h + lon_l) / 2
        line_lh := line.new(bar_index, lon_h, bar_index + 1, lon_h, color=color.gray, style=line.style_dashed)
        line_ll := line.new(bar_index, lon_l, bar_index + 1, lon_l, color=color.gray, style=line.style_dashed)
        line_lm := line.new(bar_index, mid, bar_index + 1, mid, color=color.gray, style=line.style_dotted)
        
        bear_sweep := false
        bull_sweep := false
    else
        ny_h := math.max(ny_h, high), ny_l := math.min(ny_l, low)
        box.set_top(box_ny, ny_h), box.set_bottom(box_ny, ny_l), box.set_right(box_ny, bar_index)
        line.set_x2(line_lh, bar_index), line.set_x2(line_ll, bar_index), line.set_x2(line_lm, bar_index)
        
        // Liquidity Sweep Detection (Wick outside London, close inside)
        if high > lon_h and close < lon_h and not bear_sweep
            label.new(bar_index, high, "Liq. Sweep\n▼", color=color.new(color.white, 100), textcolor=col_sweep, style=label.style_label_down, size=size.small)
            bear_sweep := true
            
        if low < lon_l and close > lon_l and not bull_sweep
            label.new(bar_index, low, "▲\nLiq. Sweep", color=color.new(color.white, 100), textcolor=col_sweep, style=label.style_label_up, size=size.small)
            bull_sweep := true

// ==============================================================================
// QUANTITATIVE TERMINAL (HUD)
// ==============================================================================
var table panel = table.new(position.top_right, 2, 7, bgcolor=color.new(#000000, 10), border_width=1, border_color=color.new(#333333, 0))

if barstate.islast
    color stat_col = z_score >= z_thresh ? color.red : color.green
    string stat_msg = z_score >= z_thresh ? "STATISTICAL EXHAUSTION" : "CAPACITY REMAINS"
    string sweep_msg = bear_sweep and bull_sweep ? "BOTH SIDES SWEPT" : bear_sweep ? "BUY-SIDE SWEPT" : bull_sweep ? "SELL-SIDE SWEPT" : "INTACT"
    
    table.cell(panel, 0, 0, "NY OPEN : STRUCTURAL MATRIX", text_color=color.white, text_halign=text.align_center, text_weight="bold", bgcolor=color.new(#1e222d, 0))
    table.merge_cells(panel, 0, 0, 1, 0)
    
    table.cell(panel, 0, 1, "20D Mean Variance (ADR)", text_color=color.gray, text_halign=text.align_left, text_size=size.small)
    table.cell(panel, 1, 1, str.tostring(adr / syminfo.mintick / 10, "#.0") + " p", text_color=color.white, text_halign=text.align_right, text_font_family=font.family_monospace)
    
    table.cell(panel, 0, 2, "Current Intraday Expansion", text_color=color.gray, text_halign=text.align_left, text_size=size.small)
    table.cell(panel, 1, 2, str.tostring(current_range / syminfo.mintick / 10, "#.0") + " p", text_color=color.white, text_halign=text.align_right, text_font_family=font.family_monospace)
    
    table.cell(panel, 0, 3, "Expansion Z-Score", text_color=color.gray, text_halign=text.align_left, text_size=size.small)
    table.cell(panel, 1, 3, str.tostring(z_score, "#.00"), text_color=stat_col, text_halign=text.align_right, text_weight="bold", text_font_family=font.family_monospace)
    
    table.cell(panel, 0, 4, "Tape Environment", text_color=color.gray, text_halign=text.align_left, text_size=size.small)
    table.cell(panel, 1, 4, stat_msg, text_color=stat_col, text_halign=text.align_right, text_weight="bold", text_size=size.small)
    
    table.cell(panel, 0, 5, "London Liquidity Status", text_color=color.gray, text_halign=text.align_left, text_size=size.small)
    table.cell(panel, 1, 5, sweep_msg, text_color=bear_sweep or bull_sweep ? col_sweep : color.gray, text_halign=text.align_right, text_weight="bold", text_size=size.small)
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 3027
Joined: Mon Jul 20, 2026 1:28 pm

Re: Pre-NY open checklist: news, levels, max risk

Post by PTScalper »

The Upgrades

Accumulation / Manipulation / Distribution Framing: The script now tracks the Asian session. Understanding where the NY/London overlap sits relative to the Asian accumulation block is vital for spotting true institutional distribution vs. mere algorithmic chop.

Expansion Z-Score: Instead of static percentages, it dynamically calculates the Z-Score (Ratio) of the current day's expansion against the 20-day mean variance. If that ratio hits >1.0 before 13:00, NY has no mathematical room to stretch without an outside macro catalyst.

Automated Sweep Detection: It actively monitors 15-minute structural breaks. If the NY overlap spikes above London's high but fails to close outside of it, it instantly prints a "Liq. Sweep" marker and updates the terminal, handing you your A+ setup on a silver platter.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
Post Reply