Skip to main content

mzFootprint

The mzFootprint indicator displays order flow data as a footprint (cluster) chart overlaid on NinjaTrader price bars. Each bar is broken down by price level, showing bid and ask volumes, delta, imbalances, absorption patterns, and more.

Data required: Level 1 (tick data)

Key Features

  • Footprint ladder with bid/ask volumes at every price level
  • 8 footprint styles — BidAsk, Volume, Delta, DeltaPercentage, TradesNumber, Bid, Ask, None
  • Imbalance detection with configurable ratio threshold and S/R zones
  • Absorption patterns with 5 concurrent detection levels
  • Unfinished Auction highlighting
  • Bar Volume Profile with POC and Value Area per bar
  • Session/Daily Volume Profile Levels — developing POC and VA lines
  • Statistics Grid — 16 real-time metrics per bar
  • Bar Statistics — summary row with volume, delta, COT, ratio numbers
  • Cluster Zones — horizontal zones projected from significant clusters
  • Delta Divergence signals — built-in divergence detection
  • Alerts and notifications — sound, email, per-metric thresholds

Footprint Styles

The indicator supports two independent footprint columns (Left and Right), each with its own style and settings.

StyleDescription
BidAskClassical bid x ask footprint — shows volume on bid and ask sides
VolumeTotal traded volume per cluster
DeltaBid-Ask volume difference (positive = buying pressure)
DeltaPercentageDelta as a percentage of total volume
TradesNumberNumber of individual trades per cluster
BidOnly bid-side volume
AskOnly ask-side volume
NoneColumn hidden

Footprint styles: BidAsk, Volume, Delta

Cluster Visualization

Each footprint column supports three cluster rendering styles:

StyleDescription
BrickSolid color fill of the entire cluster cell
HistogramPartial fill proportional to the cell's value relative to the bar/chart maximum
NoneNo color fill — text values only

Cluster Scaling

Controls how the histogram fill is calculated:

ScaleDescription
BarScaled relative to the current bar's maximum value
ChartScaled across all visible bars on the chart
AllScaled across all loaded bars

Data Sources

Each column has three independent data source settings:

  • Scale source — which data determines histogram fill size (Volume, Delta, or TradesNumber)
  • Color source — which data determines cell coloring
  • Gradient source — which data drives the gradient/heatmap intensity

Enable Auto sources to have these set automatically based on the selected footprint style.

Color Modes

ModeDescription
SolidUniform color for all clusters
SaturationColor intensity scales with value — higher values are more saturated
HeatmapMulti-color gradient from cool to hot
GrayScale HeatmapMonochrome intensity gradient
Custom4-level color thresholds — define volume breakpoints and assign a color to each level

Custom Color Thresholds

When using Custom mode, you define up to 4 color levels:

SettingDescription
Custom 'less' filterValues below this get the "less" color
Custom '>=' filter #1First threshold
Custom '>=' filter #2Second threshold
Custom '>=' filter #3Third threshold (highest)

Each threshold has a corresponding color brush.

Settings Reference

Filters

SettingDefaultDescription
Ticks per level1Price level aggregation — set to 2+ to merge adjacent levels
Trade min0Minimum trade size to include
Trade max-1Maximum trade size (-1 = unlimited)

Presentation

SettingDefaultDescription
Display volume filter0Hide clusters below this value
BidColor for bid-side background
AskColor for ask-side background
Bid/Ask relative scalingtrueScale bid and ask sides relative to each other
Auto-scale valuestrueAutomatically adjust font size to fit cells
Bar borderfalseShow border around each footprint bar
Bar markerfalseShow bar markers instead of candles
Bar space, px100Vertical space between bars
Bar width, px3Width of the bar marker
Bar outer margin, px8Horizontal space between bars
Control right marginfalseLet the indicator control chart right margin
Chart right margin, px40Custom right margin value

Bar Volume Profile

Per-bar volume distribution analysis.

SettingDefaultDescription
POCstrueShow Point of Control
POCs count1Number of POC levels to display (1–10)
Primary POC borderYellow, 2pxStyle of the primary POC marker
Other POCs borderDarkOrange, 2pxStyle of secondary POC markers
Min width, px0Minimum pixel width for POC marker
VAtrueShow Value Area
VA, %68Value Area percentage
VA colorWhiteValue Area fill color
VA opacity, %70Value Area transparency

Volume Profile Levels

Session or daily developing POC and Value Area lines.

