Рыночные данные
Инструменты, свечи, последняя цена, стакан, сделки и кластеры объёма.
Всем вызовам на этой странице нужно право market:read. Цены и объёмы
передаются десятичными строками, время — в миллисекундах UTC.
Найти инструмент
У инструмента есть адрес: exchange:market:symbol, например
binance:futures:BTCUSDT. Символ пишется так, как его пишет биржа, поэтому
берите его из справочника.
page = terminal.instruments(exchange="binance", market="futures", q="BTC", limit=50)
for item in page.data:
print(item.instrument, item.tick_size, item.lot_size)Чтобы прочитать справочник целиком, страница за страницей, используйте
iter_instruments() в Python и iterInstruments() в TypeScript.
Свечи
candles = terminal.candles("binance:futures:BTCUSDT", "1m", limit=500)
for candle in candles.data:
print(candle.ts, candle.open, candle.high, candle.low, candle.close, candle.volume)| Аргумент | Значение |
|---|---|
interval | 1m, 5m, 15m, 30m, 1h, 4h, 1d, 1w, 1M. Полный список отдаёт intervals(). |
limit | Число баров, до 2000. По умолчанию 500. |
end | Правая граница в миллисекундах UTC. По умолчанию — сейчас. |
Бары идут от старых к новым, ts — время открытия бара. Чтобы загрузить
более старую историю, передайте в end значение ts самого старого бара,
который у вас есть.
Последняя цена
Снимок содержит лучшие bid и ask, последнюю сделку, цену маркировки и суточный тикер инструмента.
snapshot = terminal.snapshot("binance:futures:BTCUSDT")
print(snapshot.best_bid, snapshot.best_ask, snapshot.mark_price)Поле пустое, пока его данные не пришли. См. первый вызов.
Стакан
book = terminal.orderbook("binance:futures:BTCUSDT", depth=20)
print(book.bids[0], book.asks[0])depth — число уровней с каждой стороны: от 1 до 200, по умолчанию 50.
Биды идут от лучшей цены вниз, аски — от лучшей цены вверх. Уровень — это
цена и объём.
Последние сделки
trades = terminal.trades("binance:futures:BTCUSDT", limit=200)
newer = terminal.trades("binance:futures:BTCUSDT", since_ts=trades.data[-1].ts)Сделки идут от старых к новым. Терминал хранит последнюю тысячу сделок
инструмента. ts — время, когда сделку получил терминал, exchange_ts —
время биржи.
Кластеры объёма
Бакет кластеров — это объём, проторгованный по каждой цене за один интервал.
clusters = terminal.clusters("binance:futures:BTCUSDT")
for bucket in clusters.data:
print(bucket.ts, bucket.volume, bucket.buy_volume, bucket.sell_volume)
for level in bucket.levels:
print(level.price, level.buy_volume, level.sell_volume)В ответе до десяти последних бакетов, от старых к новым. Интервал тот, что
выбран для инструмента в терминале, по умолчанию 5m. Через API его не
сменить; какой используется, показывает clusters.interval.
Первый вызов
Последняя цена, стакан, сделки и кластеры читаются из памяти терминала. Если инструмент не открыт в терминале, первый вызов подписывается на него на бирже и ждёт данных до 3 секунд. После этого терминал держит подписку ещё 30 секунд, и следующие вызовы отвечают сразу.
| Что происходит | Что вы получите | Что делать |
|---|---|---|
| Данные пришли не полностью | Снимок с пустыми полями | Повторить через несколько секунд |
| Стакан не готов за 3 секунды | 503 unavailable | Повторить |
| Кластеры ещё не посчитаны | 409 not_active | Повторить через несколько секунд |
| Слишком много инструментов или слишком много новых в секунду | 429 rate_limited | Снизить темп, см. Лимиты |
Чтобы следить за ценами непрерывно, используйте стрим, а не повторные вызовы.
Какое подключение используется
В терминале может быть несколько подключений к одной бирже и рынку. Каждый
вызов принимает необязательный connection_id. Без него терминал берёт
включённое торговое подключение, а если его нет — подключение только для
чтения. Ответ всегда называет подключение, которое было использовано.
Что недоступно
Данные Московской биржи (MOEX) не отдаются: любой вызов по инструменту
moex: отвечает 501 unsupported.