ORB Breakout
An opening-range breakout for MNQ, with its full backtest export shown — equity curve, per-period breakdown, and drawdown.
An opening-range breakout: it marks the range set just after the session open, then trades the first clean break of that range, manages the position to a fixed target or a protective stop, and goes flat before the close. No overnight risk, one contract at a time. It doesn’t trade every session — only when a clean break forms, about 0.9 times a session on average.
Everything below this line is derived from the NinjaTrader 8 backtest export included in the download — the equity curve, the per-period breakdown, and the drawdown are read straight from the trade log and reconciled against NinjaTrader’s own summary when this page is built. Nothing here is typed in by hand.
The evidence
MNQ · 15-minute · 1/1/2021 → 9/4/2026 · commission incl. + 1 tick slip
Drawdown — underwater curve
| Net profit (per contract) | $22765.70 |
|---|---|
| Profit factor | 1.35 |
| Win rate | 64.77% |
| Avg. per trade | $17.79 |
| Max drawdown | −$1,642 |
| Total trades | 1280 |
NinjaTrader 8 performance summary
| Performance | All trades | Long trades | Short trades |
|---|---|---|---|
| Total net profit | $22,765.70 | $12,719.36 | $10,046.34 |
| Gross profit | $88,558.56 | $47,545.72 | $41,012.84 |
| Gross loss | ($65,792.86) | ($34,826.36) | ($30,966.50) |
| Commission | $2,380.80 | $1,300.14 | $1,080.66 |
| Profit factor | 1.35 | 1.37 | 1.32 |
| Max. drawdown | ($1,641.82) | ($1,205.26) | ($1,627.12) |
| Sharpe ratio | 0.60 | 0.51 | 0.36 |
| Sortino ratio | 1.60 | 1.06 | 0.82 |
| Ulcer index | 0.01 | 0.01 | 0.02 |
| R squared | 0.98 | 0.95 | 0.94 |
| Total Fees | $0.00 | $0.00 | $0.00 |
| Probability | 0.00% | 0.02% | 0.16% |
| Start date | 1/1/2021 | ||
| Start time | 12:00 AM | ||
| End date | 9/4/2026 | ||
| End time | 12:00 AM | ||
| Total # of trades | 1,280 | 699 | 581 |
| Percent profitable | 64.77% | 64.09% | 65.58% |
| # of winning trades | 829 | 448 | 381 |
| # of losing trades | 451 | 251 | 200 |
| # of even trades | 0 | 0 | 0 |
| Total slippage | 617 | 339.5 | 277.5 |
| Avg. trade | $17.79 | $18.20 | $17.29 |
| Avg. winning trade | $106.83 | $106.13 | $107.65 |
| Avg. losing trade | ($145.88) | ($138.75) | ($154.83) |
| Ratio avg. win / avg. loss | 0.73 | 0.76 | 0.70 |
| Max. consec. winners | 13 | 13 | 18 |
| Max. consec. losers | 7 | 5 | 5 |
| Avg. # of trades per day | 0.90 | 0.49 | 0.41 |
| Avg. time in market | 133.61 min | 152.90 min | 110.40 min |
| Avg. bars in trade | 8.60 | 9.93 | 7.00 |
| Profit per month | $335.44 | $187.59 | $148.03 |
| Max. time to recover | 109.17 days | 141.17 days | 277.80 days |
| Longest flat period | 6.05 days | 15.96 days | 20.82 days |
| Avg. MAE | $97.64 | $94.26 | $101.70 |
| Avg. MFE | $123.48 | $121.39 | $125.99 |
| Avg. ETD | $105.70 | $103.20 | $108.70 |
The complete report as NinjaTrader exports it — All, Long, and Short trades; losses in red.
In-sample vs out-of-sample
| In-sample 2021-01-04 → 2024-06-28 | $18.42/trade · PF 1.38 · t 3.82 · n 789 |
|---|---|
| Out-of-sample 2024-07-01 → 2026-09-04 | $16.77/trade · PF 1.29 · t 2.47 · n 491 |
Out-of-sample validation — settings were locked on the in-sample block, then run once on the held-out out-of-sample block. That held-out run is the real test: an overfit system fails it.
Example trades
Every figure here is reproducible from the included NinjaScript source.
These results are based on simulated or hypothetical performance results that have certain inherent limitations. Unlike the results shown in an actual performance record, these results do not represent actual trading. Also, because these trades have not actually been executed, these results may have under-or over-compensated for the impact, if any, of certain market factors, such as lack of liquidity. Simulated or hypothetical trading programs in general are also subject to the fact that they are designed with the benefit of hindsight. No representation is being made that any account will or is likely to achieve profits or losses similar to those shown.
What you control
Nothing's a black box — every part is a labeled, adjustable input. The tuned, out-of-sample-validated settings ship with the source.
- The opening range — which part of the session defines it
- Entries — how a breakout has to qualify before it trades
- Profit target & stop — both set in points
- In-trade risk — how the stop is managed as a trade works
- Session — latest entry time and flat-by-close
- Position size — contracts per trade
Reproducibility — re-run it yourself
- Data series
- MNQ · 15-minute · Last
- Date range
- 1/1/2021 → 9/4/2026
- Session
- Regular session · flat by close
- Commission
- $1.86 / round-turn (incl.)
- Slippage
- 1 tick
Validation dossier
The full method, the per-year breakdown, and the findings we tested and broke.
What you get
- OrbBreakV2.csfull editable source
- OrbBreakV2.zipone-click NinjaScript import
- NT8_Results/the exact CSV exports this page is built from
Install
- 01
Import the strategy
In NinjaTrader, Tools → Import → NinjaScript Add-On… and select OrbBreakV2.zip.
- 02
Add it to a chart
Open an MNQ 15-minute chart, right-click → Strategies → OrbBreakV2, then enable it.
- 01
Copy the source
Place OrbBreakV2.cs in Documents/NinjaTrader 8/bin/Custom/Strategies.
- 02
Compile
Open the NinjaScript Editor and press F5 to compile, then add the strategy to a chart.
Assumptions & limitations
- Fills are modeled on a 1-minute series — finer than the 15-minute chart — but not tick-level. NinjaTrader does not hold tick data for this instrument before 2025, so on older trades a fill inside the minute can still differ from live.
- Commission is modeled at a generalized $1.86 per round-turn — deliberately above the cheapest lifetime-brokerage rate, so the results don't lean on rock-bottom commissions. Your own rate depends on your broker and plan.
- One contract, one position at a time, flat by session close — no overnight risk.
- The parameters were optimized on the in-sample period, then validated on a held-out out-of-sample block (see the validation dossier). Optimization carries overfitting risk; the out-of-sample test — where the edge held at about 90% of in-sample — is the check on it.
- Built and validated specifically for MNQ and one session window — purpose-tuned for this market, not a one-size-fits-all system.
Support
Typical response within 1 business day.
Covered
- Install & compile help
- Parameter questions
- Bug fixes in the shipped code
Not covered
- Custom modifications (→ Upwork)
- Trade signals or advice
- Broker / data-feed setup
14-day fix-or-refund if it doesn't work as described — source-available, so it covers genuine defects, not a change of mind.
FAQ
What exactly do I get for $250?
The complete, editable NinjaScript source (OrbBreakV2.cs), a one-click .zip you can import into NinjaTrader 8, and the exact backtest export every number on this page is built from. Install and compile help is included, and it's a one-time purchase — no subscription, no license server.
Can I read and change the code, or is it locked down?
You get the full source, unobfuscated — no compiled DLL, no license key, no phone-home. Read it, edit it, and tune the parameters to your own risk. The only thing you can't do is resell or redistribute it.
Will it run on my prop-firm or evaluation account?
It's a standard NinjaTrader 8 strategy, so it runs on any NT8 chart — live, Sim, or a prop-firm account that uses NinjaTrader. It doesn't depend on a particular broker or data feed. We can't speak to any individual firm's rules on automation, so confirm those with your provider.
Are the results on this page live trading or a backtest?
A backtest. Every figure is derived from the included NinjaTrader 8 historical export and reconciled against NinjaTrader's own summary when the page is built — it is not a live or forward track record, and past simulated results do not predict future performance. The exact assumptions (fills, commission, slippage) are listed on the page.
How much capital do I need to trade one contract?
Size for the drawdown, not the average trade. The worst drawdown the backtest produced is shown — with its disclaimer — in the evidence section above; plan your account around that figure with headroom, and trade in Sim until your own fills match the report. We don't set a required minimum for you — that's your risk decision.
How often does it trade?
Selectively. It only takes a trade when a clean breakout of the opening range forms — on average a little under once per session — and it sits out sessions that never set up. It trades one contract at a time and is flat before the close, so there is no overnight risk.
Can I run it on ES, NQ, or a different timeframe?
The code will load on other instruments, but it was built and validated specifically for MNQ on the 15-minute chart — that is the only market the evidence on this page covers. Running it elsewhere would need re-tuning and its own validation, which is custom work (I take that on via Upwork).
Do I get updates?
Yes. You get the version you buy plus any fixes to it, and you can re-download the latest at any time. Meaningful changes ship under a new version number, so you always know what you're running.
What support is included?
Install and compile help, questions about the parameters, and bug fixes in the shipped code — answered personally, usually within one business day. Custom modifications, broker or data-feed setup, and anything resembling trade signals or advice are out of scope.
What if it doesn't work?
There's a 14-day fix-or-refund policy: if it doesn't install, compile, or run as described, email support and we'll fix it — or, if we genuinely can't, refund you. Because the source is included, refunds cover real defects, not a change of mind.