Candlesticks
URL wss://marketdata.immix.xyz/
Topic candlestick.{symbol}.{interval}
Request parameters
Response parameters
Push data parameters
Behaviour
The raw form streams a forming-bar partial per folded trade; the conflated form candlestick.{symbol}.{interval}.{tier} delivers the latest forming bar once per tick. Closed bars never conflate: every elapsed interval closes — zero-trade intervals as a carried close (open = high = low = close = previous close, volume “0”, count 0) — released once the stream’s consumed event-time frontier passes the bucket boundary (never wall clock: under catch-up closes arrive late, never wrong). Per topic, the update flow a session sees after its snapshot delivers exactly one closed: true frame per bucket, before any frame of the next bucket; bucket timestamp continuity is the channel’s integrity signal, and seq/seqTs are fact provenance (repeats legal). Around the subscribe itself, snapshot and topic broadcasts may overlap — a just-subscribed session can receive finals its snapshot already carried, or one older filling toward them; re-applying a final keyed on the bucket timestamp is a no-op, never desync. Subscribing answers live and pushes one snapshot: true frame — the last two closed bars plus the forming bar, oldest to newest, one apply loop — or bars: [] with seq/seqTs omitted for a never-traded instrument, whose boundaries then stay silent until a first close exists. Long-disconnect catch-up is the candle-history query, not this stream. The interval segment is mandatory (components.schemas.candleInterval); the object subscribe form {“channel”:“candlestick”,“instrument”:SYMBOL,“interval”:INTERVAL,“throttle”:TIER} is equivalent and echoed normalized as the dotted string.