Learn

How to Check if a TradingView Indicator Repaints: A Practical Test

At a glance

Record what the indicator shows while a bar is open, after it closes and after reloading the same chart. Check when a marker first becomes known, not just where it ends up. Our Pine experiment separates provisional signals, confirmed signals and pivots plotted two bars into the past. A short test can reveal a problem; it cannot certify every future signal.

On this page
Two conceptual chart panels compare a live marker with a marker drawn earlier after reload.
AI-generated concept illustration of changing signal timing. The real TradingView evidence below comes from our separate teaching indicator.

A chart can show a perfectly placed signal without proving that the signal was available at that time. To check whether a TradingView indicator repaints, you need a record of what appeared before the outcome was known.

The useful question is specific: what changed, on which bar, and when could you first have acted on that information? This guide gives you a test you can run with or without source code, followed by our own Pine Script experiment and its original chart captures.

First identify the kind of change

TradingView uses repainting broadly for differences between historical and realtime calculations or plots. Updating an unfinished candle is not automatically deceptive. A problem arises when the displayed history implies earlier knowledge than the indicator actually supplied. TradingView’s definition and examples.

Use these distinctions when recording a result:

Scroll horizontally if needed

What you seeQuestion to investigate
A signal appears and disappears on the open candleWas it explicitly provisional, or was a confirmed signal promised?
A closed-bar marker changes after reloadWere data, settings and script version identical?
A marker appears on a candle several bars backWhen did the code first have enough information to draw it?
A signal depends on a higher timeframeHad that source candle also closed?
The chart changes after an input or version changeCan you reproduce the difference without changing the configuration?

A moving line, a delayed pivot and a future-data leak are different findings. Writing only “repaints: yes/no” loses the explanation a reader or developer needs.

Set up a comparison that means something

Before watching a signal, record the full symbol including exchange, candle type, chart timeframe, chart timezone, indicator name/version and every input. Use standard candles for the first controlled test. Keep the same saved layout and data source for the reload comparison.

Choose the behavior you expect in advance. For example: “The square must remain absent while this one-minute candle is open, then appear only if close is above EMA at confirmation.” That gives you something falsifiable. “The indicator looks accurate” does not.

Preserve the candle’s opening timestamp separately from the wall-clock time of your observation. Our example’s chart uses UTC+2, while its small live table explicitly uses UTC. Mixing those clocks would make the same candle look like two different observations.

If a closed-source indicator exposes no version, record the displayed name and test date and mark the version unknown. You can observe its behavior, but cannot inspect the hidden implementation or guarantee it remained unchanged.

Run the test without source code

  1. Watch an open candle. Save a screenshot or recording when a candidate marker appears. Include the symbol, timeframe, candle timestamp and settings. Record the displayed values rather than relying on the marker’s colour alone.
  2. Wait for its closing update. Inspect the same candle after a new candle begins. Note whether the marker stayed, vanished, changed position or first appeared at confirmation.
  3. Reload the saved chart. Return to the exact timestamp with the same inputs. Compare the closed candle’s values and markers with the earlier capture.
  4. Watch where new markers are placed. A symbol added to an older candle is a timing finding even if it never subsequently moves. Record both the marked candle and the first observation time.
  5. Repeat across relevant boundaries. Include new sessions and any higher-timeframe close used by the indicator. Keep each observation separate; do not turn an uneventful short sample into a universal guarantee.

If something differs, first rule out a changed input, symbol, chart type, script version or revised source data. Preserve the discrepant images before changing anything. “Different after reload” describes an observation; it does not by itself identify the cause.

Our live-bar experiment

We created RoboXpert Repainting Lab v1.00, an original Pine v6 teaching indicator with AI assistance. We added it successfully to TradingView on 26 September 2026, using BINANCE:BTCUSDT, standard 1-minute candles, EMA length 2 and pivot left/right length 2. It contains no strategy or order code.

The first part deliberately exposes two states:

ema = ta.ema(close, 2)
raw = close > ema
confirmed = barstate.isconfirmed and raw

