A signal you were watching live is gone when you sit down at the chart the next morning. Or it happens the other way around: yesterday's chart is covered in clean marks, and today the same indicator paints something that shows up mid-bar, wobbles for a while, and settles somewhere else. The usual conclusion is that the indicator is broken, or that it repaints.
Usually it is neither. It is one dropdown, plus a piece of NinjaTrader behavior that the dropdown never mentions.
Where the setting lives and what the three values do
Right click your chart, choose Indicators, and select the indicator in the list. The properties grid on the right has a Setup group holding three entries: Calculate, Label, and Maximum bars look back. Calculate is the one that decides how often the indicator recalculates.
- On bar close runs the calculation once, when the bar closes. This is the platform default, so it is what you have unless you or the indicator's author changed it.
- On each tick runs it on every incoming tick.
- On price change runs it only when the price actually changes. Two ticks in a row at the same price, and the second one does nothing.
Read that list and the obvious conclusion is that On each tick buys you a more responsive chart at some cost in CPU. That is true, and it is also about half of what is going on.
The asymmetry the dropdown does not mention
A historical bar in NinjaTrader stores the open, high, low, close, volume and time. It does not store the individual trades that built the bar, because keeping every tick for every instrument would be a far larger dataset. So on historical data there are no ticks to iterate, and NinjaTrader calculates once per bar close no matter what Calculate is set to. On each tick and On price change change nothing at all about the left side of your chart.
The setting only bites in real time, on the bar currently forming at the right edge.
That is the whole morning mystery. While you were trading, the right edge was recalculating on every tick and showing you the state of an unfinished bar. Overnight the platform restarted, that bar became history, and history gets exactly one calculation. The chart in front of you now came out of a different code path from the one you sat and watched.
Tick Replay, and the checkbox that is not there yet
Tick Replay is NinjaTrader's answer to this. It pushes the stored ticks back through your indicator so historical bars get calculated the way live bars do.
The first thing people hit is that the option is missing from where it should be. Tick Replay does not appear in the Data Series dialog until you switch it on globally, in Control Center under Tools, Options, Market data, where the checkbox is called Show Tick Replay. Only after that does a Tick Replay checkbox turn up in Data Series, which is why the standard first attempt at this is ten minutes of hunting through a dialog that does not yet contain the thing you are looking for.
Four things are worth knowing before you enable it everywhere:
- It costs real resources. NinjaTrader's own documentation says plainly that more PC resources go into calculating your indicators and strategies and that there will be a performance impact.
- It does not work with every bar type. Line Break and Renko cannot use Tick Replay, and the option is disabled when a chart is configured with either of them.
- It is not a backtesting tool. NinjaTrader states that Tick Replay is not intended to function in strategy backtests and will not produce the same results as running that strategy on live data with Tick Replay on.
- It only helps scripts written for it. An indicator benefits from Tick Replay only if it was explicitly programmed to calculate on those market data events. Switch it on for something that was not, and all you have bought is a slower chart load.
So reserve it for indicators that genuinely consume the tick sequence, volume profiles being the standard example, instead of turning it on chart wide because it sounds more accurate.
The four ways this goes wrong
The first is the classic: signals that appear and then vanish. With Calculate on each tick, the indicator is evaluating a bar that has not finished. A condition that is true halfway through the bar can be false by the close. Nothing has malfunctioned. You are watching a provisional answer, and it only becomes a problem when you treat it as a final one and click.
The second is a chart that reads differently after a restart, which is the same thing from the other end. If your journal says a setup triggered and the historical chart shows nothing at that spot, compare the two calculation paths before you decide your memory is at fault.
The third is a backtest that does not survive contact with live data. A strategy tested against historical bars was tested at one calculation per bar close. If its logic leans on intrabar state, the test never ran the code that will run tomorrow. Tick Replay does not close that gap either, by NinjaTrader's own statement.
The fourth catches tools that read other tools. Anything consuming another indicator's output has to know which bar the value belongs to, and reading the forming bar when the source publishes on close gets you a number that is still moving. This is exactly why ATM Whisperer has a BarsAgo setting: point it at an indicator that calculates on bar close and it reads the completed bar instead of the live one, so the order price stops chasing a value that has not settled. The Attach to Indicator post covers the rest of that panel.
What a signal indicator has to do about it
An indicator that prints a permanent mark has a harder job than one that draws a line, because a mark that moves after the fact is worse than no mark. It has to give the same answer in three different environments: historical without Tick Replay, historical with it, and live on each tick.
The way to manage that is to always judge completed bars, whichever mode the chart happens to be in. WiSE ships with Calculate already set to On each tick, so it is live at the right edge, and it normalizes the bar it evaluates internally. Historical or real time, the bar it grades is a closed one, and a mark that has printed does not move afterward. That is what zero repaint means in practice, and it is a property of how the thing is built rather than a promise on a sales page.
That still leaves the fair objection to grading only closed bars, which is that you would like some warning before the bar finishes. Predicted signals cover it. They print in the Unconfirmed color, yellow out of the box, and a yellow (2) means a second entry is expected as soon as a bar breaks the previous bar. When that break happens the symbol turns green or red for long or short. You see it coming without the printed history rewriting itself behind you. The understanding the signals reference walks through the full set of marks and colors.
A ten-minute audit of your own charts
- Open Indicators on a chart you actually trade and note the Calculate value for every indicator on it. Most traders have never looked and are sitting on the default.
- Reload the chart, or restart NinjaTrader, and compare the last hour of marks against what you remember seeing live. Anything that moved is repaint, and no dropdown setting fixes that.
- Turn on Show Tick Replay in Options if you want it, then enable Tick Replay per data series, only where an indicator was built to use it.
- For anything driving an order or an alert, decide on purpose whether it should act on the forming bar or the closed one, and set it that way instead of inheriting whatever it came with.
If false signals are what sent you looking into this, the filtering side of the problem is a separate lever and how to reduce false signals covers it. WiSE comes with a 7-day free trial, which is enough time to run this audit on your own charts rather than take anyone's word for how it behaves.
Futures trading involves substantial risk of loss and is not appropriate for all investors. Consistent calculation makes what you test match what you trade; it does not create an edge.