A chart becomes misleading when a support level is presented as a precise number. Markets trade through queues of orders, not pixels. What looks like one clean line on a screenshot is usually a zone formed by previous acceptance, forced exits and resting liquidity.
Start with the reaction
We mark an area only after asking three questions: did price accelerate away from it, did volume or open interest change, and was the move accepted on the next time frame? A wick without follow-through is evidence of rejection. Several closes inside the zone are evidence that the level is being consumed.
Separate invalidation from discomfort
A trade can move against the entry and still keep its thesis intact. It can also sit near the entry while the underlying thesis has already failed. The stop belongs beyond the structural invalidation point—not at the distance that happens to produce an attractive risk/reward screenshot.
The line must update
Static annotations age quickly. After a level is swept, reclaimed or repeatedly tested, its meaning changes. Our chart renderer will store every zone as data—price range, time frame, origin and invalidation—so that published analysis can be updated consistently instead of redrawn by eye.
This is also why chart images should be generated from market data, not painted by a language model. The visual can be styled, but the coordinates must remain deterministic.