The orange circle represents raw; the blue square represents confirmed. This is an above-EMA condition, not the crossover-plus-RSI rule in our AI indicator tutorial. The short length is a test input, not a recommended trading setting.

We followed the candle opening at 15:38 UTC+2:

Scroll horizontally if needed

Observation time, UTC+2CandleDisplayed closeDisplayed EMABar confirmedRaw / confirmed condition
15:38:14, still open15:3883,918.3983,915.3301 / 0
15:39:10, after close15:3883,932.0083,924.4011 / 1
15:41:00, after reload15:3883,932.0083,924.4011 / 1

These are visible UI readings rounded as displayed, not downloaded tick data. The screenshot immediately following the first reading can show a later price update within the same open candle; its confirmation and condition states are the comparison of interest.

TradingView teaching indicator on the open 15:38 candle: provisional condition 1, bar confirmed 0 and confirmed condition 0.
Open-bar capture, 26 September 2026, shortly after the 15:38:14 UTC+2 reading. The Data Window shows the provisional condition separately from confirmation. The small chart table uses UTC.

Open the full-size capture

The same 15:38 candle after closing, with close 83932.00, EMA 83924.40 and both conditions equal to 1.
Same selected candle after close, captured following the 15:39:10 UTC+2 reading. Use the Data Window’s selected-bar fields; the small chart table describes the latest bar.

Open the full-size capture

Reloaded TradingView chart with the selected 15:38 candle retaining close 83932.00, EMA 83924.40 and confirmed condition 1.
After reload, selected-bar values matched at 15:41:00 UTC+2. The chart viewport changed; the candle timestamp and Data Window values identify the comparison.

Open the full-size capture

Observed: the raw condition was true while confirmation was false; the confirmed condition became true after close; the selected historical values matched after reload. We did not observe this raw condition disappear before that candle closed. This is a successful observation of confirmation timing and one reload comparison, not evidence covering every future candle or every repainting mechanism.

A pivot can stay fixed and still arrive late

The second part of our script calculates a pivot high using two bars on each side. It draws the same confirmed event twice: a blue KNOWN triangle on the detection bar and an orange BACK triangle two bars earlier.

pivot = ta.pivothigh(high, 2, 2)
pivotKnown = barstate.isconfirmed and not na(pivot)
plotshape(pivotKnown, "Pivot known NOW", shape.triangledown,
     location.abovebar, color.blue, text = "KNOWN")
plotshape(pivotKnown, "Pivot drawn BACK", shape.triangledown,
     location.abovebar, color.orange, offset = -2, text = "BACK")

Our historical inspection after reload found the orange backplotted marker on 15:30, while the unshifted event belonged to 15:32. At 15:30 the Data Window showed Pivot drawn BACK = 1 but Pivot known on this bar = 0. At 15:32 it showed Pivot known on this bar = 1.

Selected 15:30 candle shows a backward-plotted pivot marker but Pivot known on this bar equals zero.
Historical inspection at 15:41:25 UTC+2: the orange marker is plotted at 15:30, while the unshifted knowledge field is zero there.

Open the full-size capture

Selected 15:32 candle has Pivot known on this bar equal to one, two bars after the marked high.
Inspection at 15:41:17 UTC+2: the blue KNOWN event belongs to 15:32. Both plots use the same condition; one has a minus-two-bar display offset.

Open the full-size capture

With our source’s confirmation requirement, that 15:32 event belongs to the closing update of the 15:32 candle, not its opening. The orange marker’s position therefore must not be treated as a signal available at 15:30.

This was an inspection of the plotted pair and its source logic, not a live recording of that pivot first appearing. The distinction matters: our captures establish where the two outputs are placed; the code establishes their shared calculation and explicit offset. A delayed pivot can be useful when presented honestly as a later identification of an earlier high.

Use Bar Replay for the question it can answer

Replay can help you advance through historical bars and notice when a marker is added to an earlier candle. Start before the suspected event, step forward one bar at a time, and record the replay cursor separately from the candle receiving the marker.

