Suite / Range Engine
SuiteFree private beta

Range Engine Range breakout probability indicator for NinjaTrader 8

by FlowForged Analytics

Range probability calls for ES, NQ, YM, RTY, GC and CL, measured on up to twenty years of futures history.

NinjaTrader 8ES · NQ · YM · RTY · GC · CL5m · 15m · 60mNo repaintMulti-Chart Relay
On this page
  1. On the chart
  2. Out-of-sample results
  3. Quick info
  4. What it does
  5. Purpose
  6. Why choose it
  7. Built on the data
  8. Key capabilities
  9. Setup guide
  10. FAQ
  11. Works well with
  12. Conclusion
CL crude oil, 15-minute. Green ranges were called UP and red ranges DOWN, each with its probability at formation. A check marks a call that resolved in the predicted direction, an X one that did not. Tap to enlarge.
HistoryOut-of-sample replay · May 2019 to October 2026

Tested on 613,865 calls from data it had never seen

Out-of-sample results. Each chart’s probability tables were fitted on history up to a cut-off date, and Range Engine was then replayed on every range after it, on all 14 charts. Each call is scored at the probability the chart showed. In all three tiers, calls resolved in the predicted direction more often than the chart stated.

65%+ calls
71.9%
Stated 69.6% · ▲ 2.3 points
269,126 ranges · what the chart shows by default
70%+ calls
75.0%
Stated 72.8% · ▲ 2.2 points
117,730 ranges · 44% of the 65%+ calls
75%+ calls
78.9%
Stated 77.1% · ▲ 1.8 points
25,815 ranges · 10% of the 65%+ calls
8 of 8calendar years, 2019 to 2026, with every tier at or above its stated probability
6 of 6markets with every tier at or above its stated probability
13 of 14charts with every tier at or above its stated probability. RTY 60-minute ran under its stated probability.
Open the full History By call strength, year by year, market and session

Hypothetical results. These figures come from replaying Range Engine on historical data. They were not recorded live. Hypothetical or simulated performance results have certain limitations. Unlike an actual performance record, simulated results do not represent actual trading. Also, since the trades have not been executed, the results may have under- or over-compensated for the impact, if any, of certain market factors, such as lack of liquidity. Simulated 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 profit or losses similar to those shown. A range that resolved in the predicted direction is not a winning trade: results depend on your entry and stop.

Quick info

Platform
NinjaTrader 8 on Windows
Concept
Measured odds on which way a new range resolves
Designed for
Futures traders who work ranges and want to know which side comparable ranges have broken
Best used when
A new range forms and you are deciding whether the level you are watching is worth taking
Markets
ES and NQ at 5, 15 and 60 minutes; YM, RTY, GC and CL at 15 and 60 minutes; micros through the Viewer
Data
Up to 20 years of one-minute history per market, tested out-of-sample on 613,865 calls (History)
Access
Part of the FlowForged Suite, free during the private beta

What Range Engine does

Range Engine finds the active price range on your chart and, the moment a new range forms, states the probability that it resolves upward or downward.

That number is a measured frequency. For each market and timeframe, every range in up to twenty years of one-minute history was recorded with the conditions it formed under and how it resolved. When a new range forms, Range Engine looks up how ranges like it have resolved and writes the answer on the range.

The call never changes after it is issued. When price resolves out of the range, the box freezes, dims, and earns a green check or a red X, so the chart keeps its own score as you scroll back.

ES, 60-minute. The hourly ranges in their own color pair, so the timeframe reads from color alone when both run on one chart.

Purpose

Most range tools show you where the range is and leave the hard question to you: which side is it likely to break? Range Engine answers that question with the record instead of a hunch, the same way every time.

It gives you a consistent way to:

  • See the odds on every new range the moment it forms
  • Thin the chart down to the calls strong enough to matter
  • Get an alert when a call clears your threshold, without watching the screen
  • Check how the calls have been running on the market you trade

Why choose it

Range Engine is built so you can trust what is on the chart.

  • Measured on each market's own history. ES, NQ, YM, RTY, GC and CL are each measured separately, never borrowed from one another.
  • Tested out-of-sample. Each market and timeframe was fit on history up to a cut-off date, then tested on the years after it, data the engine had never seen. See every call in the History tab
  • No repaint. Calls are computed from closed bars and fixed the moment the range forms.
  • Frozen, not re-fit. The measurements ship frozen, so the same range in the same conditions gets the same call today that it got in the fit. The 5-minute ES and NQ calls are refreshed monthly.
  • It keeps score in public. Checks and X marks use fixed colors that are never restyled, so how the calls are running is always visible.
  • Light on your platform. It reads standard minute bars. No Order Flow+, no Level 2 and no Tick Replay needed.

