Read the guides: What Is a Virgin POC? How to Read an Untouched Point of Control · NinjaTrader 8 Volume Indicators Bundle: Building a Complete Volume Setup
The FootPrint OrderFlow Indicator for NinjaTrader 8 shows buy and sell volume at each price level inside every bar. A standard candle reduces a bar to its open, high, low and close; the footprint shows how volume was distributed between those prices.
On top of the footprint grid, the indicator adds a per-bar Volume Profile with POC and Value Area, horizontal or diagonal imbalance detection, stacked imbalance zone tracking with retest or breakout markers, unfinished auction tracking, per-bar statistics, tick aggregation and an MFE/MAE Tracker. Each of these can be enabled and configured separately.
Imbalance detection is the core of the order flow layer. An imbalance is a price level where volume on one side of the market is significantly larger than on the other.
The indicator supports three methods for classifying volume as buying or selling:
Volume is classified by tick direction: a trade at a higher price than the previous trade counts as buying, a trade at a lower price counts as selling. When the price is unchanged, volume is assigned to the same side as the previous trade. The indicator loads its own 1-tick data series, so Tick Replay is not required, but historical tick data must be available for the instrument.
Volume traded at the ask or above counts as buying; volume traded at the bid or below counts as selling. Trades between the bid and the ask are assigned to the same side as the previous trade. This is the only mode based on actual bid and ask data.
Note: Bid Ask mode requires Tick Replay to be enabled in the chart’s Data Series settings. Without Tick Replay, the indicator shows a message and does not calculate.
Volume is classified by 1-minute bars: an up bar counts as buying, a down bar counts as selling. If a 1-minute bar closes at the same price as the previous one, volume is assigned to the same side as the previous bar. The indicator loads its own 1-minute data series.
In Up Down Tick and Minute Bar Based modes, buy and sell volume is a classification by price direction rather than recorded bid and ask volume. If the required tick or minute history is not available, the indicator shows a message asking to check the data for the instrument.
The footprint grid shows sell and buy volume side by side at every price level of each bar. Cell colors reflect which side dominated at the level, and imbalanced levels are highlighted within the grid.
Each bar gets its own Volume Profile, drawn next to the footprint grid. The Point of Control (POC) marks the price level with the highest traded volume in the bar, and the Value Area marks the range that contains the set share of the bar’s volume (68% by default). Together with imbalance highlighting, the profile shows both where volume concentrated and where one side dominated within that range.



