Перейти к содержимому

Начало работы

Включите Local API, получите токен и сделайте первый запрос из Python или TypeScript.

Эта страница ведёт от запущенного терминала до живых данных в вашей программе. Ваша программа говорит только с 127.0.0.1, а терминал говорит с биржами.

Включить API

Откройте в терминале Settings App → Общие и включите Local API. Перезапуск не нужен.

В строке показан порт. Это 48180, если терминал не запущен с переменной окружения SPECTRE_LOCAL_API_PORT. Если позже выключить API, открытые стримы закроются с кодом 1001.

Получить токен

Нажмите Копировать в той же строке и положите токен в окружение своей программы. Значение ниже — пример.

export SPECTRE_LOCAL_API_TOKEN=spt_0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

В Windows setx действует на окна командной строки, открытые после неё.

Токен разрешает всё, что может окно терминала, включая постановку заявок. Не коммитьте его и не вставляйте в отчёт об ошибке. Перевыпустить токен в той же строке заменяет его сразу.

Установить клиент

pip install spectre-terminal

Сделать первый запрос

from spectre_terminal import Terminal

terminal = Terminal.discover()
meta = terminal.meta()
print(meta.app_version, meta.scopes, meta.topics)

discover() находит порт, читает токен из окружения и делает один пробный запрос. Неверный токен или незапущенный терминал дают ошибку уже здесь, а не на первом вызове данных. См. Когда поиск не удался.

Прочитать что-нибудь

for connection in terminal.connections():
    print(connection.id, connection.exchange, connection.market, connection.status.state)

book = terminal.orderbook("binance:futures:BTCUSDT", depth=5)
for price, size in book.bids:
    print(price, size)

У инструмента есть адрес: exchange:market:symbol. Символ пишется так, как его пишет биржа. См. Рыночные данные.

Следить за живыми данными

import asyncio

async def main():
    async with terminal.stream() as stream:
        await stream.subscribe("trades", "binance:futures:BTCUSDT")
        async for frame in stream:
            print(frame)

asyncio.run(main())

Цикл печатает сделки по мере поступления. См. Стриминг.

Что недоступно

Ответ торгового вызова не говорит, что сделала биржа. accepted значит, что терминал принял команду. Исход читайте из счёта, см. Торговля.

Московская биржа (MOEX) не обслуживается: нет ни рыночных данных, ни торговли.

Запросы со страниц браузера отклоняются.

На этой странице