Do not assume a historical replay reconstructs the complete realtime sequence of price updates inside each candle. Our live observation above and the historical pivot inspection are separate evidence; we did not perform an additional replay experiment for this article.

TradingView also documents that server-side alerts continue to follow realtime data during replay and that new server-side alerts cannot be created in replay mode. A historical replay marker is therefore not proof of a historical alert being delivered. Official Bar Replay limitations.

For alert testing, return to realtime, create an alert with the intended saved settings, observe a qualifying event and inspect its log. Our Pine alert experiment documents an actual log entry and exactly which delivery channels were not tested.

Extra checks when you have Pine source

Trace the inputs of the final signal, not just its last line. These are review targets, not automatic proof of an error:

  • Open-bar data: check whether the signal can use changing close, high or low before confirmation. Pine’s realtime execution and rollback affect what survives from one update to the next. Execution model.
  • Higher-timeframe requests: a confirmed one-minute chart candle does not necessarily mean a requested hourly value is confirmed. Inspect the requested timeframe, expression, offsets and lookahead together. For confirmed higher-timeframe values, TradingView documents a previous-bar expression with lookahead_on; removing that offset can introduce future leakage on history. Do not apply the pattern blindly to every request. Other timeframes and data.
  • Backward placement: inspect negative plot offsets and earlier coordinates in drawing calls. Identify when the condition was calculated separately from where it was drawn.
  • Realtime-only state: review varip, barstate.isrealtime branches and other behavior that may not reproduce from historical bars alone.

barstate.isconfirmed is useful for the current chart’s confirmation timing. It is not a blanket fix for higher-timeframe requests, future leakage or backward plotting. Bar-state reference.

When using AI to review source, ask it to trace each signal’s data and timing and propose a falsifiable test. Do not accept “non-repainting” as a substitute for that explanation. Keep proprietary source out of a model service unless you have permission to share it.

Record a bounded conclusion

Reader resource · ZIP

Repainting test code and observation record

Original Pine v6 teaching indicator, dated observations, reproduction instructions and a blank test record. No orders or proprietary indicator code.

Download the repainting lab

The package contains the complete teaching indicator, our observation record, reproduction instructions, a blank test sheet and an MIT license. It does not contain our commercial indicator logic or an automated test of another author’s script.

Use one of these conclusions for each behavior:

Scroll horizontally if needed

ResultAppropriate wording
Behavior observed“The marker was first observed two bars after the candle on which it was drawn.”
Behavior not observed in the sample“These selected closed-bar values matched after reload under the recorded settings.”
Not assessable“The source is unavailable and we did not record the original realtime appearance.”

Keep an apparent failure reproducible: supply the original and later captures, timestamps, settings and a description of the expected behavior. Keep a passing result narrow enough that another reader can repeat it.

Does non-repainting mean an indicator is profitable?

No. Stable signal timing says nothing by itself about transaction costs, exits, position sizing or future returns. An indicator can consistently produce unhelpful signals. See backtest versus live evidence before interpreting chart markers as a trading result.

Can I certify a closed-source indicator with a short test?

You can document a change that occurred, or the absence of a change in the sample you watched. Without its implementation and broader observations, a short test cannot establish how every setting and market condition will behave.

Should I reject every indicator that updates an open candle?

Assess whether the updates match the promised behavior and your intended use. Provisional values can be useful when clearly identified. A claim about confirmed or actionable historical signals needs evidence of when those signals actually became available.

Friendly robot illustration representing the RoboXpert pen name.
AI-generated avatar

About the author

RoboXpert

Pen name

The person behind RoboXpert writes about expert advisors, trading evidence and programming, and develops their own trading software. They report 10 years of experience in these areas; this is self-reported, not an independently verified qualification or performance record.

Sources & further reading

Your next question

Continue reading

Build with AI

Create a TradingView Indicator with AI: Pine Script, Alerts and Checks

Build a small indicator and test its actual TradingView alert log.

Read the guide →
Testing & evidence

Backtest vs Live Trading: What EA Results Really Show

Separate chart behavior from evidence about trading results.

Read the guide →