A useful repainting check compares an indicator's live output with what remains after the bar closes and the chart reloads. A signal moving on an open bar is not, by itself, proof of a flaw: cTrader calls an indicator's Calculate() method on every tick, while bar-close events belong to cBots, not indicators (cTrader's bar-event guide).
The word repainting is often used as if it means “bad indicator.” That is too blunt. TradingView defines it as historical and realtime calculations or plots behaving differently, and notes that some such behavior is expected rather than misleading (its repainting guide). The useful question is narrower: does this indicator behave consistently enough for the job you want it to do?
Run a like-for-like observation
A visual test is only useful when you hold the chart conditions steady. Use the same symbol, timeframe, indicator settings and data source throughout; note the chart timezone too, especially for session-based tools.
- Add the indicator and record its settings. Choose a chart where you can watch a bar form.
- While that bar is open, note any changing value, line or signal marker. Mark it as live-bar behavior, not as a confirmed signal.
- Once the next bar appears, record what remains on the now-closed bar. A chart screenshot or short screen recording makes the comparison less dependent on memory.
- Reload the chart without changing the symbol, timeframe, settings or data source. Compare the closed-bar values and markers with your record.
- Inspect earlier markers as well. Note whether a signal appears to move to an older bar, disappear, or change after recalculation.
This is an observation protocol, not a way to prove that the indicator's code is correct. cTrader's documentation says custom indicators calculate through Calculate() on each tick; its separate OnBarClosed() handler is a cBot event, not an indicator callback. Do not mistake an indicator's changing live-bar output for a cBot-style bar-close trigger.
Read the result without jumping to a verdict
| What you observe | What it tells you | What to check next |
|---|---|---|
| Output changes while the current bar is open | The value is responsive to an unfinished bar; that alone does not establish a defect | Decide whether your use requires a confirmed-bar value |
| Closed-bar output differs after reload | The result is not yet reproducible under your recorded conditions | Recheck the exact settings, symbol, timeframe and feed; repeat and keep the before/after record |
| A marker appears on an earlier bar only after the move is visible | The chart display deserves closer scrutiny | Ask the author how the marker is timestamped and whether it uses later bars to confirm it |
| Nothing changes in the checks you ran | No change was observed in those conditions | Do not treat a finite visual check as proof that no repainting can occur |
“Repainting” covers more than one behavior. TradingView's guide distinguishes ordinary live-bar updates from potentially misleading changes such as plotting events into the past. Those examples describe TradingView scripts; use them as questions to ask, not as claims about how a particular cTrader indicator is implemented.
Keep a small test record
Save the symbol, timeframe, indicator version if shown, parameter values, data source, chart timezone, test date and screenshots of the live and reloaded chart. If a value changed, record which bar changed and when you first saw it. This makes a useful question for the indicator author far more precise than “does it repaint?”
If the source code is unavailable, a chart test cannot reveal every internal calculation. cTrader's indicator overview says built-in indicators' code cannot be viewed or modified. Treat your observations as evidence of visible behavior under those conditions, not a certificate about hidden logic or future performance.
For a cBot workflow, separately log the indicator value that the bot actually reads and the event that causes it to act. Our guide to auditing a cBot decision log covers that trace; the cTrader indicators overview explains where indicators fit in the platform. A chart's appearance alone is not a test record.
Frequently asked
Does every live-bar change mean an indicator repaints badly?
No. cTrader indicators calculate on each tick, so output based on an unfinished bar may change before the bar closes. Whether that behavior suits your use depends on when you need the value.
Can a chart reload prove an indicator never repaints?
No. It can reveal differences in the conditions you tested, but it cannot prove what the indicator will do on every symbol, timeframe, data history or future bar.
What if I cannot inspect the indicator's code?
Keep a reproducible record and ask its author specific questions about closed-bar changes, historical markers and data requirements. A visual check cannot certify hidden logic.