NinjaTrader 8 indicator, NinjaScript

The volume profile that turns its rows into levels

A volume profile shows where volume traded and leaves the rest to you: which rows count as levels, which ones price has already gone through, and what the last close did at each of them. Supreme Dynamic Profile rebuilds a profile of the most recent closed bars, turns its value-area edges, peaks and ranked rows into levels that run to the right, colours each level by the side of the last close against it, and marks the closed bars that break a level or are rejected by it. The volume is estimated from bars, not read from exchange bid and ask data.

  • A profile of the last 240 closed bars in 64 rows by default, rebuilt every 5 bars
  • Value-area edges, peaks and a ranked row become levels; the POC and troughs are a switch away
  • Break and rejection marks on closed bars, and retest marks with Stop Extending On Break off
  • A metrics table, nine alert conditions and ten series for your strategies and the Market Analyzer

$77one payment, lifetime licence

Get the lifetime licence
Read the user guide (PDF)
Supreme Dynamic Profile on an RTY 15-minute chart in NinjaTrader 8: the volume profile with its busiest row outlined, green peak zones and value-area lines with their labels, break and rejection marks on the candles, and the metrics table at the top right
  1. Busiest rowThe white border marks the row with the most volume. Green rows hold more estimated up volume, red rows more down volume.
  2. Peak zone, 12.2 %The label on the right reads PEAK 12.2% VOL: this zone's share of the profile's volume when it was created. Not a probability of profit.
  3. VAH 2845.6The top edge of the band holding 70 % of the volume. The VAL line below it is the bottom edge, and each edge is a level.
  4. Bullish breakThe filled triangle marks a close above a level price was under. At the default a level stops at its break and is removed, so no line is left here.
  5. Metrics tableAbove value, +6.94 ATR from the POC, no visible level above, VAH 3.86 ATR below, relative volume 2.74x.

Why a plain volume profile leaves the hard part to you

A plain volume profile is a histogram. It shows where volume traded, and from there the work is yours: decide which rows count, draw them, and keep track of which ones price has already gone through.

Then comes the reading. A row price closed through an hour ago and a row it has not reached yet look alike on a histogram, and nothing on it tells you that the last bar came back from one of them.

Supreme Dynamic Profile picks the levels by rule, colours each one by the side of the last close, and marks the closed bars that break or reject them. Its window is a count of closed bars, so nothing resets at a session start and a profile can span a session gap. What it reads is bars: each bar's volume is spread evenly over the rows it covered, so this is estimated volume at price and an estimated up and down split.

PlatformNinjaTrader 8.1 Desktop, tested on 8.1.9.0
TypeChart indicator, compiled NinjaScript Add-On
SignalsOn closed bars only
BarsAny interval; time-based bars fully, others run
AlertsAlerts Log, sound and email, nine conditions with one switch each
SeriesSeven event series, plus Developing POC, VAH and VAL
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 plain volume profile cannot

One indicator in the price panel: the profile, the levels, the marks and the table together.

Levels picked by rule

The two value-area edges, up to two peaks and one ranked row per profile at the defaults. Troughs, the POC and more ranked rows are switches, and Avoid Overlap blocks a new level that overlaps an active one.

A rolling window

Fixed covers the last 240 closed bars by default. Dynamic starts at the latest confirmed pivot inside that limit and also rebuilds on a new pivot. The profile is rebuilt every 5 closed bars, or every bar if you set 1.

Colour from the last close

A level turns green when a bar closes above it and red when a bar closes below it, and stays neutral until either has happened. Its price does not move. Levels near price are drawn stronger.

Marks on closed bars

Filled triangles for breaks, hollow triangles for rejections, diamonds for retests, at most one per direction per bar. Retests need Stop Extending On Break off, because at the default a level stops at its break.

Filters for the marks

Signal Levels, Signal Cooldown and Minimum RVOL decide what counts, for the marks and the alerts alike. At the default the POC and the value area give no signal; All Levels adds them.

Up and down estimate

Directional colours a row by its estimated up and down volume. Row length is volume, not buying or selling pressure. Use Lower Timeframe, off by default, builds from smaller candles on second and minute charts.

A metrics table

Where price sits against the value area, its distance from the POC in ATRs, the nearest visible level above and below, and relative volume. Detailed adds six rows, including the profile's window and the last signal.

Nine alert conditions

Breaks, rejections and retests on each side, a new key level, and two Any switches, each its own setting. They land in the Alerts Log, with sound and email channels when you turn them on, in realtime only.