Built on the data

Range Engine is the suite's statistical core. ES, NQ and YM history runs from 2006, crude from 2008, and gold and RTY from 2017. ES and NQ each carry hundreds of thousands of ranges across the three timeframes.

20yrsof one-minute ES, NQ and YM history, 2006 to today
500K+ranges measured on each of ES and NQ across three timeframes
6marketsES, NQ, YM, RTY, GC and CL, each measured on its own history
0repaints: every call is fixed when its range forms

UP 75% means ranges like this one resolved upward about three times in four across the record. Measured frequencies describe what comparable ranges have done. They are not a forecast of what price does next, and not a trade recommendation.

GC, 15-minute, with FF Session Levels. Gold is measured on its own history from 2017 and reads the same way as the index futures.

Key capabilities

  • A call on every range at formation, with the probability on the called side
  • Multi-chart relay: the engine runs on small 5, 15 and 60-minute background charts, and your 1-minute execution chart draws every range and call with no engine or extra data series of its own. How the relay works
  • Checks and X marks that record each outcome in fixed colors
  • Context adjustment that refines each call for the conditions the range formed in, set from the same research as the probabilities
  • A render gate that draws only calls at or above 65, 70 or 75%, cycled from the toolbar
  • Formation alerts at your own threshold, once per range, live bars only, with a sound picker
  • A month-to-date panel with the live call and this month's calls by tier
  • Full line and color styling, with a color pair per timeframe
  • The unified FlowForged toolbar pill, the suite-wide Master Switch and a Strategy Builder series
NQ, 60-minute. The live range called UP 76%, three resolved ranges behind it with their checks, and the month-to-date count in the panel.

How to set up Range Engine in NinjaTrader 8

  1. Open a minute chart of a supported market: ES or NQ at 5, 15 or 60 minutes, or YM, RTY, GC or CL at 15 or 60 minutes, on the default CME session template (opens 18:00 ET).
  2. Add FF Range Engine from the Indicators window and keep Calculate on bar close. It checks the bar grid on load and tells you if the template does not match.
  3. Pick a role. Leave Standalone to compute and draw on this chart, or run Publish on small background charts and Viewer on your execution chart, including a 1-minute chart with Tick Replay.
  4. Alerts are off by default. To hear calls, turn on Enable alerts in Alerts, set the threshold (70% by default) and choose a sound.
  5. On the chart toolbar, cycle the gate (ALL, 65, 70, 75) and switch history, reference lines, labels and the panel to taste.

New to NinjaTrader add-ons? The install guide covers importing, Tick Replay and common fixes.

Range Engine FAQ

Does Range Engine need Order Flow+ or Tick Replay?

No. It reads standard minute bars, so it needs no Order Flow+, no Level 2 and no Tick Replay.

Which markets and timeframes does it cover?

ES and NQ on 5, 15 and 60-minute charts, and YM, RTY, GC and CL on 15 and 60-minute charts. The micros (MES, MNQ, MYM, M2K, MGC and MCL) are covered through the Viewer, which maps each micro to its parent.

Does Range Engine repaint?

No. Calls are computed from closed bars and fixed the moment the range forms. They are never revised.

Can I see the ranges on my 1-minute execution chart?

Yes. Run Publish on small background charts at a supported timeframe and Viewer on your execution chart, including a 1-minute chart with Tick Replay. The Viewer runs no engine and adds no data series.

Is the probability a forecast?

No. It is a measured frequency: how comparable ranges resolved across the record, which runs from 2006 for ES, NQ and YM, 2008 for crude, and 2017 for gold and RTY. It describes what those ranges did, not what price does next, and it is not a trade recommendation.

Has Range Engine been tested on data it never saw?

Yes. Each chart’s probability tables were fitted on history up to a cut-off date, and Range Engine was then replayed on every range after it. The History tab shows all 613,865 of those calls by call strength, year, market and session. They are hypothetical results from a replay, not live trading.

Works well with

Conclusion

