NinjaTrader 8 indicator, NinjaScript

The sideways range, the volume inside it and a plan at the break

Supreme Range Profile Structure finds sideways ranges from the chart's swing highs and lows, shades them and builds a volume profile with a point of control inside each one. A move that closes outside and comes back gets a diamond at its extreme. A break takes closes beyond the edge, never wicks, and each confirmed break draws an entry, a stop and three targets from the range height. Ranges are rare at the defaults: a chart can go long stretches with no range at all, and that is normal for it.

  • Ranges found by a written rule on swing highs and lows, with every number a setting
  • A volume profile and a point of control inside each range, from real contract volume
  • Breaks and diamonds decided on closed bars, with four alerts and six series
  • An entry, a stop and three targets drawn at each break, as a plan and not a tracker

$77one payment, lifetime licence

Get the lifetime licence
Read the user guide (PDF)
Supreme Range Profile Structure on an NG 5-minute chart in NinjaTrader 8: two shaded ranges with their volume profiles and point of control lines, a diamond above the second range, BREAKOUT tags, and position tools with ENTRY, SL and TP labels
  1. The rangeFound from swing highs and lows and shaded: top edge about 2.928, bottom edge about 2.885. The shading reaches back to its oldest swing.
  2. Volume profileRows grow leftwards from the range's right end. Green here because this range ended in a breakout; a longer row means more volume at that price.
  3. Point of controlThe line across the range through the row with the most volume, about 2.892.
  4. DiamondA close above the top edge followed by a close back inside. It sits at the move's extreme, on the bar that made it.
  5. Entry, stop, targetsAt the first range's BREAKOUT: ENTRY on the broken edge, about 2.899; SL on the opposite edge, about 2.877; TP1, TP2 and TP3 at 0.5, 1 and 2 times the range height.

Why a hand-drawn range leaves the hard part to you

Drawing a range means deciding which swings count, where the edges sit and when the market has really left. Two traders draw two different boxes on one chart, and a wick through the top looks like a break until the next bar says otherwise.

The volume is a second job. You anchor a profile to the bars of the range by hand, then move it each time you change your mind about the edges. The failed moves and the breaks you mark yourself, and the stop and targets you work out on the side.

Supreme Range Profile Structure applies one rule to the swings and does the rest from there. The rule is strict, so ranges are rare, and a trending market rarely forms one. It also takes time: a range can only be found once its swings are confirmed, so its shading reaches back over bars that had already closed, and the candle tint shows where it was really on the chart.

PlatformNinjaTrader 8.1 Desktop, tested on 8.1.9.0
TypeChart indicator, compiled NinjaScript Add-On
SignalsBreaks and deviations, on closed bars only
BarsAny interval; time-based bars fully, others run
AlertsFour events: Alerts Log, sound and email, one switch per event
SeriesActiveRangeHigh, ActiveRangeLow, RangeBreakout, RangeBreakdown, RangeHighDeviation, RangeLowDeviation
InstrumentsFutures, forex, stocks, indices: any NinjaTrader instrument
LicenceLifetime, one NinjaTrader login, all your PCs
Price77 USD, one payment

The user guide is public: every parameter and the verification are in it. Read it before you pay.

What you get

Nine things it does that a hand-drawn range cannot

One indicator in the price panel: the ranges, the profile, the breaks and the plan together.

Ranges from swings

At the defaults a range needs at least two swing highs and two swing lows that alternate and cluster, a height of 1 to 6 ATRs and a span of at least 8 bars. Every number is a setting.

Edges that adapt

A new swing close to an edge moves that edge a fifth of the way towards it, and the line grows more solid with each touch. Edge Adaptation at 0 keeps the edges where they were found.

A profile inside each range

14 rows by default, growing leftwards from the range's right end, grey while active, then Bullish, Bearish or grey by how the range ended. The point of control runs through the busiest row.

Breaks on closes

Two closes in a row beyond the edge plus 0.10 ATR by default. Wicks never count, and a close inside the buffer resets the count. Both numbers are settings.

Diamonds for failed moves

A close outside the range and then a close back inside. The diamond sits at the move's extreme, on the bar that made it, and outlives its range until Deviation History removes it.

Position tool at each break

