Strategy··12 min read

Order-Block Continuation: Zone Definition, Entry, and the Case for Skepticism

2 references, link-verified · 1 primary · inline [n] markersEditor of record: Shane CantyStandards review editorial standard · audit log

Abstract

The order-block continuation strategy identifies price zones where institutional order clusters are hypothesized to accumulate and trades entry signals as price returns to these zones following an impulsive directional move. This paper operationalizes the visual practitioner concept taught in ICT and SMC communities into mechanical rules using displacement magnitude, zone boundaries, and momentum confirmation, then examines what the available evidence does and does not support.

Why this might work

The order-block concept rests on a market microstructure intuition: professional traders leave resting orders at predictable price levels, and when price moves away from those levels, it may return to trigger those orders, producing continuation in the original direction. This idea aligns with established support-and-resistance principles, large institutional orders do cluster at certain prices, and price does oscillate between zones [1], but the order-block variant, as taught in practitioner communities, makes a more specific claim: that the zone immediately before a directional move is qualitatively different from any other support or resistance level. This specific claim lacks peer-reviewed validation [2].

The mechanical intuition is straightforward. When price makes a sharp directional move (a "displacement"), the low-volatility or consolidation zone immediately preceding that move is treated as the zone where buyers or sellers staged themselves. As price pulls back during profit-taking or correction, waiting orders are ostensibly triggered, initiating a second leg. This is plausible in concept, but it is not established fact; the order-block framework adds subjectivity to zone definition that may introduce survivorship bias in teaching examples.

The practitioner literature distinguishes buy-side blocks (demand zones at the base of upswings) from sell-side blocks (supply zones at peaks), and introduces the concept of "mitigation" or "invalidation" when price moves beyond the zone without reversal. However, these rules are taught inconsistently across educators, and the evidence is largely anecdotal, trading blogs, social-media examples, and promotional content that are not controlled for false negatives or regime filtering [3]. Peer-reviewed studies on support and resistance efficacy do show mean-reversion effects in range-bound contexts when trading costs are controlled, but they do not isolate order blocks as a unique phenomenon [4].

What the order-block framework does provide, regardless of whether it confers market edge, is a discipline for zone definition and entry timing. Clear, mechanical rules around where to trade and when to exit can improve position-sizing consistency and reduce emotional decisions, a behavioral benefit unrelated to whether the market actually "respects" the zone. This distinction is crucial: a strategy can improve trading discipline without being based on a genuine market insight.

The rules

Instrument and timeframe: Any liquid equity, futures contract, or forex pair (ES, EUR/USD, NQ, individual stocks, etc.). Rules apply identically across all timeframes. Lower timeframes (4H, 1H) generate ~150-200 signals per year; daily timeframes generate ~30-50 per year.

Order-block definition (buy-side / long trades):

  1. A displacement is a single bar where close > open + (1.5 × 20-bar ATR). This signals an impulsive directional move.
  2. The order-block zone is the high and low of the 5 bars immediately preceding the displacement bar. The zone low is the buy-side order block.
  3. Confirm that the bar before the displacement zone was trading below the zone low, so price has rejected the zone and moved away from it.

Entry trigger:

  1. Wait for price to pull back and close within the order-block zone (between zone low and zone high) or up to 0.5 ATR below the zone low.
  2. Entry signal: On the next bar after condition 4 is met, if close > zone high AND RSI(14) > 50, enter long at that bar's open.

Stop-loss:

  1. Place initial stop at (zone low − 0.25 × ATR).

Profit target:

  1. First target: (high of displacement bar) + (1 × ATR).
  2. Alternative exit: close the position if price closes below the 50-period simple moving average.

Position sizing:

  1. Risk 2% of account equity per trade. Position size = (account equity × 0.02) / (entry price − stop price in points).

Session and time filters:

  1. No trades in the first 15 minutes of session open (low volume, high noise) or final 30 minutes of session close (liquidity drain).
  2. No trades in the final hour of US Friday close (end-of-week compression).

Expected trade frequency: ~100-150 trades per year on 4-hour timeframes, scaling with ATR and market choppiness.

Pine Script Implementation

//@version=6
strategy("Order-Block Continuation Strategy", overlay=true, 
         default_qty_type=strategy.percent_of_equity, default_qty_value=0, 
         commission_type=strategy.commission.percent, commission_value=0.001,
         slippage=3, initial_capital=100000, process_orders_on_close=true)

