Opening-Range Reversal: Daily Bias, ATR Expansion, and the Response Candle

Video: Trading Felt Impossible Until I Found This ONE Candle Strategy
Creator: The Rumers
Original Video: Watch the original video
Difficulty: Intermediate

The Big Idea

A large opening move can create a reversal candidate without establishing that a reversal must occur. The source combines a daily directional reference, an unusually large initial range, and a smaller-timeframe response. Each layer has a separate job: permission, qualification, and timing.

The Three Steps

StepSource ruleQuestion answered
Daily biasObserve price relative to a 50-day SMAWhich direction should receive preference?
Opening expansionWait for the first fifteen minutes, then compare its high-low range with 25% of daily ATRWas the initial move large enough to qualify?
ResponseUse a five-minute opposing candle that takes out the preceding candle’s extremeHas price begun responding against the opening move?

The source favors buying a selloff when the asset is above the daily average and selling a rally when it is below. That is a directional heuristic. Price above an average does not independently prove accumulation, nor does price below it reveal who is distributing inventory.

The transcript also suggests larger risk and targets in the favored direction. Do not automatically increase a monetary risk budget because an average agrees. Any sizing adjustment needs its own tested rule and portfolio limits.

Wait Until the Opening Range Is Known

The first fifteen-minute candle must finish before its final high and low are available. On a five-minute chart, three complete bars form the initial measurement. Entering during the first bar based on the eventual fifteen-minute range would use information that does not yet exist.

The range includes wicks. It is different from the candle body, the net change from its open, and the overnight gap. Keep those quantities separate when deciding whether the 25% threshold was reached.

ATR Is Not a Directional Forecast

Average true range summarizes true ranges over a lookback. True range can incorporate gaps relative to the previous close; it is not simply the average open-to-close move. Nor does an ATR value promise that price will travel that distance upward or downward today.

The source does not specify a numerical ATR length. The indicator uses fourteen daily periods as an explicit implementation choice, taking the previous completed daily value so today’s final range cannot influence the morning qualification.

For a daily ATR of 21.20, the threshold is 21.20 × 0.25 = 5.30 price units. A qualifying eight-point opening range is about 37.7% of that ATR. This describes scale, not the probability or timing of a recovery.

Worked Example: Range, Trigger, Fill, Risk

Fictional long reversal candidate

Assume the asset remains above a known daily 50 SMA of 190.00. These prices are hypothetical.

StepCalculation or observationMeaning
Opening measurementOpen 200.00; high 201.00; low 193.00; close 194.00A bearish opening candle with an eight-point high-low range.
QualificationPrior daily ATR 21.20; 25% threshold 5.30Eight points exceeds the chosen threshold.
Later responseA bullish five-minute close at 195.40 clears the previous red bar’s highA completed response becomes available.
Hypothetical fillEntry 195.80; protective reference 192.90Price risk is 2.90 per unit before costs.
Origin objectiveOpening price 200.00Reward 4.20, approximately 1.45R; the earlier signal-close plan offered different economics.

With a 250-unit monetary price-risk budget and 2.90 risk per unit, simple division permits no more than 86 whole units before costs and affordability constraints. A larger default order would exceed the assumed budget even though the pattern qualifies.

The Source’s Engulfing Trigger Is a Specific Simplification

The lesson calls for one opposing candle to take out the previous candle’s extreme. That is not necessarily the same as a textbook body-engulfing definition. Decide whether the trigger means an intrabar high crossing, a completed close beyond the high, or another precise event.

The source illustrates entering at the crossing rather than waiting for the full five-minute close. The indicator intentionally waits for a completed close beyond the preceding opposing bar’s extreme. It therefore reacts later and can miss a fast recovery. That difference is disclosed rather than disguised as the exact original execution.

For the bullish case, a protective reference beneath the relevant low tests whether the rejection has failed. A stop instruction cannot guarantee execution at that reference, particularly around fast moves, gaps, and thin markets.

What Is the Target Actually Measuring?

The initial example looks for recovery toward the opening move’s origin. The transcript later broadens the discussion to delayed impulses and gap-inclusive moves, whose origins differ. A gap-fill objective is not automatically the same price as the regular-session open.