ENTRY on the broken edge, SL on the opposite edge, and TP1, TP2 and TP3 at 0.50, 1.00 and 2.00 times the range height, drawn for 10 bars. The labels show names, not prices.

Candles tinted by position

While a range is active a candle's body runs from Bullish at the bottom edge through the Profile colour to Bearish at the top. A close outside takes the full colour. Two instances on one chart overwrite each other's tint.

Four alerts

Range Breakout, Range Breakdown, Range High Deviation and Range Low Deviation, each with its own switch, in realtime only. There is no alert for a new range or for a level being reached.

Six series for your strategies

The two active edges and the four events can be read by NinjaScript strategies and shown as Market Analyzer columns. They follow the calculation, not the drawing switches.

See it working

A closer look, on real NinjaTrader charts

Every picture below is a NinjaTrader 8 capture with numbered notes added. Nothing on the charts is drawn by hand. Click any image to enlarge it.

SI 5-minute chart in NinjaTrader 8 with Supreme Range Profile Structure: an active range with grey profile rows, tinted candles and a diamond, and a completed range lower left whose BREAKOUT tag and position tool sit far below the bars
  1. Active rangeTop edge about 52,280, bottom edge about 51,780. No tag and no tool yet, because it has not ended.
  2. Tint starts hereCandles are tinted while a range is active, so the first tinted candle is where this range was found. The shading to its left was drawn back over bars that had already closed.
  3. Grey while activeThe profile rows stay grey until the range ends. They then take the colour of how it ended.
  4. DiamondA close above the top edge followed by a close back inside, marked at the move's extreme.
  5. A break that printed lateThe break was confirmed on the bar above the left end of this tag, which closed near 51,200. ENTRY is about 49,450 and TP3 about 49,900: the levels stay at the range, not at the market.
Active and completed

A range still open, and a break that printed late

The range at the top of this SI chart is still active: grey profile rows, tinted candles, no tag and no tool. Its diamond marks a close above the top edge that came back inside. While a range is open a new swing close to an edge can move that edge, and the profile is then built again from the range's first bar.

Look at where the tint starts. A range can only be found once its swings are confirmed, so the shading reaches back over bars that had already closed, and the tint shows when it was really on the chart. The lower range shows the cost: only closes from the bar a range is found on count towards its break, so this BREAKOUT printed with the bars far above all three targets. ENTRY sits on the broken edge, not at the close of the bar that confirmed the break, and there the two are far apart.

  • A swing is known Swing Length bars after its own bar, 5 by default
  • Completed Ranges keeps the newest ten at most, with their profiles, tags and tools
  • A diamond stays after its range is gone, until Deviation History removes it
  • With OnEachTick or OnPriceChange a range or an edge move seen on the forming bar can go again
GC 5-minute chart in NinjaTrader 8 with Supreme Range Profile Structure: a range with Bearish profile rows, a BREAKDOWN tag, ENTRY, SL and three targets, with the bars going back above the entry and a wick through the stop level
  1. BREAKDOWNTwo closes below the bottom edge. The tag sits on the broken edge, and ENTRY with it, about 4050.
  2. Wick through the stopSL is on the opposite edge, about 4059. This wick went above it to about 4062 while the tool was running, and the chart marks nothing.
  3. Three targetsTP1, TP2 and TP3 at 0.5, 1 and 2 times the range height: about 4045, 4040 and 4031. A wick on the break bar went through TP1. No bar reached TP2 inside the tool.
  4. Rows turned BearishThe range ended in a breakdown, so its profile rows took the Bearish colour. The line across them is the point of control, about 4053.
  5. Back above the entryThe closes after the tag went back above the broken edge. The tool stays as it was drawn.
The plan at a break

Drawn at the break, and not followed afterwards

On this GC chart two closes below the bottom edge confirmed a BREAKDOWN. ENTRY sits on the broken edge and SL on the opposite edge, so the stop distance is the range height and the targets are multiples of it. A reward box runs from the entry to TP3 and a risk box from the entry to the stop.

Then the closes went back above the entry and a wick went through the stop level. The chart marks none of that, because the levels are a plan and not a tracker: they are drawn on the break bar and stay as they are, and nothing is marked as reached. A chart that shows only the breaks that worked would tell you nothing, so this one is here. The targets are reference levels, not predictions.

  • TP1, TP2 and TP3 at 0.50, 1.00 and 2.00 times the range height by default
  • The tool runs for Position Width bars, 10 by default
  • The price axis follows the bars, so a far target can lie outside the panel: drag the axis to see it
  • Maximum Range Age above 0 ends a range with no tag, no tool and no alert