SettingDefaultDescription
ModeSessionSession or Daily profile calculation
POC: enablefalseShow session/daily POC line
POC: developingtrueShow developing POC (updates on each bar)
POC: lineOrange, 8pxPOC line style
VA: enablefalseShow session/daily Value Area lines
VA: developingtrueShow developing VA
VA: %68Value Area percentage
VA: lineRoyalBlue, dotted, 6pxVA line style

Imbalance

Imbalance detection highlights clusters where the bid/ask volume ratio is disproportionate, indicating aggressive buying or selling.

SettingDefaultDescription
ShowtrueEnable imbalance detection
Only ImbalancefalseShow only imbalanced cells (hide everything else)
Imbalance, %200Ratio threshold — e.g., 200% means one side must be 2x the other
Filter0Minimum volume on the imbalance side
Sell/Resistance zoneRedColor for sell-side (bid) imbalance
Buy/Support zoneMediumSeaGreenColor for buy-side (ask) imbalance
Highlight valuestrueColor the text values of imbalanced cells

How Imbalance Works

mzFootprint calculates diagonal imbalance. A diagonal imbalance at the Ask side means the volume of filled Buy orders is greater by a given percentage than the volume of filled Sell orders at the price level just below:

Formula: (AskVolume / BidVolume_below - 1) × 100

Example: 71-lot Ask at 2384.50 vs 19-lot Bid at 2384.25:

(71 / 19 - 1) × 100 = 274%

With the default 200% threshold, this cluster is flagged as an imbalance.

Absorption is a diagonal imbalance combined with level rejection. The Depth parameter (in ticks) defines how far the price must bounce from the absorption level to qualify.

S/R zone logic:

  • Imbalance levels on the Ask side create a support zone
  • Imbalance levels on the Bid side create a resistance zone
  • For absorption, the logic is reversed: Ask-side absorption creates resistance, Bid-side absorption creates support
  • The more volume traded and the more consecutive levels in a zone, the stronger that zone is
  • Zones can be canceled at session end (Break on session) or when price crosses and stays beyond the zone

Diagonal imbalance calculation on footprint

Imbalance Markers

When footprint values are not visible (zoomed out), markers indicate where imbalances occur:

SettingDefaultDescription
Marker: visibilityNoValuesWhen to show: None, NoValues, or Always
Marker: typeDotShape: Dot or Cluster
Marker: positionOuterPlacement: Inner, Center, or Outer

Imbalance S/R Zones

Project horizontal support/resistance zones from consecutive imbalance levels:

SettingDefaultDescription
S/R zones: enablefalseEnable S/R zone projection
S/R zones: consecutive levels2Minimum stacked imbalance levels to form a zone
S/R zones: volume filter0Minimum volume for qualifying levels
S/R zones: ended byByBarHighLowZone termination rule: ByBarHighLow, ByBarClose, ByBarPOC, or ByBarTouch
S/R zones: break on sessiontrueEnd zones at session boundaries
S/R zones: opacity, %25Zone fill transparency
S/R zones: alertfalseSound alert when price approaches a zone

Imbalance S/R zones on chart

Absorption

Absorption detects levels where aggressive orders are being absorbed by passive limit orders. The indicator supports 5 independent absorption levels, each with its own threshold, depth, and colors.

