candles
OHLCV токена на интервалах от одной секунды до одной минуты, построенный из тех же сделок, что отдаёт token_trades.
Без истории
Свечи строятся с момента подписки. Истории и бэкфилла нет.
Subscribe
Требуется mint. Интервал и поведение live-обновлений — параметры, а не фильтры.
{
"op": "subscribe",
"stream": "candles",
"params": {
"mint": "8Wq…kR2p",
"interval": "15s",
"priceCurrency": "usd",
"detail": "full",
"updates": "live"
},
"id": 1
}Параметры
| Param | Type | Description |
|---|---|---|
mint | string | Обязательно. Mint токена. |
interval | string | Обязательно. 1s, 15s, 30s или 1m. |
priceCurrency | string | usd (по умолчанию) или sol; одна валюта на подписку. |
updates | live / closed | По умолчанию live; closed — только закрытые бары. |
detail | basic / full | Уровень полезной нагрузки; по умолчанию basic. |
Фильтры и все интервалы свечей доступны на всех планах, включая Free.
Event
{
"op": "event",
"sub": "cd_1",
"stream": "candles",
"cursor": "000330112270:000000:0000",
"data": {
"interval": "15s",
"priceCurrency": "usd",
"openTime": 1785482160,
"open": "0.00001218",
"high": "0.00001218",
"low": "0.00001176",
"close": "0.00001182",
"volumeToken": "89760695.84",
"volumeUsd": "1093.29",
"trades": 37,
"buys": 24,
"sells": 13,
"closed": true
}
}Свечи — агрегаты, поэтому в data нет общего транзакционного конверта.
Basic fields
| Field | Type | Notes |
|---|---|---|
interval | string | Интервал подписки |
priceCurrency | usd | sol | Валюта, выбранная подпиской |
openTime | number | Начало бара в Unix-секундах |
open, high, low, close | string | OHLC в выбранной валюте |
volumeToken | string | Объём в токене |
closed | boolean | true на финальном баре интервала |
Full fields
| Field | Type | Notes |
|---|---|---|
volumeUsd | string | Заполнен при priceCurrency: "usd", иначе null |
volumeSol | string | Заполнен при priceCurrency: "sol", иначе null |
trades | number | Число сделок |
buys | number | Число покупок |
sells | number | Число продаж |
С updates: live открытый бар эмитится раз в секунду. Бар 1s закрывается каждую секунду и не имеет отдельных live-обновлений. События эмитятся только для интервалов, в которых были сделки.
Когда бар закрывается
Бар закрывается первой сделкой следующего интервала — и в этот же момент уходит клиенту. Если торговля затихла и такой сделки нет, бар закрывает таймер вскоре после конца интервала.
Небольшая пауза на пути через таймер сделана намеренно. Метаданные блока могут дойти до нас чуть позже сделок, которые они описывают, и если закрывать бар ровно на границе интервала, опоздавшая сделка придёт к уже отправленному бару — а та же минута приедет дважды, двумя разными закрытыми барами. Короткое ожидание даёт гарантию: каждый бар уходит закрытым ровно один раз, со всеми своими сделками, и больше не переоткрывается.
На live-обновления это не влияет: пока бар формируется, вы получаете его каждую секунду, так что цена всегда актуальная. Сделка, пришедшая после закрытия своего бара, в него не попадает — это стоит учитывать, если вы сверяете объём свечей с token_trades.