Skip to main content

API Overview

The MZpack API is a C# framework for building custom indicators and automated trading strategies on NinjaTrader 8. It exposes all public classes of the MZpack library. This gives you programmatic access to the same order flow data, volume profiling, and trade detection that power the MZpack chart indicators — letting you create your own analysis tools and trading algorithms.

What You Can Build

Use CaseDescription
Custom indicatorsProcess order flow data (footprint, delta, volume profile, big trades, DOM) and render custom visualizations on NinjaTrader charts using SharpDX/Direct2D
Automated strategiesBuild rule-based trading systems using the strategy pipeline — combine signals, filters, and decision trees with built-in position and risk management
Data exportExtract indicator data (footprint clusters, volume profiles, trade records, DOM snapshots) to CSV for external analysis or machine learning

Architecture

The API is organized into three layers:

Core Types — data structures that represent market data at every granularity:

TypeWhat It Represents
ICandleOHLCV bar data
Tick & ITradeIndividual ticks and trade data

Indicators API — each chart indicator is accessible through a typed interface:

InterfaceChart IndicatorKey Data
IFootprintIndicatormzFootprintFootprint bars, clusters, imbalance, absorption, S/R zones
IVolumeProfileIndicatormzVolumeProfileVolume profiles, POC, Value Area, VWAP, TPO
IVolumeDeltaIndicatormzVolumeDeltaVolume/delta histograms, cumulative delta, icebergs
IBigTradeIndicatormzBigTradeFiltered trades, iceberg detection, DOM pressure
IMarketDepthIndicatormzMarketDepthDOM snapshots, liquidity, migration, imbalance
IDeltaDivergenceIndicatormzDeltaDivergenceZigZag breakpoints, divergence signals

Strategy Pipeline — components for building trading algorithms:

ComponentRole
ActionSignal generation — processes market data and outputs a trading direction
FilterTrade filtering — confirms or rejects signals based on additional conditions
Decision TreeCombines signals and filters using AND/OR/CONJUNCTION logic
EntryOrder submission — market, limit, or stop-limit with protective orders
ExitPosition closing — stop loss, profit target, and exit signals
TrailTrailing stop — follows price at a configurable distance after activation
Risk ManagementDaily limits — loss, drawdown, profit, and trade count caps

For a detailed walkthrough of how these components connect, see Pipeline Overview.

Strategy Indicator Classes

Strategies use their own internal indicator instances rather than chart indicators. Each strategy indicator class wraps the corresponding chart indicator:

Strategy ClassChart IndicatorData
StrategyFootprintIndicatormzFootprintLevel 1
StrategyVolumeProfileIndicatormzVolumeProfileLevel 1
StrategyVolumeDeltaIndicatormzVolumeDeltaLevel 1
StrategyBigTradeIndicatormzBigTradeLevel 1
StrategyMarketDepthIndicatormzMarketDepthLevel 2
StrategyDeltaDivergenceIndicatormzDeltaDivergenceLevel 1

Strategy indicators are not visible on the chart by default. Use Partially Visible mode to show only the data relevant to validated signals — see Algo Strategy — Partially Visible sample.

Built-in Signals

The API ships with 20+ ready-to-use signals that you can combine in decision trees. A few examples:

SignalSource IndicatorDescription
DeltaDivergenceSignalmzDeltaDivergencePrice/delta divergence at swing points
FootprintImbalanceSignalmzFootprintStacked imbalances indicating aggressive one-sided activity
FootprintAbsorptionSignalmzFootprintPassive absorption at price extremes
BigTradeSignalmzBigTradeLarge trade detection with optional iceberg and sweep filters
RelativeToProfileSignalmzVolumeProfilePrice position relative to VWAP, VAH, or VAL
DOMImbalanceSignalmzMarketDepthOrder book bid/ask imbalance

Custom signals are created by extending the Signal base class. See Built-in Strategies for examples of how these signals are combined.

Requirements

