Aggression oscillator, True Aggression and ROC services, plus trade classification.
Obsidian Flow Developer API
The order flow engines behind the indicators are a NinjaTrader-UI-free service layer. Developer Early Access gives you the interfaces directly, so a strategy, a Market Analyzer column or your own SuperDOM column consumes exactly what the indicator draws — the same code path, not a reimplementation.
One engine, two consumers, identical numbers.
The failure mode this exists to prevent is your strategy and your chart disagreeing about the same bar. Classification state is caller-owned and threaded explicitly through each call rather than held in shared mutable state, so there are no locks and no cross-chart contamination. Snapshots are cached by data version, so several consumers reading the same bar share one computed result instead of each triggering a rebuild.
Lock-free by design — classification state is owned by the caller, not the engine.
Version-stamped snapshot contract, so you can tell when a read is stale.
Where it fits.
For traders who write their own code and need the numbers to match what they see on the chart.
Requires NinjaTrader 8. OF-DEV-API-001