Choose the origin before measuring the trade. Moving it backward to a prior close after the opening target has already been reached changes the thesis and holding requirement. A larger target may offer more nominal reward while being less likely to occur before invalidation.

Later Variants Need Separate Records

The source shows a move occurring about an hour after the open and another involving a gap plus an opening decline. They illustrate a broader expansion-and-response idea. They do not satisfy exactly the same measurement rule as the first fifteen-minute candle alone.

The supplied indicator isolates the opening-only version. If you investigate a delayed or gap-inclusive version, define the start, end, ATR comparison, trigger, and objective separately. Combining all attractive examples under one label can hide substantial differences in the conditions.

A Practical Preparation Card

  1. Instrument and session: specify the market open, timezone, and available chart data.
  2. Daily reference: use a value whose timing is known; do not import the day’s final result into its opening.
  3. Range: wait for three complete opening five-minute bars and include wicks.
  4. Threshold: compare range with the fixed prior daily ATR fraction.
  5. Response: apply the chosen intrabar or close-confirmed rule consistently.
  6. Economics: record available entry, invalidation, origin objective, and total exposure.

A candidate with no response remains a candidate. A response after price has already recovered the original objective may leave no usable trade. The rule should be allowed to produce no entry.

Pine Script Indicator

View Pine Script Indicator Code
//@version=6
// Guide: https://candlechasers.com/opening-range-reversal-daily-atr-bias/
// Independent educational approximation. Confirmed observations, no simulated orders.
indicator("CC Opening Range Reversal Map", overlay=true)
if not (timeframe.isminutes and timeframe.multiplier == 5)
    runtime.error("Use standard 5-minute candles for the 15-minute opening range and 5-minute response.")
zone = input.string("America/New_York", "Opening-window timezone")
openingWindow = input.session("0930-0945", "Opening 15-minute window")
fraction = input.float(0.25, "Opening range / prior daily ATR minimum", minval=0.01, step=0.05)
regular = ticker.new(syminfo.prefix, syminfo.ticker, session.regular)
[dailyMA, dailyATR] = request.security(regular, "D", [ta.sma(close, 50)[1], ta.atr(14)[1]], lookahead=barmerge.lookahead_on)
inOpening = not na(time(timeframe.period, openingWindow, zone))
var float openingHigh = na
var float openingLow = na
var float openingOpen = na
var float openingClose = na
var int bars = 0
var bool locked = false
var bool used = false
bool buy = false
bool sell = false
if barstate.isconfirmed
    if timeframe.change("D")
        openingHigh := na
        openingLow := na
        openingOpen := na
        openingClose := na
        bars := 0
        locked := false
        used := false
    if inOpening
        if bars == 0
            openingOpen := open
        openingHigh := na(openingHigh) ? high : math.max(openingHigh, high)
        openingLow := na(openingLow) ? low : math.min(openingLow, low)
        openingClose := close
        bars += 1
    if not inOpening and inOpening[1] and bars == 3
        locked := true
    if locked and not used and not inOpening and openingHigh - openingLow >= dailyATR * fraction
        buy := close >= dailyMA and openingClose < openingOpen and close[1] < open[1] and close > open and close > high[1] and close < openingOpen
        sell := close < dailyMA and openingClose > openingOpen and close[1] > open[1] and close < open and close < low[1] and close > openingOpen
        if buy or sell
            used := true