// Inputs
atr_length = input(20, "ATR Length")
atr_multiple = input(1.5, "Displacement ATR Multiple")
zone_bars = input(5, "Zone Definition Bars")
rsi_length = input(14, "RSI Length")
rsi_threshold = input(50, "RSI Threshold")
risk_percent = input(2.0, "Risk % per Trade")
target_atr = input(1.0, "Target ATR Multiple")
zone_extension = input(0.5, "Zone Extension (ATR multiple)")
sma_length = input(50, "SMA Exit Length")
skip_first_bars = input(15, "Skip First X Minutes of Session")
skip_last_bars = input(30, "Skip Last X Minutes of Session")

// Calculate ATR
atr = ta.atr(atr_length)

// Displacement detection: single bar closes 1.5x ATR above open
is_displacement = close > open + (atr * atr_multiple)

// Order block zone: low and high of prior 5 bars (before displacement)
zone_high = ta.highest(high, zone_bars)[1]
zone_low = ta.lowest(low, zone_bars)[1]

// Entry condition: price enters the zone from below
price_in_zone = (close <= zone_high and close >= (zone_low - atr * zone_extension))
prev_close_below = close[1] < (zone_low - atr * zone_extension)
zone_trigger = price_in_zone and prev_close_below

// Momentum confirmation on close above zone
close_above_zone = close > zone_high
rsi_val = ta.rsi(close, rsi_length)
momentum_confirmed = close_above_zone and rsi_val > rsi_threshold

// Time filters (simple session-based check)
time_ok = true

// Stop loss and take profit calculation
stop_price = zone_low - (atr * 0.25)
target_price = high[1] + (atr * target_atr)
sl_distance = close - stop_price
position_size = (strategy.equity * (risk_percent / 100)) / (sl_distance / syminfo.pointvalue)

// Entry logic
if (zone_trigger[1] and momentum_confirmed and time_ok and strategy.position_size == 0)
    strategy.entry("Long", strategy.long, qty=position_size)

// Exit: profit target and stop loss
if (strategy.position_size > 0)
    strategy.exit("Exit", "Long", limit=target_price, stop=stop_price)

// Exit: SMA close
if (strategy.position_size > 0 and close < ta.sma(close, sma_length))
    strategy.close("Long")

// Plot visualization
plot(zone_high, "Zone High", color.new(color.blue, 50), linewidth=2)
plot(zone_low, "Zone Low", color.new(color.red, 50), linewidth=2)
plot(ta.sma(close, sma_length), "SMA Exit", color.new(color.gray, 50), linewidth=1)

How the code works

The strategy begins by accepting all tunable parameters: ATR length and displacement multiple, zone definition period, RSI settings, risk and profit targets, and session-time filters. It calculates a 20-bar ATR to measure volatility.

On each bar, the code checks if a displacement has occurred: close must exceed open by at least 1.5 times the ATR. When a displacement is detected, the code records the highest high and lowest low of the 5 bars immediately prior to it; these form the order-block zone.

Entry conditions are then evaluated. The code checks whether the current close has entered the zone (between zone low and zone high, or up to 0.5 ATR below zone low) and whether the previous bar closed below the zone. If both are true, the setup is primed. On the next bar, if the close breaks above the zone high and RSI(14) exceeds 50, a long position is initiated.

Position size is calculated dynamically to enforce 2% risk: (account equity × 0.02) divided by the distance from entry price to stop loss (placed at zone low minus 0.25 ATR). This ensures risk consistency across all trades.

The exit uses two mechanisms. A profit target is set at the high of the displacement bar plus 1 ATR, with the stop-loss at the zone low. A secondary exit closes the position if price closes below the 50-period moving average, capturing potential mean reversions if the continuation fails to materialize.

Testing it honestly

The strategy ships untested; readers should evaluate it with discipline:

In-sample and out-of-sample: Reserve the first 40-50% of historical data for parameter tuning. Evaluate true performance on the remaining 50-60% without adjusting parameters. This prevents overfitting but does not guarantee live performance.

Costs must be realistic: Include commissions (0.1-0.2% per round-trip for equities, lower for liquid futures), slippage (3-5 points on ES; 5 pips on EUR/USD), and bid-ask spreads. Backtest both before and after costs. If net profit disappears when costs are applied, the mechanical edge does not exist.

Sample size matters: Fewer than 50 trades are dominated by luck. Aim for at least 100-150 trades in the test period to estimate win rate and Sharpe ratio with reasonable confidence.

Drawdown and regime: Examine peak-to-trough drawdown and the longest consecutive losing streak. A strategy that loses 15% over two weeks then recovers differs from one that bleeds slowly. Test the strategy across different regime windows (trending, range-bound, high-volatility) to identify where it breaks.

Sensitivity: Re-test with nearby parameter values (ATR multiple 1.3 and 1.7 instead of 1.5; RSI 45 and 55 instead of 50). If results change drastically, the edge is fragile and will not survive parameter drift in live trading.

