Does your indicator repaint? How to check

Last verified: · Long-term evergreen content
Risk warning · YMYL This article is for educational purposes only and is not investment advice. Trading on the Forex market involves a high risk of capital loss — ESMA reports 74–89% of retail accounts lose money.

Krzysztof once brought me a screenshot of an arrow indicator he had bought for one hundred and fifty dollars. On the historical chart it looked like a dream — a green arrow on every low, a red one on every high, nine hits out of ten. We switched it on live together on EUR/USD, and within an hour one of the arrows he had seen five minutes earlier simply vanished. It was not a platform glitch. It was repainting — the indicator was changing its own history after the fact. Below I explain what repaint is, when it is honest, when it is a seller's trick, and how to catch it before it costs you money.

What repainting actually is

Repainting is the phenomenon where an indicator changes its earlier values or signals as new candles arrive on the chart. A buy arrow you saw two candles ago at 1.0850 suddenly reappears five pips lower once the next candle closes — or disappears entirely, as if it had never been there. An indicator line that pointed to a breakout yesterday is drawn today so that no breakout exists at that spot.

The effect is always the same and always expensive. On historical data the tool looks improbably accurate, because it shows the corrected version — the one that only settled once the move was already known. Live, however, you trade the left edge of that same history, the unconfirmed version that is still forming. The gap between what a backtest shows at a glance and what you actually saw at the moment of decision can be an abyss. That is why a pretty past chart is never, on its own, proof of accuracy.

Where repaint comes from

There are three sources of repainting, and they are worth telling apart, because not all of them are dishonest. The first is indicators that recalculate by nature. ZigZag is the textbook case: it draws a line between successive highs and lows, but by definition it does not know a point is a low until the market reverses by a set percentage. Its last leg is therefore only finalised once the move confirms — and until that point it can wander. The same applies to Parabolic SAR dots computed on the current candle. I unpack that indicator separately in the article on how Parabolic SAR works.

The second source is the error known as look-ahead bias — the indicator uses data that did not yet exist at that moment. Sometimes it is the effect of shifting the series to the right, sometimes a deliberate reach for the closing price of a candle that is still forming live. The third source is the most cynical: paid "magic" arrows, advertised as "non-repaint", that in reality recompute on every new candle. This is a classic marketing trick by system sellers — the perfect chart in the advert comes precisely from the repainting the buyer is never told about.

When repaint is honest and when it is a trick

The line does not run between "the indicator repaints" and "it does not", but between honesty and concealment. ZigZag repaints and is perfectly fine, as long as you use it for what it is built to do — organising market structure after the fact, measuring waves or placing retracements on a move that has already closed. The problem only appears when someone takes a tool that recalculates by nature and builds real-time entry signals on it, pretending that the last leg is certain.

The second kind of dishonesty is the seller's silence. A creator who shows a chart with ninety percent accuracy and does not breathe a word about arrows shifting after the candle closes is selling an illusion. An honest recalculating indicator always states in its description that the last value is provisional until the candle closes. If that note is missing and the chart is too beautiful, treat it as a red flag. The same principle applies to paid alerts — I wrote about it in the analysis of whether paid forex signals are worth buying.

"Overfitting a strategy to historical data leads to false conclusions — a system that looks superb on the past fails in real trading." — Robert Pardo, The Evaluation and Optimization of Trading Strategies, 2nd ed., Wiley, 2008.

An illustrative example — the magic arrow

Suppose Marek tests an arrow indicator advertised as "non-repaint, 90 percent accuracy". On the chart of the last three months he counts the signals by hand and genuinely gets nine hits out of ten — the arrows sit perfectly on lows and highs. So he opens a live demo account and watches the tool candle by candle for two weeks. This time the picture is different: some arrows appear with a delay only after the breakout, and roughly every fourth one vanishes after the candle it formed on closes. The real share of usable signals drops to around half.

That is the whole difference between an at-a-glance backtest and a forward-test on data moving forward. The historical chart showed the after-the-fact version — the one that settled once the move was already known. The demo showed the version Marek actually had in front of him at the moment of decision. The numbers are invented for the example, but the pattern is real and repeats with dozens of people who write to me with the same disappointment.

How to check whether an indicator repaints

The most reliable rule is this: read the signal only on a closed candle. If, after the candle closes, the arrow or line shifts, disappears or redraws backwards onto a better level, you have repainting. If it stays exactly where it was, the tool is honest. MQL5 programmers apply the same principle — a value written to an indicator buffer should not change after the candle closes, and the only permitted change is an update to the current, still-forming candle.

In practice you have three tools. The first is history replay: the "bar replay" feature in TradingView or the strategy tester in visual mode in MetaTrader 5 — you step through the chart candle by candle and watch whether the signal stays put. The second is comparing screenshots: you save the view now and return to the same fragment an hour later. The third, the decisive one, is a forward-test on a live demo account, which I cover in more depth in the guide to backtesting a strategy step by step and in the article on walk-forward analysis. Be wary, too, of tools that "always" hit the extremes — in a real market there is no indicator that buys every low without a single error. For the broader toolkit, the technical analysis section on forexmechanics.com goes deeper.