Ten series for your strategies

Seven event series that read 1 on the closed bar of the event, and Developing POC, VAH and VAL. A NinjaScript strategy can read them, and the Market Analyzer can show them as columns.

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 30-minute chart in NinjaTrader 8 with Supreme Dynamic Profile: filled triangles for breaks, hollow triangles for rejections, and green peak zones running to the right
  1. Bullish breakA close above a level price was under. The filled triangle prints under the bar.
  2. Bearish breakA close below a level price was over. Within a few bars price was rising again: a mark describes the close, not what comes next.
  3. Bullish rejectionThe bar touched a level and closed back above it. The hollow triangle prints under the bar.
  4. Bearish rejectionThe bar touched a level and closed back below it. The hollow triangle prints over the bar.
  5. Peak zoneA level that runs to the right until a close breaks it. Resting the pointer on a mark lists the levels it fired on.
Marks on closed bars

A break and a rejection are different closes

Each active level is checked once per closed bar. A touch starts an episode. A close on the other side of the level is a break, and a close back on the side price came from is a rejection. On one level a break takes priority over a retest, and a retest over a rejection.

A mark describes the close. It says nothing about the next bar, and on this chart a bearish break is followed within a few bars by a sharp rise. The charts here are at the defaults, so they show no retest diamonds: those need Stop Extending On Break off.

  • Filled triangles for breaks, hollow triangles for rejections, diamonds for retests
  • Under the bar when bullish, over the bar when bearish
  • A new level cannot signal on the bar that created it
  • Resting the pointer on a mark lists the levels it fired on
The Supreme Dynamic Profile metrics table in NinjaTrader 8: value area position, POC distance, nearest level above and below, and relative volume
Metrics table

Where price sits, in one corner

The table answers the questions you would otherwise read off the profile. Is price inside the value area? How far is it from the POC, in ATRs? Which visible level is next on each side, and how far away? Is this bar busy against the bars before it?

This is the default Compact layout, here on NQ. Detailed adds six rows: the profile's window and age, its volume, the sampling, the up and down estimate, the level counts and the last signal. The table is painted on top, so near the top of a chart it can cover profile rows and a level's label. Position moves it to another corner.

  • Value area: above, inside or below
  • POC distance: the distance from the busiest row, in ATRs
  • Nearest above and below: the level, its price and its distance in ATRs
  • Relative volume: the bar's volume against the average of the 20 bars before it
NQ 15-minute chart in NinjaTrader 8 with Supreme Dynamic Profile: a red value-area high above price, a green peak zone and value-area low below it, the profile with its busiest row outlined, and the metrics table
  1. VAH, redA bar closed below it. The table reads 28632.25, 2.54 ATR away. Its own label sits under the table, which is painted on top.
  2. Peak zone, greenA bar closed above it. The label reads PEAK 17.7% VOL, and the table reads the zone's top edge, 28353.25, 0.71 ATR away.
  3. Busiest rowEach row's length shows its volume against this one. Length is volume, not buying or selling pressure.
  4. VAL, greenThe bottom edge of the value area. With price between the two edges the table reads Inside value.
  5. Metrics tableThe nearest visible level on each side of price, and how far away it is in ATRs.
Levels and their colours

A level takes its colour from the last close against it

On this chart price sits between a red value-area high and a green peak zone. The colour says which side a bar last closed on. Levels live on from one profile to the next, so a level built earlier stays in view after the profile has moved on, until a close breaks it or it expires 500 bars after it was created.

The label on a level gives its share of the profile's volume when the level was created. That figure is fixed and describes the bars of that window. It is not a probability of profit. Visible Active Nodes limits how many levels are drawn, and levels past that limit stay tracked and can still alert.

  • Peaks drawn as zones by default, value-area edges as lines
  • Visible Active Nodes and Label Max both default to eight
  • The price axis follows the bars, so a level far from price can lie outside the panel
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 from the bars and spreads it evenly over the rows each bar covered, so it is an estimate at price, not exchange bid and ask data. The chart's Trading Hours template decides which bars exist: on an ETH template the overnight bars count towards the window and on an RTH template they do not. A feed without volume gives no profile: the table reads No volume profile and no levels appear.

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

How a closed bar becomes a level or a mark

