INTELLI·COIN
paste › scan › signal › prove › watch
engine ok · 40/40 Admin Go Pro

Pine

IntelliRepaint

Static check for the lookahead and repainting patterns that make backtests lie.

Loading…

About IntelliRepaint

Repainting is the reason a strategy looks perfect in history and falls apart live — the script quietly used information it wouldn't have had at the time. IntelliRepaint reads a pasted Pine indicator or strategy and flags the well-known culprits: lookahead turned on, higher-timeframe requests that repaint on the forming bar, strategies that recalculate every tick, varip variables, realtime-only branches, and signal markers drawn on unconfirmed bars. Each finding explains why it repaints and how to fix it. No other free tool does this — and it only exists here because Intellicoin already runs its own Pine engine. Everything stays in your browser.

How to use

  1. Paste a Pine indicator or strategy
  2. Run the check
  3. Read each flagged pattern — severity, the exact lines, why it repaints, and the fix
  4. Confirm on the chart with a bar-replay-vs-live comparison

FAQ

What is repainting?

When a script's past signals change after the fact — because it referenced future data, a still-forming higher-timeframe bar, or intrabar values that later settle. It makes historical results look far better than what you'd have actually traded live.

What does the checker catch?

The common causes: barmerge.lookahead_on, request.security usage that can repaint on the forming bar, calc_on_every_tick=true, varip, logic gated on barstate.isrealtime/islast, and plotshape/alertcondition/label calls that may fire on unconfirmed bars. Each comes with the line numbers, the reason, and a fix.

Is a flag always a bug?

No. It's a heuristic static scan: a flagged pattern can be used safely (for example, a higher-timeframe request you've correctly offset), and a script can repaint in ways the scan doesn't catch. Treat findings as things to review, and confirm on the chart.

How do I truly confirm it repaints?

Compare the script's history to its realtime behaviour: run it with bar-replay and watch whether signals that appeared later move or vanish. If history and live disagree, it repaints.