What to do tomorrow

  1. Turn on history replay for every arrow indicator on your chart. Open "bar replay" in TradingView or the visual tester in MetaTrader 5, step through the last fifty candles one by one, and note how many arrows shifted or vanished after their own candle closed. This settles the matter in a quarter of an hour and requires no purchase at all.
  2. Run a live screenshot test. Save a screenshot of the current chart fragment with the indicator on it now, label it with the time, and return to exactly the same spot after two or three closed candles. If the signals sit differently from the first screenshot, you have black-and-white proof of repainting.
  3. Move every "promising" indicator to a demo account for at least two weeks. Read the signals only after the candle closes and record the real hit rate in a spreadsheet, instead of trusting the past chart. The broader technical toolkit and how to set this up sit in the technical analysis material on forexmechanics.com referenced above.
  4. Separate analytical tools from signal tools for good. Leave ZigZag and regression channels for describing the structure of a completed move, and base entry decisions only on indicators that have passed the closed-candle test. Write this rule into your trading plan so you do not confuse the two uses under pressure.
Jarosław Wasiński
About the author

Jarosław Wasiński

Editor-in-chief at MyBank.pl · Financial and market analyst

Independent analyst and practitioner with 20+ years in finance. Founder and editor-in-chief of MyBank.pl, running since 2004. Fundamental analysis of FX and macro markets since 2007.

Sources & bibliography

  1. MetaQuotes — MQL5 Reference Custom Indicators · Oficjalna dokumentacja buforów wskaźnika, funkcji OnCalculate i parametru prev_calculated — wyjaśnia, dlaczego wartość już zapisana do bufora może być przeliczona ponownie na bieżącej świecy. www.mql5.com ↗
  2. MetaQuotes — MQL5 Reference Organizing Data Access (Timeseries and Indicators Access) · Dokumentacja dostępu do danych świecowych w MQL5 (CopyRates, Bars) — podstawa rozróżnienia między świecą zamkniętą a wciąż formującą się przy weryfikacji sygnału. www.mql5.com ↗
  3. MQL5 Community Forum Indicator: Repainting to non repainting (MQL5) · Wątek programistów MQL5 omawiający, dlaczego wskaźnik przemalowuje (przesunięcia w prawo, „patrzenie wstecz") i jak przerobić go na wersję ocenianą na zamkniętej świecy. www.mql5.com ↗
  4. CFA Institute Backtesting and Simulation (Refresher Reading) · Materiał programu CFA omawiający błędy w testowaniu strategii, w tym look-ahead bias (korzystanie z danych z przyszłości) i survivorship bias jako źródła zawyżonych wyników historycznych. www.cfainstitute.org ↗

Frequently asked

Is every indicator that repaints a scam?

No. Some repainting comes from the very nature of the tool and is not dishonest at all. By definition ZigZag does not know where a low is until the market reverses by a set amount, so the last leg is drawn with a delay. Parabolic SAR and regression channels computed on the current candle also keep changing until that candle closes. This is honest as long as you understand the mechanism and do not treat an unconfirmed signal as final. The problem starts only when someone hides the repaint — shows a perfect historical chart and sells it as "non-repaint", while staying silent about how the arrows actually looked live.

How can I check in five minutes whether an indicator repaints?

The fastest way is in a history replay mode. In TradingView use the "bar replay" feature, in MetaTrader 5 the strategy tester in visual mode, and step through the chart one candle at a time. Pause when an arrow appears, note the candle and its price, then play two or three more candles. If the arrow stays in the same place after its candle closes, the indicator does not repaint. If it jumps, disappears or redraws backwards onto a better level, you have repainting. A second method is to compare a screenshot taken an hour ago with the current view of the same chart fragment.

What is look-ahead bias and how does it relate to repainting?

Look-ahead bias means using data during a test that was not yet available at that point in time. A repainting indicator is a common source of this error: when it recomputes history it uses prices from candles that had not appeared live yet, so on a past chart it effectively "knows" what happens next. The result is a backtest showing results unreachable in real trading. The CFA Institute lists look-ahead bias alongside survivorship bias as a main reason historical simulations overstate performance. This is why a pretty past chart is never enough on its own — what counts is a test on data that moves forward.

Can I still use ZigZag if it repaints?

Yes, provided you use it for what it is meant to do. ZigZag is excellent for organising market structure after the fact — marking successive highs and lows, measuring waves or placing Fibonacci retracements on a move that has already closed. It is not suited to generating real-time entry signals, because its last leg can still shift. The rule is simple: a repainting tool can serve to analyse a completed move, but not to make a decision on the candle that is still forming. Confusing those two uses is the most common beginner mistake.

Go deeper · the complete guide