The same steps on every closed bar. Nothing hidden and nothing exotic.

  1. The window is counted

    Fixed counts back the Lookback Limit, 240 closed bars by default. Dynamic starts at the latest confirmed pivot inside that limit. The profile is rebuilt on every Refresh Every N Bars closed bar, 5 by default.

  2. Volume is spread over the rows

    Each bar's volume is spread evenly over the rows its range covered, 64 rows by default. It counts as up volume for a close above the open, down for a close below it, and half and half for a close at it.

  3. Levels are chosen

    The band around the busiest row that holds 70 % of the volume gives the two edges. Rows busier than their neighbours give peaks, and the busiest row that is not already a level gives a ranked row.

  4. Each active level is checked

    From the bar after it was created. A bar touches a level when its range reaches it. A close on the other side is a break, and a close back on the side price came from is a rejection. A touch and a close on the break's side within Retest Window bars is a retest.

  5. The filters decide, and it is drawn

    Signal Levels, Minimum RVOL and Signal Cooldown accept or refuse the event. The mark prints, the level's colour follows the close, the table updates and, in realtime, the alert fires.

What it does

  • Picks its levels from the volume in the window, by rules you can read in the settings
  • Marks closes at those levels on closed bars, and a mark on a closed bar does not change
  • Colours each level by the side of the last close against it
  • Reports the nearest levels, the POC distance and relative volume in a table

What it does not do

  • It does not place orders. It is an indicator, and it never touches your account
  • It does not forecast where price goes next, and its percentages are not a probability of profit
  • It does not read exchange bid and ask data: volume at price is estimated from bars
  • It does not load history for you: Days to load in the Data Series dialog decides, and 2,500 bars is the aim
Side by side

Plain volume profile compared with Supreme Dynamic Profile

Plain volume profileSupreme Dynamic Profile
LevelsYou draw themValue-area edges, peaks and ranked rows, by rule
Level colourOne colourGreen or red from the last close against it
After a breakYou keep trackThe level stops at the close, or stays for retests
Closes at a levelYou read them off the candlesBreak, rejection and retest marks on closed bars
Where price sitsYou work it outA table: value area, POC distance, nearest levels
Which marks countNo marks to filterLevel types, a cooldown and a minimum relative volume
For your strategiesThe histogramTen series, seven of them events

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 221 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,191 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,191 across the live switch
Series compared221
Cells compared1,087,983 and 926,211
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 Dynamic ProfileNinjaTrader 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 Dynamic Profile repaint?

A mark on a closed bar does not change. An active level extends with the newest bar until it breaks, expires or is removed, and a stopped level is removed unless a history option keeps it. The profile, its labels and the table describe the newest bars and move with them, by design. With Calculate set to each tick the forming bar is only previewed: it creates no level, fires no signal and raises no alert, and all three Calculate modes give the same results bar for bar. One thing to know: levels are built from the bars before them and the refresh count starts at the first bar loaded, so two charts that loaded different amounts of history can differ in their levels and signals for a while, and a chart reloaded after a long session can differ from what it showed live.

How much history does it need?

The first profile needs at least ten closed bars and is built only inside the newest Calculation History bars, 2,000 by default, and the levels on screen were built from the bars before them. The indicator does not extend the chart's data, so raise Days to load in the Data Series dialog. Aim for at least 2,500 bars where your feed allows it.

Is this bid and ask volume?

No. The indicator works from bars, not tick data. A bar's volume is spread evenly over the rows its range covered and counted as up or down from its close against its open, so this is estimated volume at price and an estimated up and down split. On a futures chart the volume itself is real contract volume. Use Lower Timeframe, off by default, makes the estimate finer on second and minute charts by reading smaller candles.

Why can't I see the whole profile, or a level's label?

The price axis follows the bars, not the drawings, so part of a profile or a level far from price can lie outside the panel; drag the price axis to see it. The table is painted on top and can cover rows and labels near its corner, as it does on some of the charts on this page, and Position in 09 Metrics Table moves it. Label Max limits the labels, nearest first, and a label too close in price to a nearer one is skipped.

Why is there no POC line?

The busiest row of the profile has a border in the chart's text colour, white on these charts, but the POC level itself is off by default. Point of Control adds it, drawn in the chart's text colour. POC Variant set to Developing draws its path as a step line instead, and creates no fixed level and no signal.

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 a map of where volume traded on the bars in its window, and a record of how closes behaved at those levels. 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 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

NinjaTrader 8 indicator

Flintridge Trader Pro

Two moving averages over an alternate timeframe, whose cross prints Buy or Sell on closed bars, a stop and three targets as percentages of the entry, supply and demand zones, and a dashboard.

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