plot(dailyMA, "Prior completed daily 50 SMA", color=color.orange)
plot(locked ? openingHigh : na, "Frozen opening high", color=color.red, style=plot.style_linebr)
plot(locked ? openingLow : na, "Frozen opening low", color=color.green, style=plot.style_linebr)
plot(locked ? openingOpen : na, "Opening origin reference", color=color.blue, style=plot.style_linebr)
plotshape(buy, title="Confirmed bullish opening response", style=shape.triangleup, location=location.belowbar, color=color.lime)
plotshape(sell, title="Confirmed bearish opening response", style=shape.triangledown, location=location.abovebar, color=color.red)
alertcondition(buy, "Bullish opening reversal candidate", "CC: completed opening-range reversal candidate on {{ticker}} 5m.")
alertcondition(sell, "Bearish opening reversal candidate", "CC: completed bearish opening-range reversal candidate on {{ticker}} 5m.")
var table status = table.new(position.top_right, 1, 3, bgcolor=color.new(color.black, 15))
if barstate.islast
    ratio = not na(openingHigh) and dailyATR > 0 ? (openingHigh - openingLow) / dailyATR : na
    table.cell(status, 0, 0, locked ? "Opening 15m range locked" : "Waiting for three opening 5m bars", text_color=color.white)
    table.cell(status, 0, 1, "Range / prior daily ATR: " + str.tostring(ratio, "#.###"), text_color=color.white)
    table.cell(status, 0, 2, used ? "One response already marked today" : "Waiting for qualified close", text_color=color.white)

What This Indicator Shows

The indicator runs on standard five-minute candles. It builds and freezes a three-bar opening range, default 09:30–09:45 New York time, and compares it with 25% of the previous completed daily ATR(14). The daily 50 SMA is also confirmed from the prior daily bar. Current confirmed chart price is compared with that reference for permission.

A bullish candidate requires a bearish opening range, current price at or above the daily reference, and a bullish close above the preceding red bar’s high while still below the opening origin. Shorts mirror it. One response is marked per chart day. These strict close and state choices are ours.

What This Indicator Does Not Show

It does not trade intrabar, add delayed impulses, count overnight gaps in the opening range, or reproduce gap-fill variants. It does not detect accumulation or manipulation. No order, stop, target fill, or outcome is simulated. Missing opening bars prevent a valid three-bar measurement; use the correct timezone and session data.

Setup, Alerts, and Validation

  1. Add: paste the complete script into Pine Editor, save, and add it to a standard-candlestick chart.
  2. Configure: follow this guide’s timeframe, direction, and session requirements. Load enough history for the longest lookback and pivot delay.
  3. Inspect: check the reference plots and status table. A strict rule can correctly produce no signals; a visible line or status helps distinguish that from missing data.
  4. Alert: select the relevant named condition and Once Per Bar Close. Recreate alerts after changing inputs.

Validation status: formulas, historical references, state rules, and HTML/code preservation were reviewed statically. The indicator has not been compiled or chart-tested in TradingView here. Live alerts, browser copying, and responsive rendering have not been tested. No simulated orders, fills, or measured performance results are claimed.

Practice and Research

  1. Expansion threshold: compare opening-range fractions of 0.20, 0.25, and 0.30 using an unchanged daily reference and response definition.
  2. Timing cost: use genuine lower-timeframe data to compare crossing-based observation with close confirmation. Do not infer the early entry from a completed five-minute candle.
  3. Variant separation: keep opening-only, delayed-impulse, and gap-inclusive samples distinct. Compare first-touch sequences and actual risk before pooling results.

Check Your Understanding

Does ATR predict today’s direction? No. It is a range-based scale.

Is a gap part of the opening candle’s high-low range? Not automatically; it is a different measurement.

Can waiting for a close alter the trade? Yes. It changes information timing, entry price, and potentially the remaining reward.

Final Takeaway

Treat the opening expansion as qualification, daily context as permission, and the response as timing. Keep each variant and its origin explicit before evaluating the actual entry economics.

Risk Disclosure

This guide is for education and research, not personalized financial advice or a recommendation to trade any security or contract. Trading can cause substantial losses, and leveraged products may produce losses beyond the amount initially committed. Short selling can involve unlimited loss. Stops and displayed prices do not guarantee execution; gaps, spread, slippage, fees, liquidity, halts, and platform interruptions can materially affect outcomes. Historical charts, indicators, hypothetical calculations, and creator-reported results do not establish future performance. Understand the instrument, execution assumptions, and total exposure, practice before risking capital, and use only risk capital you can afford to lose.

CandleChasers provides independent educational analysis and is not affiliated with, endorsed by, or sponsored by the source creator or any platform mentioned.

As an Amazon Associate I earn from qualifying purchases.