Range Engine is not a signal generator, and it does not predict where price goes next. It tells you what comparable ranges have done, measured on years of each market's own history, and then shows you on your own chart how those calls are running. Use it as context for the level you are already watching:

  • See the odds the moment a range forms
  • Skip the ranges that don't clear your bar
  • Let the checks and X marks show you how it is running

Range Engine is in the free private beta

It ships as part of the FlowForged Suite for NinjaTrader 8. The beta is free; request access and we'll email you when it's ready.

Futures trading involves substantial risk and is not for every investor. Measured frequencies describe what comparable ranges have done in the past and are not indicative of future results. Range Engine is an analytical tool, not trading advice.

On this page
  1. How to read it
  2. Indicator features
  3. Multi-chart relay
  4. Alerts
  5. Display settings
  6. Line settings
  7. Toolbar
  8. Markets and requirements

How to read it

One range, one call, one outcome. Each range is fixed the moment it forms and its call is issued at that same moment, once. The only thing that changes later is the mark that records what happened.

UP 75%

Color is the call

Green means the engine called the range to resolve upward, red downward. The number is the probability on the called side.

Line style is the state

A solid box is the range in force, extending right with every bar. A dashed, dimmed box has already resolved.

DOWN 76%✗

The mark is the outcome

A green check trails a call that resolved in the predicted direction, a red X one that did not. These colors are never restyled.

A range's life

Formation

A new range is established and its call is issued, once.

Open

The range stays in force and extends right. The call does not move.

Resolution

Price resolves out of the range. The box freezes, dims and earns its check or X.

Next range

A new range takes over with its own call, and the cycle repeats.

Indicator features

Calls at formation

The probability that a new range resolves up or down, stated the moment it forms and never revised. The call is refined for the circumstances the range formed in, and the alert names the figure before adjustment.

NQ, 15-minute, with FF Session Levels. Calls at formation, checks and X marks on the resolved ranges.

Outcome marks

Every resolved range carries its check or X. Turn on resolved ranges and scroll back to see how the calls have been running on your market.

NQ, 60-minute. The live range called UP 76%, three resolved ranges behind it with their checks, and the month-to-date count in the panel.

Render gate

Ranges whose call is weaker than the gate are not drawn at all, so the chart shows only the calls worth looking at. The panel still names the live call when the gate hides its box. Rendering only: alerts and the month's counts are never filtered by it.

CL, 60-minute. A range called DOWN 70% that resolved in the predicted direction, and a live call sitting below the 65% gate: named in the panel, not drawn.

Month-to-date panel

A fixed corner panel shows the live call, this month's calls by tier in both directions, and the state of the gate. The tiers default to 75%+ and 70%+. Hide the panel and the count keeps running.

GC, 15-minute, with FF Session Levels. Gold reads the same way as the index futures.

Multi-chart relay

The engine needs a 5, 15 or 60-minute chart; your execution chart is probably a 1-minute with Tick Replay. The relay lets each do its job. Small background charts publish their ranges, and a viewer on your execution chart draws them. The viewer runs no engine and adds no data series, which makes it safe on Tick Replay.

PUBLISHES 5-minute background chart
PUBLISHES 15-minute background chart
PUBLISHES 60-minute background chart
VIEWERYour MES or ES 1-minute chart, any timeframe
LIVELOADSTALECACHED
0) Multi-chart relay
RoleStandalone

Standalone computes and draws on this chart. Publish computes here and broadcasts to viewers; run it on a small 5, 15 or 60-minute background chart. Viewer draws the ranges published for this instrument on any chart timeframe.

Relay channel overrideblank = auto

Blank uses the instrument's root, with micros mapped to their parents (MES to ES, MNQ to NQ, MYM to YM, M2K to RTY, MGC to GC, MCL to CL). Set it only for an unusual pairing; publisher and viewer must then use the same text.

Viewer: show 5m / 15m / 60m ranges5m off · 15m on · 60m off

Which relayed timeframes the viewer draws. Coarser timeframes draw first and heavier, finer ones on top and lighter, so nesting reads at a glance.

Viewer: stale after (seconds)10

How long a viewer waits without hearing from its publisher before it marks that timeframe STALE. Publishers check in about once a second while data is flowing. While a publisher’s chart reloads its history (after F5 or a dropped data connection) the viewer shows LOAD instead, for up to 20 minutes, and keeps the last ranges.