Per-level settings (repeated for #1 through #5):

SettingDefault (#1)Description
ShowfalseEnable this absorption level
Absorption, %68Ratio threshold for absorption detection
Depth1Number of adjacent price levels to consider
Filter0Minimum volume filter
S/R zones: consecutive levels2Stacked levels required for a zone
S/R zones: volume filter0Volume filter for zone qualification
Sell/Support zoneCyan, 3pxSell-side absorption zone color
Buy/Resistance zoneOrange, 3pxBuy-side absorption zone color

Global absorption settings:

SettingDefaultDescription
Only AbsorptionfalseShow only absorption cells
S/R zones: enablefalseEnable absorption S/R zones
S/R zones: ended byByBarHighLowZone termination rule
S/R zones: break on sessiontrueEnd zones at session boundaries
S/R zones: opacity, %25Zone fill transparency

Absorption zones at bar extremes

Unfinished Auction

An unfinished auction occurs when a bar closes with non-zero volume at the high or low — indicating the market did not fully auction that price level.

SettingDefaultDescription
ShowfalseEnable unfinished auction highlighting
ColorIndigoCell background color
Opacity, %30Background transparency
BorderIndigoCell border style

Bar Statistics

Summary statistics displayed below or beside each footprint bar.

MetricDescription
VolumeTotal bar volume
DeltaNet delta (ask volume minus bid volume)
Absolute Delta AverageAverage absolute delta across clusters
Min/Max DeltaMinimum and maximum delta within the bar
Delta %Delta as a percentage of total volume
COTCOT High and Low values
Ratio NumbersNEUTRAL / REJECTED / DEFENDED classification based on configurable bounds
SettingDefaultDescription
Values are x1000trueDivide displayed values by 1000
Values divider1Additional custom divider for values
Negative DeltaRedColor for negative delta
Positive DeltaGreenColor for positive delta
FontMontserrat, 12ptStatistics font

COT (Commitment Of Traders)

COT High and COT Low measure the cumulative delta from key price events:

  • COT High — cumulative bid/ask delta starting from the moment the price makes a new high (or repeats the previous one). It reveals the buy/sell balance after a new high is reached.
  • COT Low — the same logic applied at new lows.

Trading interpretation: A new high acts as a market test, and COT High is the reaction. If the price stays at highs while COT High is negative and growing in absolute value, this indicates strong support by buy limit orders.

Ratio Numbers

Ratio Numbers classify bar activity into three states based on configurable bounds:

SettingDefaultDescription
Ratio Numbers: bounds low0.71Lower boundary for NEUTRAL
Ratio Numbers: bounds high29.0Upper boundary for NEUTRAL
NEUTRALGrayColor when ratio is within bounds
REJECTED/DEFENDEDRoyalBlueColor when ratio is outside bounds

Calculation: For an up-bar, the ratio is bid volume above bar low divided by the bid volume at the bar low. For a down-bar, the ratio is ask volume below bar high divided by the ask volume at the bar high.

Interpretation:

RatioStateMeaning
0.71–29.0NEUTRALMarket is facilitating trade at this level
> 29.0REJECTEDPrice is being rejected — below an up-bar means lower prices rejected; above a down-bar means higher prices rejected
< 0.71DEFENDEDPrice level is being defended by limit orders — below an up-bar means buyers supporting; above a down-bar means sellers defending

Statistics Grid

A detailed grid displaying up to 16 real-time metrics per bar, rendered alongside the footprint.

Statistics grid with 6 metrics per bar

Available Metrics

MetricDescription
TradesNumber of trades
VolumeTotal volume
Buy VolumeBuy-side volume
Sell VolumeSell-side volume
DeltaNet delta
Delta %Delta percentage
Absolute Delta AverageAverage absolute delta
Delta CumulativeRunning cumulative delta
Min DeltaMinimum delta in bar
Max DeltaMaximum delta in bar
Delta ChangeDelta change from previous bar
COT HighCOT high value
COT LowCOT low value
Delta RateRate of delta change (per tick or per millisecond)
Volume per SecondVolume arrival rate
Bar DurationTime duration of the bar

Each metric can be individually shown/hidden and has a configurable highlight threshold for visual emphasis.

SettingDefaultDescription
ShowfalseEnable the statistics grid
Show legendtrueDisplay row labels
Legend positionLeftLabel placement: Left or Right
Grid in front of FootprinttrueRender grid above the footprint
Predicted values: showfalseShow predicted values for incomplete bars
Values are x1000trueDivide values by 1000
Cell height, px24Height of each grid row
Cell color scaleChartScale color intensity: Chart or All
Auto-scale valuestrueAuto-fit text to cell size
Auto-scale barstrueScale bars to fit cell
FontMontserrat, 12ptGrid font

Delta Rate

Delta Rate measures the rate of delta change over a chosen time interval (milliseconds) or tick interval. When delta changes, the price also changes — the indicator shows the price range at which the delta rate occurred.

Only the maximal (by absolute value) Delta Rate is recorded and displayed per bar in the Statistics Grid and optionally on the chart as a vertical line.

High Delta Rate indicates:

  • Stop-loss triggers cascading
  • Price reversals
  • Breakouts

Predicted Values

Statistics values are extrapolated proportionally to bar time. A gauge shows the progress of the bar with a countdown to bar close. This feature is available for time-based intraday bar types only.

Projecting Values on Chart

Each Statistics Grid metric has a project toggle and a project threshold setting. When enabled, cells exceeding the threshold are projected directly onto the chart, highlighting bars where that metric is significant.

Example: Enable Volume: project and set Volume: project threshold to highlight bars with notable volume directly on the price chart.

Cluster Zones

Cluster zones project horizontal zones from significant volume clusters into the future, acting as potential support/resistance levels.

Each footprint column (Left/Right) has independent cluster zone settings:

SettingDefaultDescription
Cluster Zones: enablefalseEnable zone projection
Cluster Zones: on bar closefalseOnly create zones after bar closes
Cluster Zones: filter min0Minimum cluster value to qualify
Cluster Zones: filter max-1Maximum cluster value (-1 = unlimited)
Cluster Zones: ignore bar high/lowfalseExclude clusters at bar extremes
Cluster Zones: ended byByBarHighLowTermination rule: ByBarHighLow or ByBarTouch
Cluster Zones: break on sessionfalseEnd zones at session boundaries
Cluster Zones: styleZoneDisplay: Zone, Line, or None
Cluster Zones: boxfalseDraw a box around the zone

Use Cases

Cluster Zones can identify different types of significant price levels depending on filter settings:

  • Low Volume Nodes (LVN): Set a small filter min and filter max range to isolate low-volume clusters — areas where price moved quickly and may act as future breakout/breakdown levels
  • High Volume Nodes (HVN): Set a large filter min threshold to capture high-volume clusters — areas of price acceptance that often act as magnets or support/resistance
  • Delta/Delta Percentage ranges: Filter by delta values to find clusters with strong directional bias
  • Trades ranges: Filter by number of trades to spot institutional or retail activity clusters

Signals

Built-in delta divergence signal detection (licensed builds only).

SettingDefaultDescription
Delta Divergence: enablefalseEnable divergence signals
Delta Divergence: volume threshold-1Minimum volume (-1 = any)
Delta Divergence: delta threshold100Minimum delta for signal
Delta Divergence: alertfalsePlay sound on signal

Delta Divergence is a trend reversal signal triggered on bar close:

  • LONG signal: Price makes a new low with a bullish candle and positive delta
  • SHORT signal: Price makes a new high with a bearish candle and negative delta

Example: A bearish bar making a new high with -135 delta. When the next bullish bar closes, the signal fires for a short trade.

For full divergence analysis, see the dedicated mzDeltaDivergence indicator.

Use Cases for ES

The following presets demonstrate common mzFootprint configurations for E-mini S&P 500 (ES). Each use case lists only settings that differ from defaults.

Classic Bid/Ask Footprint

Standard order flow reading — see bid/ask volumes at every price level with visual emphasis on delta.

SettingValue
Left: Footprint styleBidAsk
Left: Cluster styleBrick
Left: Color modeSaturation
Left: Color sourceDelta
POCstrue
POCs count1
VAtrue
VA, %68

The default starting point for footprint analysis. Saturation mode highlights clusters where delta is strongest. POC and Value Area show where the most volume traded within each bar. Look for price rejection at Value Area boundaries.

Delta Heatmap

Instantly spot aggressive buying and selling clusters across the chart.

SettingValue
Left: Footprint styleDelta
Left: Cluster styleBrick
Left: Color modeHeatmap
Left: Scale sourceDelta
Left: Color sourceDelta
Left: Gradient sourceDelta
Display volume filter50

Delta-only view with heatmap coloring turns each cell into a heat signature. Hot cells = aggressive activity. Filter out noise below 50 contracts. Useful on 5–15 min charts to find bars with hidden aggression that candlesticks don't reveal.

Volume Clusters with Custom Thresholds

Highlight institutional volume levels on ES using fixed thresholds.

SettingValue
Left: Footprint styleVolume
Left: Cluster styleBrick
Left: Color modeCustom
Custom 'less' filter500
Custom '>=' filter #1500
Custom '>=' filter #21000
Custom '>=' filter #32000

Four color tiers make institutional activity stand out: cells under 500 get a muted color, 500+ first highlight, 1000+ second, 2000+ brightest. Adjust thresholds based on current ES average volume — these values work for regular trading hours.

Imbalance Detection

Find price levels with aggressive one-sided order flow.

SettingValue
Imbalance: Showtrue
Imbalance, %300
Imbalance: Filter10
Imbalance: Highlight valuestrue
Imbalance: Marker: visibilityAlways
Imbalance: Marker: typeDot

A 300% threshold (3:1 ratio) ensures only strong imbalances are flagged. Filter of 10 removes noise from thin price levels. Dot markers visible at any zoom level. Stacked buy imbalances at bar lows indicate support; stacked sell imbalances at bar highs indicate resistance.

Imbalance S/R Zones

Project support and resistance zones from consecutive imbalance levels.

SettingValue
Imbalance: Showtrue
Imbalance, %200
Imbalance: Filter10
S/R zones: enabletrue
S/R zones: consecutive levels3
S/R zones: volume filter10
S/R zones: ended byByBarClose

Three consecutive imbalance levels required — produces fewer but higher-quality zones. ByBarClose termination is more conservative than ByBarHighLow: a zone survives wicks and only ends on a decisive close through it. Green zones = support, red zones = resistance.

Absorption Pattern Detection

Detect where passive limit orders absorb aggressive market orders — exhaustion and reversal points.

SettingValue
Absorption #1: Showtrue
Absorption #1: Absorption, %100
Absorption #1: Depth2
Absorption #1: Filter20
Absorption #2: Showtrue
Absorption #2: Absorption, %200
Absorption #2: Depth1
Absorption #2: Filter50
Absorption: S/R zones: enabletrue
Absorption: S/R zones: ended byByBarHighLow

Two absorption levels work together: Level #1 (100%, depth 2) casts a wider net for moderate absorption, Level #2 (200%, depth 1) catches only strong absorption events with 50+ contracts. Absorption at bar extremes often precedes reversals. S/R zones project these levels forward.

Unfinished Auction

Find bars with incomplete price auction — potential continuation or revisit levels.

SettingValue
Unfinished Auction: Showtrue
POCstrue
POCs count1
POC: enabletrue
POC: developingtrue

An unfinished auction means the bar closed with volume still at the high or low — the market did not fully reject that price. These levels often get revisited. Combine with developing session POC to see whether unfinished levels align with the session's value center.

Cluster Zones — High Volume Nodes

Project horizontal S/R zones from high-volume clusters.

SettingValue
Left: Footprint styleVolume
Left: Cluster styleHistogram
Cluster Zones: enabletrue
Cluster Zones: filter min500
Cluster Zones: ignore bar high/lowtrue
Cluster Zones: on bar closetrue
Cluster Zones: ended byByBarHighLow
Cluster Zones: styleZone

Zones project from clusters with 500+ contracts, excluding bar highs/lows (which are often just wicks, not genuine support/resistance). "On bar close" prevents false zones from forming mid-bar. High-volume clusters act as magnets — price tends to revisit them.

Delta Divergence Signals

Detect potential trend reversals using delta divergence.

SettingValue
Delta Divergence: enabletrue
Delta Divergence: volume threshold5000
Delta Divergence: delta threshold200
Delta Divergence: alerttrue

A LONG signal fires when price makes a new low but the bar closes bullish with positive delta above 200 contracts — sellers failed to drive the close lower. Volume threshold of 5000 ensures the signal occurs on bars with enough participation to be meaningful. Works best on 5–15 min timeframes.

Statistics Grid for Scalping

Real-time metrics dashboard for ES scalping — monitor volume, delta, and pace at a glance.

SettingValue
Showtrue
Show legendtrue
Grid in front of Footprintfalse
Cell color scaleChart
Values are x1000true

Enable these metrics: Volume, Delta, Delta %, Delta Cumulative, Delta Rate, Volume per Second.

Six key metrics per bar: Volume and Delta for size, Delta % for context, Cumulative Delta for session trend, Delta Rate for speed of flow, Volume per Second for tempo. Grid behind footprint keeps clusters readable. Color scale per chart view — hot cells show where the action is relative to visible bars.

Performance Tips

mzFootprint is a tick-level indicator processing market data on every tick. To keep charts responsive:

Reduce loading time:

  • Use Tick Replay for maximum historical precision (requires additional PC resources)
  • Set Days to load to the minimum value you need
  • Remove unused indicators from the chart — use the visibility toggle (eye button) to temporarily hide indicators you need only periodically
  • Close unused shadow workspaces

Optimize live rendering:

  • Set MaximalRenderMs to 20–50 ms (under General > Optimize render performance). The chart may flash briefly but will remain responsive
  • Set Ticks per level to 2 or more for instruments with many price levels
  • This indicator supports OnBarClose mode for further optimization of system resources

Non-Bid/Ask Data Support

Some markets (Forex, cryptocurrencies, NSE/Indian stock market) do not provide historical bid/ask data. Without it, all historical trades appear on the Bid side only.

Solution: Set Orderflow > Calculation mode to UpDownTick for these instruments.

Hybrid mode (NSE): NSE market data providers do not transmit historical bid/ask data. Use Hybrid mode, which applies UpDownTick calculation for historical data and BidAsk calculation for real-time data (100% accurate attribution for live trades).

Recommendation: For Forex pairs, use the relevant futures contract (e.g., 6E for EURUSD) to enable all order flow features including DOM analysis.

Notifications

Configurable alerts for any metric crossing a threshold. Each alert supports:

  • Enable — turn the alert on/off
  • Threshold — trigger value
  • Sound — alert sound file (see Sound Files)
  • On bar close — fire alerts only on completed bars
  • Email — send email notifications (for imbalance/absorption alerts)

Available alert metrics: Trades, Volume, Buy Volume, Sell Volume, Delta, Delta %, Absolute Delta Average, Cumulative Delta, Delta Change, Delta Rate, COT High, COT Low, Left/Right Cluster, Imbalance, Absorption.