Any market

The same rules on everything NinjaTrader charts

The calculations are not tied to an instrument. The captures below were taken in NinjaTrader 8 on the free simulation feed: index, energy, metal, currency and rate futures, from 1-minute to 30-minute bars, with the indicator at its default settings on every one.

On a futures chart the profile reads real contract volume. A bar's volume is shared across the rows its high-to-low span covers, which is an estimate, because the indicator works from bars and not from tick data. Swings, edges, breaks and the position tool come from open, high, low and close alone. These charts were picked because each one shows a range, and that is why their intervals differ. A chart can go long stretches with no range, as the two hours after the range on the MNQ chart show, and that is normal for it.

Supreme Range Profile Structure on a MNQ, Micro Nasdaq 100 chart in NinjaTrader 8, with a shaded range, its volume profile, point of control and position tool
MNQ, Micro Nasdaq 100Index futures, 1 min
Supreme Range Profile Structure on a ES, E-mini S&P 500 chart in NinjaTrader 8, with a shaded range, its volume profile, point of control and position tool
ES, E-mini S&P 500Index futures, 1 min
Supreme Range Profile Structure on a NQ, E-mini Nasdaq 100 chart in NinjaTrader 8, with a shaded range, its volume profile, point of control and position tool
NQ, E-mini Nasdaq 100Index futures, 15 min
Supreme Range Profile Structure on a MES, Micro S&P 500 chart in NinjaTrader 8, with a shaded range, its volume profile, point of control and position tool
MES, Micro S&P 500Index futures, 1 min
Supreme Range Profile Structure on a YM, E-mini Dow chart in NinjaTrader 8, with a shaded range, its volume profile, point of control and position tool
YM, E-mini DowIndex futures, 1 min
Supreme Range Profile Structure on a RTY, E-mini Russell 2000 chart in NinjaTrader 8, with a shaded range, its volume profile, point of control and position tool
RTY, E-mini Russell 2000Index futures, 5 min
Supreme Range Profile Structure on a CL, crude oil chart in NinjaTrader 8, with a shaded range, its volume profile, point of control and position tool
CL, crude oilEnergy futures, 1 min
Supreme Range Profile Structure on a NG, natural gas chart in NinjaTrader 8, with a shaded range, its volume profile, point of control and position tool
NG, natural gasEnergy futures, 5 min
Supreme Range Profile Structure on a GC, gold chart in NinjaTrader 8, with a shaded range, its volume profile, point of control and position tool
GC, goldMetal futures, 5 min
Supreme Range Profile Structure on a SI, silver chart in NinjaTrader 8, with a shaded range, its volume profile, point of control and position tool
SI, silverMetal futures, 5 min
Supreme Range Profile Structure on a 6E, euro FX chart in NinjaTrader 8, with a shaded range, its volume profile, point of control and position tool
6E, euro FXCurrency futures, 30 min
Supreme Range Profile Structure on a ZB, 30-year T-bond chart in NinjaTrader 8, with a shaded range, its volume profile, point of control and position tool
ZB, 30-year T-bondRate futures, 15 min
Under the hood

How closed bars become a range and a break

The same order on every closed bar. Every number here is a default you can change.

  1. Swings are confirmed

    A swing high is a bar whose high no bar within 5 bars on either side exceeds, and it is known 5 bars later. The newest 10 swings are kept, and two highs or two lows in a row merge into the more extreme one.

  2. A range is looked for

    While no range is active, the newest swings form one if they hold at least two highs and two lows, the highs lie within 0.6 ATR of each other and the lows too, the height is 1 to 6 ATRs and the span at least 8 bars. The largest set that passes wins.

  3. The range runs

    The shading is drawn back to the oldest swing, the profile is built and the candles are tinted from this bar on. A new swing close to an edge moves that edge, and the profile is built again.

  4. A close outside is judged

    Two closes in a row beyond an edge by more than 0.10 ATR make a break. A close beyond that buffer followed by a close back between the edges makes a diamond. A move that becomes a break gets no diamond.

  5. The break draws the plan

    The tag, ENTRY, SL and three targets are drawn on the break bar and, in realtime, the alert goes out. The swings are then cleared, and 4 bars must pass before a new range can be found.

