Opening Range Breakout
How to enter an Opening Range Breakout (ORB) strategy in OptionsApp: the Max/Min Day Range condition, why it must be a Trigger, the exact parameters, and the mistakes that make it fire at the wrong time or not at all.
An entry rule that waits for the first minutes of the session to set a high and a low, then enters only when price breaks out of that range. In OptionsApp it is built with the Max/Min Day Range condition, used as a Trigger.
The range itself does nothing. What matters is the moment the breakout happens, and that is why the condition must be a Trigger, not a Filter.
OptionsApp is separate software that we do not build or control. This guide is based on its released feature documentation and its Entry & Exit Conditions page, which remain the source of truth for current product behaviour.
The Engine's OptionsApp export carries EMA and VIX gap conditions for the catalog strategies. It does not write a Day Range condition. If your own backtest uses an ORB entry, you add the condition inside OptionsApp by hand, then verify it on paper first.
What does the condition do?
OptionsApp records the highest and lowest reference price of the underlying over a window you define. The window starts a number of minutes after the 09:30 ET open (Start Delay) and lasts a number of one-minute candles (Duration). The result is a Max Day Range and a Min Day Range value that a condition can compare against the live minute close.
Backtesting platforms usually define ORB narrowly: the range is always the first few minutes after the open. OptionsApp is more general. Its documentation states that any day range can be measured, whether it starts right at the open or later in the session. The classic ORB is just the special case where Start Delay is zero.
| Direction | Condition in OptionsApp | Reference value |
|---|---|---|
| Long breakout | SPX Close(Minute) > Max Day Range | High |
| Short breakout | SPX Close(Minute) < Min Day Range | Low |
Start Delay 0, Duration 30, Reference High, condition SPX Close(Minute) > Max Day Range. Prices are illustrative.
Original Cashflow Engine diagram based on the mechanics in OptionsApp's feature documentation.
Why must it be a Trigger?
A Filter is evaluated once, at the strategy's execution time, and cancels the entry if it is false at that moment. A Trigger watches a time window and fires when the condition changes from false to true. A breakout is an event, not a state, so OptionsApp's own documentation says the Day Range condition is generally only useful as a Trigger.
If you set it as a Filter, the check runs exactly once at the execution time. Unless the market happens to be outside the range at that minute, nothing enters, and the day is over for that strategy. The Filter-vs-Trigger dropdown is on the right of the condition editor. The mechanics are described on the connection page.
How do I set it up?
- Step 1
Build the Trade Template
Create the trade you want to enter on the breakout: legs, strikes, 0 DTE, premium or delta target, width, and the P&L Actions (stop loss, profit target). The template is independent of the ORB logic. For a put spread, remember the offset is negative.
- Step 2
Create the Strategy
Create a strategy, link the template, set trading days, quantity and expiry. Set its execution time no earlier than the end of the measurement window, for example 10:00 ET for a 09:30–10:00 range.
- Step 3
Add an Entry Condition of type Trigger
Open the strategy's Entry Conditions, add a condition and choose Trigger in the type dropdown, not Filter.
- Step 4
Build the condition left to right
Underlying SPX, left side SPX Close(Minute), operator > for a long breakout or < for a short breakout, right side Max Day Range (long) or Min Day Range (short).
- Step 5
Set the range parameters
Start Delay = minutes after 09:30 ET before measuring starts (0 for the classic ORB). Duration = length of the measurement window in one-minute candles. Reference = High for a long breakout, Low for a short breakout.
- Step 6
Set the trigger window
Exec. Time is when the window opens, Exec. Timeout when OptionsApp stops waiting. Set Max Exec. to 1 so a second breakout does not open a second trade.
- Step 7
Tick the entry-state option
Enable 'Activate if condition is met at entry' if the trade should also enter when price is already outside the range at the moment the window opens. OptionsApp describes this as the way to mirror a backtester's ORB logic.
- Step 8
Run it on paper
Activate the strategy on an IBKR paper account and watch the dashboard. The scheduled trade should show the Day Range condition it is waiting on, and the fill should land in the minute of the first breakout.
What do the parameters mean?
| Parameter | What it does | Classic ORB (09:30–10:00) | OptionsApp's own example (10:30–12:30) |
|---|---|---|---|
| Start Delay | Minutes after the 09:30 ET open before measuring starts | 0 | 60 |
| Duration | Length of the measurement window, in one-minute candles | 30 | 120 |
| Reference | Which candle value builds the range: Open, Close, High or Low | High (long) / Low (short) | High |
| Operator | > compares against Max Day Range, < against Min Day Range | > for long | > |
The trigger window has its own settings, which come from OptionsApp's general Entry & Exit Conditions page:
| Setting | What it does | Note |
|---|---|---|
| Exec. Time | When the trigger window opens | Not earlier than the end of the measurement window |
| Exec. Timeout | When OptionsApp stops waiting for the breakout | Late enough for the setup, early enough for the trade to have time to work |
| Max Exec. | How many times the trigger may fill if the condition re-triggers | 1 for a one-shot ORB |
| Activate if condition is met at entry | Enter at once if the condition is already true when the window opens | On, if you want the backtester-style behaviour |
| Retry after trade canceled | Retry the entry if the first order is cancelled while the trigger is still active | Optional |
OptionsApp's documentation does not spell out what Max Day Range holds while the measurement window is still running. Do not rely on it: keep the execution time at or after Start Delay + Duration, so the range is fully measured before the trigger starts watching.
Long and short: one strategy or two?
Two. A long breakout and a short breakout need different trades, for example a call-side structure on the way up and a put-side structure on the way down. A single condition can only carry one comparison, and one strategy is linked to one template. Build one strategy per direction, each with its own template and its own Day Range trigger.
Both strategies can fire on the same day if price breaks the high first and the low later. If your backtest allowed only one entry per day, that is a difference you have to accept or manage by hand, because Max Exec. counts per strategy, not across strategies.
Mirroring a backtested ORB
If you bring an ORB rule over from a backtest, map it like this:
| In the backtest | In OptionsApp |
|---|---|
| Range = first N minutes after the open | Start Delay 0, Duration N |
| Breakout on close above the range high | SPX Close(Minute) > Max Day Range, Reference High, Trigger |
| Breakout on close below the range low | SPX Close(Minute) < Min Day Range, Reference Low, Trigger |
| Entry allowed until time T | Exec. Timeout T |
| Enter immediately if already broken out at window start | Activate if condition is met at entry |
| One trade per direction per day | Max Exec. 1, one strategy per direction |
Then compare the live entry minutes on paper against the backtest's entry minutes for a few days before scaling quantity.
Common mistakes
- Filter instead of Trigger. The most common one. The entry checks once and never fires.
- Wrong time zone. The range is measured from the 09:30 ET open. A VPS on Berlin time measures the wrong minutes. See the connection page pre-flight list.
- Execution time inside the measurement window. The trigger starts watching before the range exists.
- Max Exec. left above 1. Price can cross the range high several times in a choppy session, and each cross is a new false-to-true transition.
- Reference Close instead of High/Low. A range built from closes is narrower than one built from highs and lows, and it breaks out earlier.
- Confusing it with Intraday Movement. That condition measures the distance from the opening price to the current price. It does not track the session's high and low. Related, but not an ORB.
Frequently Asked Questions
- Is there a menu item called Opening Range Breakout in OptionsApp?
- No. The feature is the entry condition Max/Min Day Range. OptionsApp's documentation names Opening Range Breakout as the special case where Start Delay is zero.
- Can I use the Day Range condition as an exit?
- Yes. OptionsApp allows it as an exit condition too, for example to close when price breaks the other side of the range. Exit conditions are always Triggers and are executed with market orders.
- Which candle does the breakout use?
- The one-minute close of the underlying. The condition compares SPX Close(Minute) against the range value, so a wick above the range high without a close above it does not fire.
- Does the Engine export write this condition for me?
- No. The export carries EMA and VIX gap conditions for the catalog strategies. A Day Range condition is added by hand inside OptionsApp.
- Can one strategy trade both the upside and the downside breakout?
- No. One strategy holds one template and one comparison. Build one strategy for the long breakout and one for the short breakout.
- What if the market is already outside the range when the window opens?
- By default a Trigger waits for a false-to-true transition, so it would not fire. Enable 'Activate if condition is met at entry' to enter at once in that case.
Terms & Definitions
- Opening Range
- The high and low of the underlying over the first minutes of the session, here measured over Duration one-minute candles starting Start Delay minutes after 09:30 ET.
- Max Day Range
- The highest reference value recorded inside the measurement window; the long breakout level.
- Min Day Range
- The lowest reference value recorded inside the measurement window; the short breakout level.
- Trigger
- An OptionsApp condition type that watches a time window and fires when the condition changes from false to true.
- Filter
- An OptionsApp condition type that is checked once at the execution time and cancels the entry if false.
- Exec. Timeout
- The end of a Trigger's waiting window; after it, the entry is no longer attempted for that day.
Related pages
- OptionsApp — Overview
- Connecting TWS & IBKR
- Strike Distance Condition
- Export to OptionsApp
- OptionsApp's feature documentation
Mandatory pit stop: Options trading involves significant risks and is not suitable for every investor. Past results are no guarantee of future performance.
Get the weekly 0DTE research email
Research notes and product updates, straight to your inbox. Unsubscribe anytime.
