- get_klines always fetches from Binance REST: the stored last open
candle is a snapshot from the sync and never updates, so 1d/4h data
read from the database was stale. Mark whether the last bar is closed.
- Cluster swing highs/lows within 0.5 ATR into support/resistance zones
with touch counts, returning the nearest 5 on each side instead of the
last 5 raw swing points.