The comparison method is selected with Imbalance Type:
A level is marked as an imbalance when two conditions are met: the larger side is at least Imbalance Ratio times the smaller side (3:1 by default), and the absolute difference between the two sides is at least Imbalance Min. Absolute Difference (30 by default). The second condition filters out thin levels where a high ratio comes from very small volumes. Alerts can be enabled separately for bullish and bearish imbalances.
With Track Stacked Imbalances enabled, the indicator checks every completed bar for consecutive imbalanced levels. When their number reaches Stacked Imbalances Threshold (3 by default), a zone is created around them:
A zone stays on the chart until a bar closes beyond its opposite boundary: below the lower boundary for a bullish zone, above the upper boundary for a bearish zone.
Stacked Imbalance Strategy selects which price interaction with the zone is marked on the chart:
Retest and breakout markers, the zone plots, zone alerts and the MFE/MAE Tracker work only when Draw Stacked Imbalances Zone is enabled.
With Calculate set to On Each Tick (the default), markers on the forming bar are evaluated as price updates and can appear or disappear before the bar closes.
At a bar’s high or low, an auction is usually considered finished when trading at that price was one-sided, for example when there was no bid volume at the high. When both bid and ask volume are present at the extreme, the auction is treated as unfinished: price turned at that level while two-sided trading was still taking place there.
With Track Unfinished Auctions enabled, the indicator checks the high and low of every completed bar. An unfinished auction is registered when both bid and ask volume are present at the extreme and each is at least Minimum Volume (1 by default). If either side is zero, the auction is treated as finished and no level is created.
Each unfinished auction is drawn as a dashed horizontal line from the extreme: red from a high, green from a low. The line extends to the right until price touches the level for the first time. On the first touch:
Two more plots report the nearest levels that have not been touched yet: Nearest Unfinished Auction Above (above the current bar’s high) and Nearest Unfinished Auction Below (below the current bar’s low).
Recommended settings: Calculation Type = Bid Ask and Ticks Per Level = 1.
With Ticks Per Level above 1, the volume check covers the aggregated row that contains the extreme rather than the exact price. In Up Down Tick and Minute Bar Based modes, the two sides of volume are a direction-based classification rather than recorded bid and ask, so unfinished auctions are approximate. When Track Unfinished Auctions is enabled with other settings, the indicator shows a warning that names the parameter to change; if both differ, both are listed in one warning.
A statistics table below the bars shows the main metrics for each bar:
Each row can be shown or hidden individually.
For instruments with many price levels per bar, Ticks Per Level combines several ticks into one footprint row (2 by default). This reduces the number of rows on the chart; volume, delta and imbalance calculations then run on the combined rows. Set Ticks Per Level to 1 to display every price separately.
The MFE/MAE Tracker measures how price moved after each stacked imbalance zone marker. For every marker, it records the maximum favorable excursion (MFE) and the maximum adverse excursion (MAE) over up to four time windows set in seconds, minutes or days, plus an optional window that lasts until the next marker in the opposite direction.
Results are shown in an on-chart table as the median MFE/MAE ratio for long and short markers, and the table can be exported to CSV. The tracker describes how markers behaved on the loaded history; it does not forecast future price movement. It uses the markers from Stacked Imbalance Zone Tracking, so Track Stacked Imbalances and Draw Stacked Imbalances Zone must be enabled.
For a detailed explanation of the calculation and the table, see MFE/MAE Tracker: How It Works.
Alerts are available for the following events:
Alerts can be delivered as a pop-up window, a sound (a custom .wav file can be selected) or an email; email alerts require the NinjaTrader email share service to be configured. Alerts are generated in real time only; historical bars do not trigger them.
The indicator has the following parameters:
Calculation Type — Selects the method used to classify volume as buying or selling: Up Down Tick, Bid Ask or Minute Bar Based.
Show Volume Profile — Enables or disables the per-bar Volume Profile display.
Show Value Area — Enables or disables the Value Area display.
Value Area (%) — Sets the share of the bar’s volume included in the Value Area. Available when Show Value Area is enabled.
Show POC — Enables or disables the Point of Control (POC) display.
Ticks Per Level — Sets how many ticks are combined into one footprint row. A value of 1 displays every price separately.
Imbalance Type — Selects the imbalance comparison method: Horizontal or Diagonal.
Imbalance Ratio — Defines the minimum volume ratio (e.g., 2:1, 3:1) between the larger and the smaller side for a level to be classified as an imbalance.
Imbalance Min. Absolute Difference — Specifies the minimum absolute volume difference between the two sides for an imbalance to be considered valid. This filters out levels where a high ratio comes from very small volumes.
Enable Imbalance Alerts — Enables or disables alerts for individual imbalances.
Enable Bullish Imbalance Alerts / Enable Bearish Imbalance Alerts — Enable alerts for bullish and bearish imbalances separately. The same direction filter applies to stacked imbalance alerts. Available when Enable Imbalance Alerts is enabled.
Enable Stacked Imbalance Alerts — Enables or disables alerts for stacked imbalance zone formation, retests and breakouts. Available when Track Stacked Imbalances is enabled.
Enable pop up alert — Shows alerts in a pop-up window.
Enable sound alert — Plays a sound when an alert is generated.
Alert sound file — Selects the sound file played on alerts. Available when Enable sound alert is enabled.
Enable email alert — Sends alerts by email through the NinjaTrader email share service.
Email to — Sets the recipient address for email alerts. Available when Enable email alert is enabled.
Track Stacked Imbalances — Enables detection and tracking of stacked imbalance zones on the chart.
Stacked Imbalances Threshold — Sets the minimum number of consecutive imbalanced levels required to form a stacked imbalance zone (2 or more).
Draw Stacked Imbalances Zone — Enables visual display of the zone drawn around a detected stacked imbalance. Also required for retest and breakout markers, zone plots, zone alerts and the MFE/MAE Tracker.
Stacked Imbalance Strategy — Selects which zone interaction is marked on the chart: Retest or Breakout. Available when Draw Stacked Imbalances Zone is enabled.
Track Unfinished Auctions — Enables detection of unfinished auctions at bar highs and lows. Touch alerts are delivered through the selected alert channels.
Minimum Volume — Sets the minimum bid volume and ask volume required at the bar extreme to register an unfinished auction. Available when Track Unfinished Auctions is enabled.
Show Statistics — Enables or disables the on-screen summary table with per-bar metrics.
Show Volume, Show Buy Volume, Show Sell Volume, Show Delta, Show Delta %, Show Cumulative Delta, Show Min. Delta, Show Max. Delta — Show or hide individual rows of the statistics table. Available when Show Statistics is enabled.
Enable Tracker — Enables the MFE/MAE Tracker and its on-chart table. Available when Track Stacked Imbalances and Draw Stacked Imbalances Zone are enabled.
Enable Opposite Signal — Adds a measurement window that lasts until the next marker in the opposite direction.
Calculation Precision — Selects the price data used to measure excursions: Minute or Tick.
Enable Period 1–4 — Turns each of the four measurement windows on or off.
Period 1–4 Type — Selects the unit of the window length: Seconds, Minutes or Days.
Period 1–4 Seconds / Minutes / Days — Sets the window length in the selected unit.
Track Long Signals / Track Short Signals — Include bullish or bearish markers in the tracker statistics.
Show Indicator Name — Shows the indicator name in the table header.
Table Width (%) — Sets the width of the tracker table relative to the chart.
Table Font Size — Sets the font size of the tracker table, in pixels.
Font Color Chart — Sets the color of the numbers in the footprint grid.
Font Color Statistics (values) / Font Color Statistics (labels) — Set the colors of the values and row labels in the statistics table. Available when Show Statistics is enabled.
The indicator exposes a set of analytical plot outputs for structured integration with third-party strategy builders and automation tools such as BloodHound and BlackBird (SharkIndicators), as well as other algorithmic trading environments.
| Analytical Plot Name | Output Values |
| Max. delta | Value |
| Min. delta | Value |
| Cum. delta | Value |
| Delta % | Value |
| Delta | Value |
| Sell vol. | Value |
| Buy vol. | Value |
| Vol. | Value |
| Bullish Imbalance Zone | > 0 |
| Bearish Imbalance Zone | > 0 |
| Bullish Imbalance Zone Upper Boundary | Value |
| Bullish Imbalance Zone Lower Boundary | Value |
| Bearish Imbalance Zone Upper Boundary | Value |
| Bearish Imbalance Zone Lower Boundary | Value |
| Upper Unfinished Auction Close | > 0 |
| Lower Unfinished Auction Close | > 0 |
| Nearest Unfinished Auction Above | Value |
| Nearest Unfinished Auction Below | Value |
| Long MFE/MAE Period 1 | Value |
| Short MFE/MAE Period 1 | Value |
| Long MFE/MAE Period 2 | Value |
| Short MFE/MAE Period 2 | Value |
| Long MFE/MAE Period 3 | Value |
| Short MFE/MAE Period 3 | Value |
| Long MFE/MAE Period 4 | Value |
| Short MFE/MAE Period 4 | Value |
| Long MFE/MAE Opposite | Value |
| Short MFE/MAE Opposite | Value |
Delta % is returned as a ratio from −1 to +1 and shown as a percentage on the chart. Zone marker and Unfinished Auction Close plots hold a price only on the bar where the event occurs. Nearest Unfinished Auction Above and Below return the nearest untouched level above the current bar’s high and below its low. MFE/MAE plots return the median MFE/MAE ratio for the corresponding window.
Plot output names and descriptions are technical identifiers intended solely for software integration purposes and do not constitute trading advice, signals, or recommendations.