RequirementSpecification
PlatformNinjaTrader 8.0.27 or later
Runtime.NET Framework 4.8
LanguageC# 13 (NinjaTrader v8.1.6 required)
IDEVisual Studio 2022 or NinjaTrader 8 built-in editor
LicenseMZpack Strategies w/ Divergence or MZpack Indicators & Strategies w/ Divergence

See Prerequisites for the full development environment setup, and Project Setup for creating your first project.

Samples

All samples are included in the MZpack source code wrapped in #if APISAMPLE blocks with XML summary comments.

SampleClassWhat It Demonstrates
Advanced TemplateAdvancedTemplateAdvanced MZpack strategy template with full indicator setup
Biggest Trade IndicatorBiggestTradeIndicatorCustom indicator marking the biggest trade with a rectangle
Control PanelControlPanelControl Panel with [ControlPanel] attribute and CreateControlPanelElements()
Custom PlotsCustomPlotsAccess mzFootprint data, custom plots via StrategyPlotIndicator
Data Access — mzFootprintDataAccess_mzFootprintAccess StrategyFootprintIndicator data
Data Access — mzVolumeDeltaDataAccess_mzVolumeDeltaAccess StrategyVolumeDeltaIndicator data
Data Access — mzVolumeProfileDataAccess_mzVolumeProfile_MinuteAccuracyAccess StrategyVolumeProfileIndicator with Minute accuracy
Export Indicator ValuesExportIndicatorsValuesExport indicator values with Historical/Realtime temporality
Fibonacci Retracement EntryFiboRetracementEntryStrategyFibonacci retracement entry strategy
Multi-DataSeries AdvancedMultiDataSeriesAdvancedStrategyTrading on a second data series
Multi-DataSeries StrategyMultiDataSeriesStrategyUsing indicators on different data series
Algo Strategy — ATM + TradesClusterMZpackAlgoStrategy0Algo.Strategy with proprietary ATM and TradesClusterSignal
Algo Strategy — Patterns + ATMMZpackAlgoStrategy1Patterns with ATM, BigTradeSignal, EMASignal, and DOMImbalanceFilter (Level 2, live/replay)
Algo Strategy — Partially VisibleMZpackAlgoStrategy2Algo.Strategy with TradesClusterSignal, DOMImbalanceSignal, and Partially Visible mode
Algo Strategy — Footprint ImbalanceMZpackAlgoStrategy_ImbalanceAlgo.Strategy with FootprintImbalanceSignal
Custom Strategy — VWAP/POCMZpackCustomStrategy0StrategyVolumeProfileIndicator with VWAP/POC rules for backtesting (OnBarClose)
Custom Strategy — BigTrade + VolumeProfileMZpackCustomStrategy1StrategyBigTradeIndicator with StrategyVolumeProfileIndicator in Custom mode for backtesting
Custom Strategy — DOM + FootprintMZpackCustomStrategy4StrategyMarketDepthIndicator with StrategyFootprintIndicator, DOM imbalance/block/pace rules (Level 2, live/replay)
Custom Strategy — Liquidity MigrationMZpackCustomStrategy6Liquidity migration from StrategyMarketDepthIndicator (1 Tick, live/replay)
Technical IndicatorsMZpackTechnicalSample0Using well-known technical indicators in MZpack strategies
Risk ManagementRiskManagementRiskManagement class demo (OnBarClose)
Trading TimesTradingTimesTradingTimes feature (OnBarClose)

Source Code

The Source Code section provides developer-level walkthroughs of the 4 built-in strategy source files — class structure, indicator wiring, signal implementations, decision tree construction, and data export schemas:

StrategyWhat It Demonstrates
Footprint Action10 signals, AND/OR tree with mandatory grouping, runtime signal toggle, EMA indicator, per-signal bar filters
Ghost Resistance3 indicators, AND tree with OR sub-node, signal dependency, limit orders, one-entry-per-bar filter
Data ExportNon-trading utility, conditional indicators, per-indicator export schemas, 100+ export fields
Drawing Objects ExportMinimal strategy, XML schema loading, ChartObjectDescriptor mappings