What it does

  • Finds ranges by a rule you can read and change
  • Decides breaks, diamonds and alerts on the closed bar, and leaves them where they were
  • Builds the profile from real contract volume on a futures chart, shared out from bars
  • Draws an entry, a stop and three targets from the range height

What it does not do

  • It does not find a range on every chart. Long stretches with none are normal, above all in a trend
  • It does not place orders. It is an indicator, and it never touches your account
  • It does not track the levels: no target or stop is marked as reached
  • It does not forecast where price goes next, and its targets are not predictions
Side by side

A hand-drawn range compared with Supreme Range Profile Structure

Hand-drawn rangeSupreme Range Profile Structure
Finding the rangeYou pick the swings by eyeBy a rule on swing highs and lows
When it appearsWhen you draw itOnce its swings are confirmed, shaded back to the oldest
EdgesWhere you put themMove towards each new touch, or stay fixed at 0
Volume inside itA separate tool, anchored by handA profile and a point of control in each range
Failed movesYou spot themA diamond at the move's extreme
What counts as a breakYour callCloses beyond the edge plus an ATR buffer; never wicks
Entry, stop and targetsYou work them outDrawn on the break bar from the range height

How this edition was verified

The engine that computes everything also runs outside NinjaTrader. With its diagnostic dump switched on, the NinjaTrader edition writes every committed bar with the values it drew; those bars are replayed through the engine outside the platform, and the two files are compared value by value.

On 4,923 MNQ 1-minute bars every one of the 121 series compared was equal on every bar. A second run, with Calculate set to each tick and the chart left live across the switch from history to live bars, gave the same result on 4,213 bars.

What that proves: the indicator receives exactly one closed bar per chart bar with the right open, high, low, close and volume, never double-feeds or skips a bar, and shows the values the engine produced. What it does not claim: it is a test of correct calculation, not of trading results, and it says nothing about future performance.

NinjaTrader bars compared4,923, then 4,213 across the live switch
Series compared121
Cells compared595,683 and 509,773
Mismatches0 and 0
ConditionsMNQ 1-minute, NinjaTrader 8.1.9.0, November 2026

The full method is in the user guide: User Guide (PDF) and Installation and Quick Start (PDF).

Get the licence

One payment. Lifetime licence.

No subscription and no renewal. Pay once and the indicator stays licensed to your NinjaTrader account, updates included.

Supreme Range Profile StructureNinjaTrader 8 indicator

$77one payment, lifetime licence

  • A lifetime licence on one NinjaTrader account login, valid on every PC you use it on
  • The compiled NinjaScript Add-On package and all future updates, at no extra cost
  • No machine ID and nothing to activate: log in to NinjaTrader and it runs
  • The two PDFs: installation and quick start, and the full user guide with every parameter
  • Direct support from me, the developer, by email
Pay by cardCard, Apple Pay or Google Pay, through Stripe
Pay with PayPalPayPal balance or card, through PayPal

The licence is issued to your NinjaTrader account through NinjaTrader's Vendor Licensing, by hand, normally within a few hours and always within 24 hours of your form arriving. You get an email with the download link when it is done.

Because a licence cannot be handed back once it is on your account, a sale is final once the licence has been issued. If you paid and the licence has not been issued yet, email me and I will refund you in full. The user guide is public, so you can read exactly what the indicator does before you pay.

The full terms of sale and the privacy notice for buyers are one page each, in plain language.

Trading carries risk of loss. This is an analysis tool, not financial advice, and no indicator can promise a profit.

Questions

Before you buy

Does Supreme Range Profile Structure repaint?

Breaks, their tags, the position tool, the diamonds, the end of a range by Maximum Range Age and every alert are decided on the closed bar in every Calculate mode, and they do not change afterwards. A swing is confirmed Swing Length bars after its own bar: that is a delay, and what it allows can only happen after the confirmation. So a range is found after its swings, and its shading reaches back over bars that had already closed. With OnEachTick or OnPriceChange the forming bar is also previewed, at most four times a second: before the bar closes a range can appear, an edge can move, the profile can grow and the candle can take a tint, and any of these can change or go if the bar ends differently.