We can customize this indicator to your requirements: adding functions, modifying logic, or integrating it with other tools in your workflow.
We also convert indicators into automated trading strategies with additional functions such as trailing stops, risk management and filters, built strictly according to your specifications.
Request a free consultation to discuss the technical scope and timeline of your project.
We keep developing and refining our indicators. If you have found a bug, think something important is missing, or have an idea for the next version, send us a message. Feedback from traders who use the indicator shapes what we add and fix next.
Nordman Algorithms is a trade name of Nordman Algorithms OÜ (Reg. No. 14435535), registered in Tallinn, Estonia.
Software Nature & User Responsibility — Nordman Algorithms provides algorithmic software tools for technical analysis. Nordman Algorithms is not a financial advisor and is not liable for any losses. All trades conducted based on the software’s output are executed at the user’s sole discretion and risk.
Visual Markers & Signal Disclosure — This software may display visual markers (such as arrows, dots, or alerts) when predefined mathematical conditions are met. These markers are provided for educational and analytical purposes only, must not be interpreted as financial guidance, and do not constitute a recommendation to buy, sell, or hold any financial instrument. Users must independently validate all visual cues within their own trading methodology.
No Financial Advice — Nordman Algorithms does not provide discretionary trading signals, investment advice, or managed signal services. Our software represents a mathematical visualization of historical and real-time data. The appearance of a visual marker does not guarantee a profitable trade or predict future market behavior.
Trading Risk Warning — Futures, Forex, and options trading involve significant risk. Risk capital is money that can be lost without jeopardizing financial security. Only risk capital should be used for trading. Past performance is not indicative of future results. View Full Risk Disclosure: https://www.nordman-algorithms.com/risk-disclosure/
ESMA Risk Warning — Financial instruments, especially those involving leverage such as CFDs and Forex, are complex and carry a high risk of rapid financial loss. Our software provides analytical outputs and visual markers based on predefined mathematical conditions and does not mitigate or reduce inherent market risks. You should carefully consider whether you understand how leveraged financial instruments work and whether you can afford the high risk of losing your capital.
CFTC Rule 4.41 — Hypothetical or simulated performance results have inherent limitations. Unlike actual performance records, simulated results do not represent real trading. Because trades have not actually been executed, these results may under- or over-compensate for the impact of market factors such as liquidity. No representation is being made that any account will achieve profits or losses similar to those shown.
Trademark Notice — NinjaTrader® is a registered trademark of NinjaTrader Group, LLC. No NinjaTrader company has any affiliation with the owner, developer, or provider of the products or services described herein, or any interest, ownership or otherwise, in any such product or service, or endorses, recommends or approves any such product or service.