Volume Profile Indicator [Advanced]

Created 30 Mar 2025 · Updated 27 Dec 2025

The Volume Profile indicator [Advanced] is a Premium NinjaTrader 8 indicator with the following features.

Prerequisites

To properly use this indicator you should have the following prerequisites available.


  • NinjaTrader 8, with any license type. Click here to download
  • Order Flow data is not required to use this indicator — you don't need a Lifetime license.
  • An automated-trading.ch account with an active Premium Subscription

Description

  • Display of volume profile in 3 modes:
    • Session Mode: displays a volume profile defined on a time interval for each trading session
    • Bars Mode: displays a volume profile on each bar or an aggregate of bars, with auto-merging support
    • Click & Drag Mode: interactively creates volume profiles on the chart using mouse clicks
  • Calculation and display of the value area on each volume profile
  • Merging and grouping (composition) of volume profiles interactively with a mouse click
  • Splitting of volume profile clusters interactively with a mouse click
  • Unique auto-composition of volume profiles based on value area overlapping
  • Works seamlessly with or without OrderFlow data (no OrderFlow data requires Tick Replay)
  • Works seamlessly on any timeframe, including Renko bars
  • Uses a Machine Learning algorithm to classify profile types (P-Shape, D-Shape, b-Shape)
  • Displays POC and Value Areas as progressing lines through the volume profile
  • Shows Value Area Gaps, the volume version of Fair Value Gaps

Examples

RTH Session Volume Profile

The most straightforward usage of the indicator is to lay out RTH session volume profiles and trade on POC and Value Area levels of the previous day's volume profile. The session time interval can be adjusted to whatever suits the instrument, and works on both time-based timeframes and price-based ones such as Renko or Range bars. Two separate intervals for the same trading session can be tracked by adding two instances of the indicator, each with its own session interval.

RTH session volume profile example
Click to enlarge
Auto-detecting ranges based on value area confluence

Displaying volume profiles on each bar shows value areas calculated on a parametrizable percentage. The confluence between the value area bounds, the open/close prices, and the point of control can highlight opportunities for short-term scalping. This mode also modifies the volume profile sequence according to a merging algorithm based on value area overlap — profiles can also be manually merged or unmerged by right-clicking on a volume profile and using the context menu.

Auto-detecting ranges based on value area confluence
Click to enlarge
Bars-based volume profiles with automatic type detection

The volume profile can have three main types: P shape (most volume at the top of the profile — a hint that price may continue higher when confirmed by price action), D shape (most volume in the middle — no directional bias confirmed), and b shape (most volume at the bottom — a hint that price may continue lower). The profile type can be used to confirm a directional bias, for example a "b" cluster followed by price breaking down, or a "P" profile marking a price reversal.

Bars-based volume profiles with automatic type detection
Click to enlarge
Click & Drag manual drawing of volume profiles

Under Click & Drag mode, click once on a start anchor on the chart — a rectangle is drawn following the mouse movement — then click a second time where the volume profile should end. The resulting profile can be transformed (click to activate, then drag), removed (right-click → Remove Profile), or extended into the latest bar to keep it active and recalculating with new live price bars.

Click and Drag manual drawing of volume profiles
Click to enlarge
POC and Value Area as progressive plots for Sessions and Bar based profiles

With the POC and Value Area render modes set to "Progress" instead of "Last Value", the lines are drawn progressively for each bar — visualizing how volume changed inside the profile's bar cluster, which can create trading opportunities when price action revisits those levels.

POC and Value Area as progressive plots
Click to enlarge
Value Area Gaps

Value Area Gaps are the volume equivalent of Fair Value Gaps, and provide more accurate reference levels. They're created when price leaves a value area up or down without mitigating it, marking a zone that can act as a support/resistance zone when price returns to it. One should observe the behavior of price around a Value Area Gap before deciding to trade it — if the zone acts as support or resistance, it's a good indication the zone is worth watching. Value Area Gaps sometimes overlap with Fair Value Gaps, but not always; in practice, price tends to respect Value Area Gaps more than Fair Value Gaps.

