Prior-Day Range Trading: Opening Reversals and Execution Rules

Video: How Trading Like An Idiot Makes Me $1,000/Day (30 Minutes A Day)
Creator: Jdub Trades
Original Video: Watch the original video
Difficulty: Advanced

The Big Idea

Mark the prior trading range before the session begins, then let the opening price action determine whether the market is accepting prices outside that range or rejecting them. Jdub’s examples combine 15-minute context with lower-timeframe execution.

The title’s daily income and time commitment are promotional claims, not an expected outcome. Some examples develop beyond the opening half hour. The useful lesson is the decision sequence: location, reaction, trigger, invalidation, and target.

Map the Levels Before the Open

Begin with the previous day’s high and low. Define the session used to calculate them and keep that definition consistent. Regular-session and extended-hours ranges are different references. Premarket extremes can add context, but should be labeled separately.

During the opening 15 minutes, observe how price behaves around those levels. The completed first bar supplies a known opening high and low at 9:45 a.m. New York time. Those final values are not available earlier in that bar.

Separate Continuation From Rejection

ScenarioEvidence to investigateRisk reference
Continuation above the rangeAcceptance above the prior high, followed by a pullback that holds and a fresh bullish triggerThe pullback structure that should hold
Continuation below the rangeAcceptance below the prior low, a failed recovery, and a bearish triggerThe recovery high that should hold
Opening rejectionA probe outside the prior range followed by a return inside and a break of the rejection structureThe rejection extreme

A touch alone does not distinguish these scenarios. An extended gap below the prior low is not automatically a reason to short: the video also discusses a recovery toward that level after intraday structure turns upward. The same reference can be a continuation boundary or a reversal target depending on price location.

The Two-Bar Opening Reversal

One example uses an opening push near or above the prior high, followed by a bearish second 15-minute candle that rejects the area. A later break of that second candle’s low provides a potential short trigger. Protection belongs above the relevant rejection structure. The opposite sequence can frame a long near the prior low.

The second candle is complete at 10:00 a.m. Its final high and low cannot be used to trigger an earlier trade. A backtest that enters during that candle using its eventual range would use information unavailable at the time.

The source also shows five-minute pullbacks and lower highs. Those are separate execution choices. They should not be mixed into a two-bar test whenever doing so improves a historical outcome.

Measure Reward From the Actual Entry

For a hypothetical short triggered at 100, protected at 101, and targeting 98, planned reward is 2R before costs. A gap through the entry can change that ratio. Position size and acceptable risk must reflect the instrument, actual execution, and available liquidity.

The opposite side of the prior range is a reference, not a guaranteed destination. If the remaining distance is too small relative to the structural stop, there may be no trade.

Re-entry Is a New Risk Decision

The video includes a stopped trade followed by another entry while the broader idea remains intact. It also mentions an “84%” rule without supplying enough definitions or data to reproduce that probability. Treat it as an unverified claim.

A second trade needs its own trigger, stop, reward calculation, and place within a daily loss limit. With equal cash risk, a −1R loss followed by a +3R winner yields +2R before costs. Different sizing or worse execution changes that result. A profitable second example does not establish that repeated re-entry is beneficial.

Pine Script: A Narrow Research Model

Show Pine Script v6 research strategy

//@version=6
// Article: https://candlechasers.com/prior-day-range-opening-range-reversal/
// Research approximation: two-bar opening reversal only.
strategy("Prior-Day Range Opening Reversal — Research", overlay=true,
 initial_capital=25000, default_qty_type=strategy.fixed, default_qty_value=1,
 pyramiding=0, commission_type=strategy.commission.percent,
 commission_value=0.01, slippage=1,
 calc_on_every_tick=false, calc_on_order_fills=false)
if not timeframe.isminutes or timeframe.multiplier != 15
    runtime.error("Use a standard 15-minute US equity chart.")