How the relay works across Session Levels, Volume Profile, Hammer, Range Engine, Delta Profile, Refine and HTF FVG, and why it keeps the chart you trade fast: the multi-chart relay guide.

Alerts

Alerts are off until you turn on Enable alerts. Once they are on, an alert fires the moment a range forms when its called-side probability is at or above your threshold. It fires once per range, on live bars only, so a chart loading history stays silent. Publisher and viewer share one ledger, so the same range never alerts twice.

UP 72% ES 15M -- range 6440.25 to 6452.75 | 72% (70% before adjustment)
DOWN 81% NQ 60M -- range 24210.00 to 24288.50 | 81%
1) Alerts
Enable alertsOff

Formation alerts for this chart. Turn it on to hear calls.

Alert threshold (%)70

The called-side probability at or above which a forming range alerts. Independent of the render gate: a range can alert without being drawn, or be drawn without alerting.

Alert soundAlert2.wav

Any .wav from the sound picker. Leave it blank for a silent row in the Alerts window.

Display settings

2) Display
Minimum call probability to render (%)65

The render gate. The test is on the called side, so 70 draws every range called at 70%+ in either direction. 0 draws everything. The toolbar's gate button cycles this value.

Show resolved rangesOn

Keeps recent history on the chart, dashed and dimmed, with checks and X marks. Off draws only the range in force.

Resolved ranges kept256

How many recent ranges stay on the chart. Bounded on purpose: a multi-year chart holds tens of thousands of ranges.

Show range labels and marksOn

The caption on each range and its outcome mark.

Show timeframe in the labelOff

Adds the timeframe prefix, as in 15M UP 72%, for screenshots that must stand alone or charts with more than one timeframe.

Show 50% lineOn

A faint dashed midpoint on each range. Reference only.

Show 25% / 75% quarter linesOff

Faint dashed lines at the quarter levels. Skipped on a range too short for four distinct bands.

Color ranges by timeframe instead of directionOff

Off colors each range by the direction it called. On colors by timeframe instead; solid versus dashed and the check or X keep their meaning either way.

Range fill opacity (0-100)0

0 draws boundaries only, so candles inside the range stay fully visible. Raise it for a tinted band.

Show MTD coverage panelOn

The corner panel with the live call and this month's counts.

MTD panel upper / lower tier (P)0.75 / 0.70

The probability tiers the panel counts. Panel only; alerts use the alert threshold.

Range and label colorsper timeframe

A called-UP and called-DOWN color for each of 5M, 15M and 60M (also used for that timeframe's alert rows), a no-call range color and the label text color.

Log formation detailsOff

Prints a one-line summary of every new range, its levels and its call, to the NinjaScript Output window.

Line settings

2b) Lines
LineWidthStyle
Live boundary1.6Solid
Resolved boundary1.4Dash
Start edge1.0Dash
50% line1.0Dash
Quarter lines1.0Dash

Toolbar

Every render control sits on one pill in the FlowForged toolbar. The engine keeps quoting, counting and alerting whether the overlay is drawn or not, so every toggle is instant.

As it sits on the chart, default settings. On toggles in teal, off in grey. A Viewer adds 5M, 15M and 60M toggles after the power button.
  • Power turns the overlay on or off, and follows the suite-wide Master Switch.
  • 65% cycles the gate: ALL, 65, 70, 75.
  • Hist, 50%, Qtr, Lbl, TF and Panel switch history, the reference lines, labels, the timeframe tag and the panel.
  • On a viewer, 5M, 15M and 60M toggles come first, one per relayed timeframe.
3) Toolbar
Show the FlowForged toolbar pillOn

Off removes the pill; every control it carries is still in the properties dialog.

Render the overlayOn

Flipped by the pill's power button and the Master Switch. With it off the engine keeps working; nothing rebuilds when it comes back on.

Markets and requirements

ES · NQ
5, 15 and 60-minute. MES and MNQ through the Viewer.
YM · RTY
15 and 60-minute. MYM and M2K through the Viewer.
GC · CL
15 and 60-minute. MGC and MCL through the Viewer.
Platform
NinjaTrader 8 on Windows. No Order Flow+, no Level 2 and no Tick Replay required.
Chart setup
A supported minute chart on the default CME session template (opens 18:00 ET), Calculate on bar close.
Viewer chart
Any timeframe, including 1-minute with Tick Replay.

Try it in the free private beta

Range Engine ships as part of the FlowForged Suite. The beta is free.

Join the Discord