Value Area Gaps example
Click to enlarge

Parameters

We always try to keep the parameters to a minimum.

General
Use OrderFlow DataTells the indicator whether you have OrderFlow data enabled (NinjaTrader Lifetime license). Check this if you have OrderFlow; uncheck it if you don't — in which case you should enable TickReplay on your chart.
Align
  • Left: draws the profile from the left side to the right side of the candle bar(s)
  • Right: draws the profile from the right side to the left side of the candle bar(s)
Profile Period
  • Sessions: draws one volume profile per trading session
  • Bars: draws a volume profile for each bar or an aggregate of bars
  • Click & Drag: draws volume profiles interactively based on mouse clicks
Visible only when Profile Period is Sessions
Time Zone The time zone used for the Session Interval parameter below.
  • EST, CET, or Local Time
Session Interval (hh:mm-hh:mm)The time interval that defines the trading session — e.g. 09:30-16:15 for RTH.
Visible only when Profile Period is Bars
Aggregate Bars PeriodThe number of bars per volume profile — 1 draws a profile per bar, 2 draws one profile per pair of bars, and so on. Bars can be merged or split manually afterward.
Ticks Per LevelGroups multiple ticks per level, aggregating volume for each price level instead of showing each individual tick — useful on markets with high volatility and wide prices such as the Nasdaq (NQ or MNQ).
Show POCEnables/disables highlighting the POC level with its own color.
Show Value AreaEnables/disables highlighting the value area levels with their own colors.
Value Area %The percentage of trading volume used to calculate the value area around the POC. The standard value is 68% (a normal distribution's value area), but any percentage can be used.
Show Profile BodyEnables/disables highlighting the profile body with a distinguishing color.
Auto Merge ProfilesEnables/disables automatic composition of adjacent profiles based on value area overlap — useful for automatically detecting ranges of balance and breakouts into price discovery mode.
Machine Learning
Classify Profile TypeEnables classifying and displaying each volume profile's type using a Machine Learning algorithm.
Profile Type Text PositionWhere to render the profile type — Top or Bottom.
Text Font Size / Profile Type Brush / Text Opacity (1-100)Font size, color, and opacity of the profile type text.
Value Area Gaps
Show Value Area GapsEnables/disables drawing of Value Area Gaps.
Mitigation Method
  • Close: a VAG is mitigated when a candle closes above (bearish VAG) or below (bullish VAG) it
  • Wick: a VAG is mitigated when a candle's wick crosses above the VAG's high (bearish) or below its low (bullish)
  • Touched: a VAG is mitigated as soon as it's touched by price
Stop Showing MitigatedHides VAG drawings once mitigated, for a cleaner chart.
Stop Extending @ New DayStops the VAG zone from extending into a new day even if not mitigated.
Show 50% LevelDraws the consequent encroachment (50%) level on the VAG zone.
Shrink VAGShrinks the VAG drawing each time it's touched by a candle wick.
Bullish Color / Bearish ColorBrush color to draw bullish/bearish VAGs.
Render Opacity (1-100)Brush opacity to draw VAGs, from 1 (transparent) to 100 (opaque).
Rendering
Profile Width %The profile width as a percentage of the total width of the candle bar(s) — 100 fills the whole area.
Profile OpacityThe opacity to render the body of the profile.
POC Render Mode
  • Last Value: shows the POC as a line at each profile's last calculated value
  • Progress: draws a plot through the calculated POC values on each bar
Value Area Render Mode
  • Last Value: shows the Value Area high/low as a line at each profile's last calculated values
  • Progress: draws a plot through the calculated Value Area High/Low values on each bar
Value Area OpacityThe opacity to render the value area of the profile.
Profile Body ColorDraw color of profile levels other than the POC and value area levels.
POC Color / POC OpacityDraw color and opacity of the POC level.
Value Area Lines Thickness / POC ThicknessLine thickness of the value area lines and the POC line.
Value Area Color / Value Area Line OpacityDraw color and opacity of the value area levels.
Show Labels / Label Font SizeEnables/disables pivot level labels, and their font size.

Interactive Commands

Interactive commands on the Click & Drag mode

Extend To Last Bar extends the clicked volume profile until the most recent bar on the chart — the profile stays active, extending to new bars and recalculating at each new tick. Stop Extending marks the clicked profile as inactive, so it stops extending to new bars. Remove Profile removes the profile from the chart entirely — needed since the "Delete" keyboard button can't be used to remove a profile.

Extend To Last Bar command example
Click to enlarge
Interactive commands on the Bars mode

Interactive commands are merge/split operations applied to volume profiles by right-clicking on them. Merge Right and Merge Left concatenate the clicked profile with its successor/predecessor profile (visible only when one exists) — the resultant composite profile can be further composed with its neighbors. Split Profile, visible when the clicked profile is composed of more than one candlestick, splits it into multiple unit profiles, which can be re-merged afterward.

Interactive commands on the Bars mode
Click to enlarge

Signals & Usage in Strategy Builder

Starting from version 2.0.0.0, this indicator can no longer be used as a signal generator on other platforms.

Strategy Builder integration example
Click to enlarge

Download & Installation Instructions

License Requirements

At automated-trading.ch you can choose to either purchase a monthly subscription to use our premium products, or use our free products without subscribing.

In both cases, you need to create an account so you can get a License you can use for both premium and free products.

To obtain your license, simply sign up and then get your license on the billing page.

Important: This is a Premium product. It can be run in Backtest, Playback, and Optimization modes for free; an active Premium subscription is required to run it live.
Download
Sign in to download this file.
Latest Version v2.1.2.0 · Published 9 months ago
This file was downloaded 618 times. Last download was 56 minutes ago.

You can also download this strategy — and every other automated-trading.ch strategy or indicator — anytime from your centralized Downloads page.

Installation Steps
1
Import the downloaded .zip file into NinjaTrader using the Import NinjaScript menu item.
2
Open a new chart window.
3
Right-click the chart and choose Indicators... to add the indicator to the chart.
4
Copy/paste your license key, found on the billing page, into the license parameter.
5
After adding the indicator to the chart with a valid license, it runs on the chart's historical data first, then continues running on live market data.

Frequently Asked Questions

General

Yes — if you have an idea that you believe can improve this indicator, use the contact page to send us a message.

No, the source code of the indicator is protected for copyright reasons.

No, this indicator only does rendering and doesn't provide data that can be used from within a strategy — check out our other strategies for one based on this same concept.

Yes, you can use this indicator without TickReplay, but bear in mind that in this case the indicator will not detect events on historical candles — it will only start detecting them on real-time volume and price data.

Release Notes

  • On Bars mode, stop volume profile at session end to avoid inconsistent intraday volume aggregation

  • Fix bug: start-of-session volume profile one bar prior on >1min timeframes; Fix bug: session volume profile not shown when chart ends before session end

  • Fix bug: value area gaps not showing

  • Added Value Area Gaps

  • Fix bug: chart drawing freezes indicator when switching to realtime

  • Fix Bug: last bar not calculated when Bars mode selected and switching to real time

  • Added 100% asynchronous data loading (lag/freeze proof); Added progress bar for realtime processing; Added POC/Value area line opacity params; Added POC/Value area line thickness params; Added POC and Value area progress render mode on click and drag; Various stability fixes

  • Fix Bug: indicator hides Grid lines when added to chart

  • Bug Fix: profiles not showing in CET timezone

  • Bug Fix drawing Volume profiles on bars mode

  • Fix POC & Value Area progress mode on Bars period Tick Replay; Speed up POC Progress mode calc

  • First Release of the indicator
discord
Join our Discord community
Questions, feedback, or just want to chat with other traders? Come say hi.
Join Discord
Quick Facts
Platform NinjaTrader 8
Category Indicator
Plan Required Premium
Latest Version v2.1.2.0
Last Updated 9 months ago
Downloads 618