The Opening Range Breakout, broken down bar by bar
A clean breakdown of how the first 15 minutes of the cash session set the day's tone — and how to trade the break without getting trapped.
The Opening Range Breakout is the most-traded setup in equities for a reason: it's mechanical, it respects price discovery, and on trend days it pays in the first hour. It's also the setup that most retail traders get wrong, because they treat the range like a magic line instead of a probability gate.
Here's how we actually trade it.
What the opening range is — and isn't
The opening range (OR) is the high and low printed during the first N minutes of the regular session. The standard windows traders use:
- 5-minute OR — tightest, most signal, most false breaks
- 15-minute OR — the desk standard, our default
- 30-minute OR — slower, but cleaner on choppy days
The range is not a prediction. It's a frame. It tells you the bracket the market chose during liquidity discovery — and a clean break of that bracket on volume is the market telling you a side is committed.
Entry rules we actually use
Three filters, in order:
- Break-and-hold, not break-and-touch. We need a 1-minute close beyond the OR high (or low), not just a wick.
- Volume confirmation. Volume on the break bar must be above the 20-bar moving average. No volume = no commitment.
- No reclaim within 3 bars. If price re-enters the OR within three 1-minute bars, the break is dead.
That's the entire entry. No magic, no MACD, no 7-input "filter."
Stops and targets
- Stop: opposite side of the OR, or 0.75× ATR(14), whichever is tighter.
- First target: 1R — scale 50%.
- Runner: trail under the 5-minute swing low for longs.
If you don't hit 1R within the first 30 minutes after the break, the setup is decayed. Take it off and look for the next thing.
Why our script ships with three windows
The 5/15/30 minute opening ranges all give different signals. Our Opening Range Pulse plots all three on the same chart and tags only the bars that satisfy the volume + close-beyond criteria above. That keeps the chart usable instead of looking like a kid's coloring book.
//@version=5
indicator("ORB confirmation", overlay=true)
session = input.session("0930-0945", "Range window")
inRange = not na(time(timeframe.period, session))
var float orH = na
var float orL = na
if inRange and not inRange[1]
orH := high
orL := low
if inRange
orH := math.max(orH, high)
orL := math.min(orL, low)
confirmedLong = ta.crossover(close, orH) and volume > ta.sma(volume, 20)
confirmedShort = ta.crossunder(close, orL) and volume > ta.sma(volume, 20)
plotshape(confirmedLong, style=shape.triangleup, color=color.green, location=location.belowbar)
plotshape(confirmedShort, style=shape.triangledown, color=color.red, location=location.abovebar)
That's the heart of the indicator. The shipped version adds session filtering, alert routing, and a "no reclaim" guard — but if you're rolling your own, the snippet above gets you 80% of the way.
The trade-off you're really making
ORB works when the day trends. It chops you up on rotational, no-news Fridays. Two ways to thin out those losses:
- Skip the open on FOMC days until 2:30pm. The 9:30 range is meaningless.
- Require a same-direction overnight bias. If futures are flat and ES sat in a 10-point range overnight, the day-time edge on a 9:45 break is much weaker.
That's it. One setup, three filters, two skip rules. Boring. Repeatable. Tradeable.
Keep reading
CPI day: the four 5-minute bars that actually matter
How to trade CPI release mornings without getting whipsawed — and the historical edge hiding in the first 20 minutes after 8:30 AM.
Earnings IV crush: the post-print drift is where the money is
Why trading earnings options into the print is a coin flip — and what to do the morning after instead.
VWAP reclaim: the cleanest mean-reversion setup nobody talks about
Why VWAP works, how to size a reclaim trade, and the one filter that separates the live trades from the chop.