High-probability session liquidity sweep & momentum breakout system capturing early European session volatility
Requires a clearly defined Asian range with a minimum width (e.g., at least 15 pips for Forex, 3.5 USD for XAUUSD) to avoid over-trading in hyper-compressed, choppy markets. Avoid trading on days with high-impact central bank rate decisions or major macro events (NFP, CPI) occurring right at the London open. Spreads must be tight; utilize ECN/STP brokers to minimize slippage during the initial breakout candle.
Validate every condition prior to executing order.
Asian session compressed in a clean 25-pip band between 1.27250 (Low) and 1.27500 (High). At 07:15 UTC, an M15 candle closed above the range at 1.27508. Long order triggered on next bar open at 1.27520 with Stop Loss anchored at Asian Low (1.27250, 27 pips risk). European institutional volume expanded price smoothly to reach the 1:2.0 Target (1.28060, +54 pips) within 90 minutes without invalidation.
Price broke above Asian range high on initial London open surge at 07:30 UTC, triggering a long position at 1.08520 with stop at 1.08250. However, the breakout candle printed an exhaustive upper wick. Two bars later, unscheduled ECB commentary catalyzed an aggressive reversal that swept through Asian session lows, hitting the stop for a controlled -1.0R loss as dictated by risk parameters.
Copy code directly into TradingView Pine Editor
//@version=5
strategy("London Breakout Strategy (Quant Audited) [FXSnipers]",
overlay=true,
initial_capital=10000,
currency=currency.USD,
default_qty_type=strategy.percent_of_equity,
default_qty_value=10,
commission_type=strategy.commission.cash_per_contract,
commission_value=3.5,
slippage=12)
// --- Session Inputs (Explicit UTC Timezone) ---
asianSessionInput = input.session("0000-0700:1234567", "Asian Range Window (UTC)")
londonSessionInput = input.session("0700-1100:1234567", "London Active Entry Window (UTC)")
timezoneInput = input.string("UTC", "Timezone Mode")
riskReward = input.float(2.0, "Risk to Reward Ratio", minval=1.0, step=0.5)
riskPerTradePct = input.float(1.0, "Risk Per Trade (% of Equity)", minval=0.1, maxval=5.0)
minRangePips = input.float(15.0, "Min Asian Range (Pips)", minval=5.0)
// --- Convert Pips to Ticks ---
pipSize = syminfo.mintick * 10
minRangePrice = minRangePips * pipSize
// --- Session Time Filtering ---
inAsianWindow = not na(time(timeframe.period, asianSessionInput, timezoneInput))
inLondonWindow = not na(time(timeframe.period, londonSessionInput, timezoneInput))
// --- Asian High / Low Tracking ---
var float asianHigh = na
var float asianLow = na
var bool tradeTakenToday = false
// Reset daily session tracking at start of Asian window
if inAsianWindow and not inAsianWindow[1]
asianHigh := high
asianLow := low
tradeTakenToday := false
else if inAsianWindow
asianHigh := math.max(asianHigh, high)
asianLow := math.min(asianLow, low)
// --- Visual Range Bands ---
plot(asianHigh, "Asian High", color=color.new(color.blue, 20), linewidth=2, style=plot.style_line)
plot(asianLow, "Asian Low", color=color.new(color.red, 20), linewidth=2, style=plot.style_line)
rangeMidpoint = (asianHigh + asianLow) / 2
plot(rangeMidpoint, "Asian Midpoint", color=color.new(color.gray, 50), style=plot.style_cross)
// --- Breakout Execution Criteria ---
rangeWidth = asianHigh - asianLow
isValidRange = rangeWidth >= minRangePrice
// Close outside range during active London session
longBreakout = inLondonWindow and not tradeTakenToday and isValidRange and (close > asianHigh) and (close[1] <= asianHigh)
shortBreakout = inLondonWindow and not tradeTakenToday and isValidRange and (close < asianLow) and (close[1] >= asianLow)
// --- Order Sizing & Execution ---
if longBreakout and strategy.position_size == 0
float sl = asianLow
float riskDistance = close - sl
if riskDistance > 0
// Correct position sizing: Risk % of Equity on Stop Loss
float riskAmount = (strategy.equity * (riskPerTradePct / 100))
float contractSize = riskAmount / (riskDistance / syminfo.mintick * syminfo.pointvalue)
float tp = close + (riskDistance * riskReward)
strategy.entry("Long Breakout", strategy.long, qty=contractSize)
strategy.exit("Exit Long", "Long Breakout", stop=sl, limit=tp)
tradeTakenToday := true
if shortBreakout and strategy.position_size == 0
float sl = asianHigh
float riskDistance = sl - close
if riskDistance > 0
float riskAmount = (strategy.equity * (riskPerTradePct / 100))
float contractSize = riskAmount / (riskDistance / syminfo.mintick * syminfo.pointvalue)
float tp = close - (riskDistance * riskReward)
strategy.entry("Short Breakout", strategy.short, qty=contractSize)
strategy.exit("Exit Short", "Short Breakout", stop=sl, limit=tp)
tradeTakenToday := true
// Close open trades if outside session end or end of day
if not inLondonWindow and inLondonWindow[1]
// Optional session expiration rule
na
GBPUSD and EURUSD are historically the most reliable due to high liquidity and distinct Asian-to-London volume expansion. XAUUSD (Gold) also performs exceptionally well due to high session range expansion.
Require a full M15 candle close outside the range boundary rather than a wick pierce, and ensure the Asian range width meets a minimum pip threshold to guarantee underlying market pressure.
No. High-impact economic news releases at or immediately following the London open can cause erratic price action that invalidates technical range boundaries.
The core edge of the London Breakout Trading Strategy model relies on the structural imbalance created when large market participants (commercial banks, liquidity providers, and central clearing desks) aggregate retail stop orders. Rather than anticipating trend continuation from arbitrary retail indicators, this systematic model identifies pre-existing liquidity pools—such as session highs/lows, Asian range extremes, or equal highs/lows (EQH/EQL)—where retail stop losses are heavily clustered.
Once a targeted liquidity sweep occurs and price aggressively rejects back inside the defined equilibrium range, an order flow displacement is confirmed through a Market Structure Break (MSB) or Change of Character (CHoCH). This sequence establishes asymmetric risk-to-reward parameters, allowing traders to enter with tight structural stops positioned outside the invalidated sweep candle.
Higher timeframe (H4/Daily) structural bias must always govern lower timeframe (M15/M5/M1) execution. Trading with the prevailing institutional order flow drastically reduces whipsaws during choppy session opens.
Always factor in spread expansion during high-impact news releases (CPI, NFP, FOMC) and daily 5:00 PM EST session rollover. Never enter within 15 minutes before Tier-1 macroeconomic events.
Move stop loss to break-even once price reaches 1.0R–1.5R target expansion or mitigates an opposing Fair Value Gap (FVG), neutralizing risk on active positions.
To successfully navigate proprietary trading evaluation stages without breaching maximum daily drawdown (typically 4%–5%) or maximum overall loss limits (8%–10%), this model must be deployed with disciplined position sizing:
On a $100,000 challenge account, limit single trade exposure to $500. This ensures you can survive a theoretical 6-trade drawdown streak while consuming less than 3% of your daily buffer.
If two consecutive setups trigger stop-loss invalidations within the same trading session, trading must be suspended for the remainder of that session to avoid revenge trading and emotional capital destruction.
Discretionary traders can execute this system manually using our pre-trade checklist above, while quantitative and algorithmic traders can deploy the Pine Script logic or connect directly to automated trading software:
Discover compiled MT4/MT5 Expert Advisors executing systematic order blocks around the clock.
Mirror institutional setups automatically into your MT4/MT5 broker account with zero latency.
Access 20+ verified institutional systems across Asian, London, and New York trading sessions.
Quant Note: Theoretical baseline backtest simulated across EURUSD and GBPUSD M15 charts. Includes 1.2 pip fixed slippage/spread model and $3.50/lot commission deduction. Win rate of 51.8% yields a 1.68 Profit Factor due to breakeven stop mitigations on whipsaw sessions.
Download a clean, printer-friendly 1-page cheatsheet containing all entry/exit rules and the checklist for your trading desk.
Open Print / PDF ViewSubscribe to receive verified Pine Script algorithms, quantified backtests, and fresh pre-trade checklists directly to your inbox every week.
Download the complete quantitative guide: Position Sizing Formulas, Prop Firm Drawdown Rules, and MQL5 Parameter Cheat Sheets.