Why is there no range on my chart?

Usually because the market has not formed one. A range needs swing highs and lows that alternate and cluster, inside the width limits, and a trending market rarely does that, so a chart can go long stretches with none. That is normal for it. Scroll back or load more bars. A higher Edge Stability ATR, a wider width window, a lower Minimum Range Span or a lower Swing Length find more; keep Maximum Width ATR above the minimum, because below it the minimum is used as both limits and hardly any range qualifies.

How much history does it need?

There is no fixed number, but where the history starts decides which swings are remembered and which range is found first. The indicator does not extend the chart's data: Days to load in the Data Series dialog decides how many bars exist, and Bars To Calculate then takes up to 20,000 of the newest. Two charts that loaded different amounts can show other ranges for a while. The chart's Trading Hours template decides which bars exist too. On a continuous contract use back adjustment: a roll that is not back-adjusted can end a range with a false break and inflate the ATR for a while.

Does it follow the stop and targets for me?

No. The levels are drawn on the break bar and stay as they are, and nothing is marked as reached. ENTRY is the broken edge, not the close of the bar that confirmed the break, so price can already be past a target when the tag prints. The labels show names, not prices. TP3 can lie off the panel, because the price axis follows the bars: drag the axis to see it.

Can my strategy use its breaks?

Yes. ActiveRangeHigh, ActiveRangeLow, RangeBreakout, RangeBreakdown, RangeHighDeviation and RangeLowDeviation can be read from a NinjaScript strategy and shown as Market Analyzer columns. The four events read 1 on the closed bar of the event and 0 otherwise. With OnEachTick or OnPriceChange the bar that just closed is [1]. Set Bars To Calculate high enough to cover the bars the strategy runs on.

Which NinjaTrader version do I need?

NinjaTrader 8.1 Desktop for Windows; the build is tested on 8.1.9.0. Any data connection that delivers bars works, including the free simulation connection.

Do I need a funded broker account?

No. NinjaTrader 8 is free to download and use for charting and simulation, with free real-time futures data for the simulator. A live account with a broker of your choice is a separate step that this indicator does not need. NinjaTrader is the platform it runs inside, not a broker.

Is there a machine ID or an activation step?

No. The licence is tied to your NinjaTrader account login through NinjaTrader's Vendor Licensing, not to a PC. Log in on any installation and the indicator runs; a new PC needs no transfer.

How fast do I get the licence?

I issue it by hand in the NinjaTrader Vendor Dashboard. It is normally done within a few hours and always within 24 hours of your form arriving, including weekends.

Is this a subscription?

No. It is one payment of 77 USD for a lifetime licence on one NinjaTrader account, with future updates included.

Can I get a refund?

Once the licence has been issued the sale is final, because a licence on your account cannot be handed back. That is why the user guide is public: read it first. If you paid and the licence has not been issued yet, email me and I will refund you in full.

Can I move the licence to another NinjaTrader account?

Yes. Email me from the address you bought with and I will move the licence to your new account login.

Will it make me money?

No indicator can promise that, and this one does not. It gives you ranges found by a stated rule, the volume traded inside them, and a plan drawn at each break. What you do with that, and how you size positions, decides the outcome.

More tools

Other NinjaTrader 8 indicators I publish

Each one is a compiled NinjaScript Add-On, 77 USD once, with its own page, charts and public user guide.

NinjaTrader 8 indicator

Supreme Dynamic Profile

A volume profile of the most recent closed bars whose value area, peaks and ranked rows become key levels, with marks for breaks, rejections and retests, and a metrics table.

$77 one payment, lifetime licence

NinjaTrader 8 indicator

Supreme Power House

Change-of-character and break-of-structure signals on closed bars, filtered and graded by seven checks, with a trade plan, an adaptive ribbon, OTE zones and a six-timeframe dashboard.

$77 one payment, lifetime licence

NinjaTrader 8 indicator

Supreme VWAP And Targets

An anchored VWAP at each confirmed swing, pullback reclaims on closed bars, seven filter profiles, a stop, three targets and a dashboard of what those plans did on your chart.

$77 one payment, lifetime licence

See all NinjaTrader 8 indicators

Put it on your chart today

77 USD once. A lifetime licence on your NinjaTrader account, updates included, and the licence issued within 24 hours.