minRR = input.float(1.0, "Minimum planned reward/risk", minval=0.1)
string tz = "America/New_York"
bool rth = not na(time(timeframe.period, "0930-1600:23456", tz))
bool first = rth and hour(time, tz) == 9 and minute(time, tz) == 30
bool second = rth and hour(time, tz) == 9 and minute(time, tz) == 45
bool expiry = rth and hour(time, tz) == 10 and minute(time, tz) == 15
bool last = rth and hour(time, tz) == 15 and minute(time, tz) == 45
var float dayH = na
var float dayL = na
var float priorH = na
var float priorL = na
var float openingH = na
var float openingL = na
var int bars = 0
var int candidates = 0
var int submitted = 0
var bool ready = false
float tick = syminfo.mintick
if barstate.isconfirmed
    if first
        strategy.cancel_all()
        // Require 26 observed regular-session bars for the previous day.
        ready := bars == 26
        priorH := ready ? dayH : na
        priorL := ready ? dayL : na
        dayH := high
        dayL := low
        bars := 1
        openingH := high
        openingL := low
    else if rth
        dayH := na(dayH) ? high : math.max(dayH, high)
        dayL := na(dayL) ? low : math.min(dayL, low)
        bars += 1
    if second and ready and strategy.position_size == 0
        bool shortSetup = math.max(openingH, high) >= priorH and close < priorH and close < open
        bool longSetup = math.min(openingL, low) <= priorL and close > priorL and close > open
        if shortSetup or longSetup
            candidates += 1
        if shortSetup
            float entry = low - tick
            float stop = math.max(high, priorH) + tick
            float target = priorL
            float risk = stop - entry
            if risk > 0 and target < entry and (entry - target) / risk >= minRR
                strategy.entry("Short", strategy.short, stop=entry)
                strategy.exit("Short bracket", "Short", stop=stop, limit=target)
                submitted += 1
        else if longSetup
            float entry = high + tick
            float stop = math.min(low, priorL) - tick
            float target = priorH
            float risk = entry - stop
            if risk > 0 and target > entry and (target - entry) / risk >= minRR
                strategy.entry("Long", strategy.long, stop=entry)
                strategy.exit("Long bracket", "Long", stop=stop, limit=target)
                submitted += 1
    if expiry
        // This runs at 10:30, after this bar has finished.
        strategy.cancel("Long")
        strategy.cancel("Short")
    if last
        strategy.cancel_all()
        strategy.close_all(comment="Regular close", immediately=true)
plot(priorH, "Previous full regular-session high", color=color.red, style=plot.style_linebr)
plot(priorL, "Previous full regular-session low", color=color.green, style=plot.style_linebr)
var table info = table.new(position.top_right, 1, 1)
if barstate.islast
    table.cell(info, 0, 0, "Prior full session: " + (ready ? "ready" : "not ready") +
     "\nCandidates: " + str.tostring(candidates) +
     "\nOrders submitted: " + str.tostring(submitted) +
     "\nClosed trades: " + str.tostring(strategy.closedtrades))

The optional strategy below models only an opening reversal. It is an original, explicit approximation, not a complete reproduction of Jdub’s discretionary approach. It requires a standard 15-minute US equity chart and a prior regular session containing 26 observed bars.

After the second opening bar closes, the model requires a probe of a prior-day boundary, a close back inside that boundary, and a candle body pointing toward the reversal. It submits a stop entry beyond that completed candle, protects beyond the candle and relevant prior boundary, and targets the opposite prior-day boundary. Minimum planned reward/risk defaults to 1. Unfilled entries expire at 10:30; positions are closed at the regular close. These filters, timing rules, and buffers are research assumptions.

Read the Test Before Trusting the Results

The strategy uses confirmed bars and builds prior-session levels only from previously observed bars. It requests no higher-timeframe data and does not backdate decisions. Order-fill recalculation is disabled. Those choices avoid the common future-data errors addressed here; they do not make simulated fills identical to live execution.

The example trades one share, includes illustrative commission and slippage, and uses the broker emulator’s stop-order behavior. A gapped entry can fill away from the planned trigger. Intrabar paths, simultaneous stop and target touches, and closing fills require particular care. The regular-close market exit is an optimistic timing assumption. Half days, missing bars, and non-US sessions are outside this model’s intended coverage.

The status table reports whether a prior full session is ready, candidate patterns, submitted orders, and closed trades. If there are no trades, first check the chart type and 15-minute timeframe, then load enough history. Zero candidates means the pattern was absent; candidates without submissions can indicate insufficient reward to the opposite boundary. An order submission does not guarantee a fill.

This code has not been compiled or run in TradingView here. Validate it there, inspect individual fills, and compare regular versus extended-hours chart settings before drawing conclusions. See TradingView’s official strategy documentation (paid link) for broker-emulator and execution assumptions.

Final Takeaway

The prior range supplies the map. Opening behavior supplies the scenario. A completed trigger and a defined invalidation turn that scenario into something you can test without relying on the day’s eventual outcome.

Risk Disclosure

This article is for educational purposes only and is not financial advice or a recommendation to buy or sell any security. Trading involves substantial risk, including loss of capital. Leverage can magnify losses, and stop orders do not guarantee an execution price. Examples and historical results do not predict future performance. Account for fees, spread, slippage, and your own financial circumstances before trading.

CandleChasers is independent of the video creator. This article provides educational analysis of the source material; it does not verify the creator’s earnings or endorse paid products.

As an Amazon Associate I earn from qualifying purchases.