Non-Repainting ICT Indicator with Volume Profile
A TradingView client's checklist read like an exam: 19 ICT/SMC concepts plus the complete Volume Profile set — and one hard rule: no repainting. This is the concept-to-precision-rule pipeline that delivered it.
Why "ICT Conversion" Is a Hard Project
The client's key line: "I am not looking for someone who only knows the terminology … if we define a liquidity sweep, you should be able to clarify exactly what conditions qualify as a sweep, how it is confirmed, whether candle close confirmation is required, and how to prevent repainting."
Most ICT indicators repaint because their labels appear on bars that are still forming. The engineering answer is not a special "repaint filter" bolted on the end — it is a decision pipeline where every condition resolves only at bar close, and the visuals are drawn from already-closed values. The same design philosophy runs through our MT4/MT5 indicator library.
The Concept → Precision Rule Audit (Shipped With the Source)
Before a line of Pine: every concept becomes a 4-column table — what qualifies, what confirms, does it repaint. That table is both the proposal and the spec:
| Concept | Qualifying condition | Repaints? |
|---|---|---|
| Liquidity sweep | Wick takes out prior EQH / session high, then body closes back inside the swept range | No — label after close |
| BOS / CHoCH | Close beyond prior confirmed swing (fractal); CHoCH = break against trend | No |
| MSS | CHoCH + expansion body > 2× ATR(14) range | No |
| FVG / IFVG | Gap between candle-1 high and candle-3 low; IFVG = gap not yet filled | Drawn at close only |
| Order block | Sibling candle before displaced move; invalidate > 50% retrace of block | No |
| Premium / Discount + OTE | 50% equilibrium of drawn range; 0.62–0.79 retrace = OTE zone | No — range input driven |
| Killzones / SMT | London 08–11 ET, NY 13:30–16:00 ET, Asia 20:00–00:00; SMT = opposite extremes on correlated ticker | No |
| Volume profile (POC/VAH/VAL, PDH/PDL, HVN/LVN) | Rolling 150-bar histogram; POC outward → 70% value area; PD/PW values as floating levels | No |
Repaint Prevention, Stated in Code Terms
The Indicator, As Rendered
Killzone shading over London and New York windows; BOS and CHoCH labels land only on confirmed closes; the sweep marker pins the swept high; FVG and order block boxes anchor to displaced legs; PDH/PDL and EQ/OTE reference lines float with the session — and the rolling volume profile histogram on the right shows POC (highest-volume price), VAH/VAL 70% value area and the HVN/LVN clusters the client asked for, with no repainting across all of it.
This is the same style of precise-rule work we do for Pine Script development and conversion to MQL5 — terminology is cheap, rules are the product.
FAQ
How do you prevent repainting in Pine Script?
Closed-bar decision points only, lookahead_off on all request.security calls, alerts fired on confirmed closes, and live-preview drawings behind an explicit toggle — non-repainting by construction, not by filter.
How is volume profile computed inside Pine?
A rolling-length histogram accumulates volume into price buckets; POC is the highest-volume bucket; VAH/VAL are the boundaries of the 70% value area built outward from the POC; PD/PW reference values carry over from prior sessions.
What is in the delivered package?
Pine source, the full concept-to-rule audit table, per-concept screenshot pack for the client's review QA, session/timezone documentation and alert documentation.
Have an ICT Checklist of Your Own?
Rules first — that's the whole trick. See the full case study portfolio, or get a fixed-price quote for your indicator.