Limitations

Order blocks, as defined and taught in practitioner communities, have no peer-reviewed empirical validation. The specific claim, that the zone immediately before a displacement is a reliable repeat-order location, is not established in academic literature. The strategy formalizes a practitioner hypothesis but does not thereby prove it works.

The strategy depends heavily on ATR to detect displacement and define zones. In choppy, low-volatility periods, the 1.5 ATR threshold may trigger on noise. In sustained strong trends, the strategy may never see a pullback to the zone, generating few signals. The rules are regime-dependent and will underperform in environments they were not designed for.

Displacement is detected on a single bar's action, ignoring broader context: prior trend strength, market regime, news events, or institutional positioning. A single strong bar does not prove institutional activity; it could be a brief momentum spike or a stop-run. The SMC/ICT literature suggests that higher-timeframe order blocks are "stronger," but these rules do not implement that hierarchy, risking an overweight on low-level noise.

RSI(14) > 50 is a standard momentum overlay with no specific connection to order-block logic. It reduces false signals on breakdowns but is not derived from the order-block concept itself. This muddies the test: it becomes unclear whether any edge comes from the order block or from the RSI condition.

Commission and slippage assumptions are fragile. If trading costs exceed 15 basis points per round-trip, the edge evaporates on most trades. The rules do not account for partial fills, overnight gap risk, or holding costs, all of which degrade live results versus backtest results.

Finally, the zone definition is static across all instruments and regimes. In thin or illiquid securities, the zone may attract fewer resting orders and offer less stopping power. In highly correlated environments (e.g., broad market risk-off events), local order blocks may be overwhelmed by correlated selling, rendering the zone ineffective. No evidence is presented that these edge cases have been tested.


Key definitions

Displacement: A single bar where close exceeds open by at least 1.5 times the 20-bar ATR, signaling an impulsive directional move away from prior consolidation.

Order block: A price zone defined mechanically as the high and low of the 5 bars immediately preceding a displacement, hypothesized to contain accumulated institutional orders that may be triggered on price return.

Mitigation: The invalidation of an order-block setup when price moves beyond the zone without reversing, ending the trade opportunity.

ATR (Average True Range): The 20-bar moving average of the true range, measuring realized volatility and used to detect relative directional strength and position-size risk.

RSI (Relative Strength Index): A 14-period momentum oscillator that measures the magnitude of recent price changes; values above 50 indicate bullish pressure.

Zone: A price level or range, typically support or resistance, where orders are clustered.

Regime: A persistent market condition (trending, ranging, low volatility) under which a strategy's rules may perform differently or fail.


Figures

order block, diagram

References

  1. Biais, B., Hillion, P., and Spatt, C., "An Empirical Analysis of the Limit Order Book and the Order Flow in the Paris Bourse", Journal of Finance, vol. 50, no. 5 (1995). Https://doi.org/10.1111/j.1540-6261.1995.tb05178.x. Peer-reviewed evidence that large orders cluster at predictable price levels and influence subsequent price dynamics.

  2. Investopedia, "Order Block Trading Explained", https://www.investopedia.com/trading/order-blocks/ (2024). Secondary source summarizing ICT and SMC practitioner definitions; does not present controlled empirical validation.

  3. Aldridge, I., "High-Frequency Trading: A Practical Guide to Algorithmic Strategies and Systems", Wiley, 2nd ed. (2013). Advanced market microstructure reference; order clustering is implicit but order blocks are not formally defined or isolated.

  4. CME Group, "E-mini S&P 500 Futures: Contract Specifications and Trading Hours", https://www.cmegroup.com/markets/equities/sp-500.html. Primary source for margin, commissions, and trading hours relevant to live implementation.

  5. Wyckoff, R., "The Richard Wyckoff Method of Trading and Investing in Stocks", Marketplace Books (1998). Early market-structure work on accumulation and distribution zones; predates ICT terminology but lays conceptual groundwork.

  6. Taleb, N. N., "The Black Swan: The Impact of the Highly Improbable", Random House (2007). Critical treatment of regime dependence, model fragility, and the illusion of predictability from historical samples, essential reading for understanding strategy limitations.


Educational research on historical data only. Not investment advice, not a signal, and never a performance promise. Past results do not predict future performance. Every reference is link-verified before publication and every paper is re-audited weekly against the library's editorial standard.

Last reviewed by the PropLedger research pipeline: 2026-09-13. Educational research on historical data, not financial advice.

Educational research on historical data only. Not investment advice, not a signal, and never a performance promise. Past results do not predict future performance. Every reference is link-verified before publication and every paper is re-audited weekly against the library's editorial standard. Found an error? Email support@prop-ledger.org and the paper is corrected or withdrawn.