Skip to content
NinjaQuanta
Strategy

ORB Breakout

An opening-range breakout for MNQ, with its full backtest export shown — equity curve, per-period breakdown, and drawdown.

v2.0.0 Updated Sep 7, 2026

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

OOS 2024-07-01 → 2026-09-04 Trades 1280 ✓ commission incl.
$0$5k$10k$15k$20k$25k202120222023202420252026OOS →
Cumulative net profit per contract across 1280 trades, divider marks the start of the out-of-sample period.

Drawdown — underwater curve

−$2k−$1k$0
How far below its prior peak the account sat, day by day. The deepest point — the maximum drawdown — was about $1,642 per contract.
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 tradesLong tradesShort 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.351.371.32
Max. drawdown ($1,641.82)($1,205.26)($1,627.12)
Sharpe ratio 0.600.510.36
Sortino ratio 1.601.060.82
Ulcer index 0.010.010.02
R squared 0.980.950.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,280699581
Percent profitable 64.77%64.09%65.58%
# of winning trades 829448381
# of losing trades 451251200
# of even trades 000
Total slippage 617339.5277.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.730.760.70
Max. consec. winners 131318
Max. consec. losers 755
Avg. # of trades per day 0.900.490.41
Avg. time in market 133.61 min152.90 min110.40 min
Avg. bars in trade 8.609.937.00
Profit per month $335.44$187.59$148.03
Max. time to recover 109.17 days141.17 days277.80 days
Longest flat period 6.05 days15.96 days20.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

winner
An example winning trade on MNQ.
loser
An example losing trade on MNQ.

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.

Read →

What you get

  • OrbBreakV2.csfull editable source
  • OrbBreakV2.zipone-click NinjaScript import
  • NT8_Results/the exact CSV exports this page is built from

Install

  1. 01

    Import the strategy

    In NinjaTrader, Tools → Import → NinjaScript Add-On… and select OrbBreakV2.zip.

  2. 02

    Add it to a chart

    Open an MNQ 15-minute chart, right-click → Strategies → OrbBreakV2, then enable it.

  1. 01

    Copy the source

    Place OrbBreakV2.cs in Documents/NinjaTrader 8/bin/Custom/Strategies.

  2. 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.

$250 · one-time Order by email