I keep seeing these three concepts used almost interchangeably when discussing Volume Profile, delta, and other tick-driven indicators in NinjaTrader:
-
Tick Replay
-
Tick resolution
-
A secondary 1-tick data series
They can all involve tick data, but they solve different problems.
I thought it might be useful to separate them clearly.
1. Tick Replay is about historical event processing
Tick Replay is a NinjaTrader feature intended for NinjaScript indicators and strategies that need historical market-data events processed in sequence.
It is useful when an indicator depends on what happened inside a bar rather than only on the completed OHLC values.
For example, an indicator may care about:
-
individual trades,
-
intrabar state changes,
-
bid/ask/last events,
-
the sequence in which its logic develops historically.
Enabling Tick Replay does not simply change your chart into a 1-tick chart.
It also does not automatically make every indicator more accurate. The script has to be written to actually use the historical market-data events that Tick Replay provides.
There is also a performance cost. Reconstructing historical calculations event by event is much more work than processing completed minute bars.
So I would think of Tick Replay as:
“Replay the historical event stream through my NinjaScript logic.”
Not:
“Use more accurate bars.”
2. Tick resolution in Volume Profile is a source-data choice
This is a different concept.
For example, NinjaTrader’s Order Flow Volume Profile can build a profile using Minute or Tick resolution.
With Minute resolution, the profile is built from 1-minute data. NinjaTrader has to approximate how the volume inside that minute should be distributed across the prices traded by the bar.
With Tick resolution, the profile uses 1-tick data instead.
That changes the granularity of the data being used to construct the profile.
So Tick resolution means roughly:
“Build this profile from individual tick records instead of aggregated minute bars.”
It does not mean Tick Replay is enabled.
You can therefore have a Volume Profile using Tick resolution without confusing that setting with the Tick Replay option on a NinjaScript indicator.
This distinction becomes especially important for things like:
-
POC
-
VAH / VAL
-
delta
-
Buy/Sell profiles
-
narrow intraday profiles
-
profiles where a few price levels matter significantly
A profile calculated from minute-level approximation and one calculated from actual tick-level inputs can legitimately produce different results.
3. A secondary 1-tick series is an additional Bars object
A developer can also do something like:
AddDataSeries(BarsPeriodType.Tick, 1);
That creates another Bars series inside the NinjaScript.
The primary chart might be 5-minute bars while the secondary series is 1-tick.
The script can then process the secondary series separately through its BarsInProgress index and use those ticks to build its own calculations.
For example, you might use the secondary series to accumulate:
-
volume at each price,
-
tick counts,
-
custom delta logic,
-
intrabar statistics,
-
data mapped back to the primary bars.
But adding a 1-tick secondary series does not automatically turn the script into Tick Replay.
It simply gives the script another data series with 1-tick bars.
That is an important architectural difference.
A simple way to remember the difference
Tick Replay
Historical event-processing mechanism for NinjaScript.
Tick resolution
Granularity of the source data used to build something such as a Volume Profile.
Secondary 1-tick series
An additional Bars series explicitly added to a multi-series NinjaScript.
They can sometimes be used together, but they are not substitutes for one another.
One more common source of confusion: Playback / Market Replay
I would also keep Playback separate from all three.
Playback is about running a historical session forward as though time were progressing again.
That is a different use case from rebuilding an indicator’s historical state when a chart loads.
So if the question is:
“I want to watch the profile develop through the session again.”
Playback may be the relevant tool.
If the question is:
“My custom indicator needs historical intrabar events.”
Tick Replay may be relevant.
If the question is:
“I want the profile calculated from individual trades rather than minute-bar approximation.”
Tick resolution is the relevant setting.
And if the question is:
“I want complete control over what my NinjaScript does with every historical tick.”
A secondary 1-tick series may be the better architecture.
A useful test
One experiment I find useful is to take a simple 5-minute indicator and add a secondary 1-tick series.
Print:
-
BarsInProgress -
timestamp
-
price
-
volume
Then compare the script with Tick Replay disabled and enabled.
It becomes much easier to see that the secondary tick series and Tick Replay are affecting different parts of the processing model.
I’m curious how others here choose between these approaches.
For people building Volume Profile, footprint, delta, or other tick-driven indicators: do you normally prefer a secondary 1-tick series, Tick Replay, or a combination depending on the calculation?