API биржи: данные, заявки и Python

Обложка статьи «API биржи: данные, заявки и Python»: Слева карточка ответа в фигурных скобках, в центре стрелки запроса и ответа, справа золотой ключ доступа к счёту и заявкам.

Что даёт API биржи и когда нужен ключ?

Ключ обязателен, когда метод касается вашего счёта: читает баланс и историю ордеров либо ставит и снимает заявки. Цену, свечи и стакан криптобиржи обычно отдают всем подряд, а у брокерских API токен бывает нужен и для котировок.

Хорошо это видно по документации Binance. Там у каждого метода рядом с названием стоит тип. NONE - публичные рыночные данные. USER_DATA - личные сведения счёта, например статус ордеров и история сделок. TRADE - торговля, то есть выставление и отмена заявок. USER_STREAM - управление подпиской на поток событий счёта. Все типы, кроме NONE, считаются подписанными запросами. Для публичной части у Binance есть даже отдельный список адресов Market Data Only: они работают без аутентификации и отдают только рыночные данные.

У Мосбиржи публичный вход называется ISS, информационно-статистический сервер. Он отдаёт рыночные и исторические данные через web-API: данные в реальном времени - по подписке, с задержкой 15 минут - бесплатно. В справочнике ISS, например, есть метод свечей /iss/engines/[engine]/markets/[market]/securities/[security]/candles. Чтобы просто построить график или посчитать индикатор по истории, этого хватает.

Как отличить данные от торговых операций?

Главный признак - тип метода в документации, язык программирования и библиотека тут ничего не решают. Binance указывает его рядом с названием метода, например New order (TRADE). Ниже пять задач, с которыми чаще всего приходят к API биржи.

ЗадачаВид методаНужен ли ключЧего это не доказывает
Прочитать цену, свечи или стаканпубличные данныенетчто у программы есть доступ к счёту
Скачать историю Мосбиржи через ISSинформационный интерфейснет, бесплатно с задержкой 15 минутчто можно отправить заявку
Посмотреть баланс и статус ордеровданные счётада, запрос с подписьючто ключ умеет торговать
Отправить или снять заявкуторговая операцияда, и торговля должна быть разрешена ключучто заявка исполнена
Обратиться к API из Pythonлюбой из перечисленныхкак у выбранного методачто язык сам выдал какие-то права

Права у ключа бывают разные, и это полезно. Binance приводит пример: ключ с правом TRADE для торговли и отдельный ключ с USER_DATA для слежения за ордерами. Торговать новый ключ по умолчанию не может, торговлю включают отдельно в управлении ключами. Отсюда простое правило: программе, которая только смотрит на рынок и счёт, торговые права не давайте. Ошибка в её коде тогда не превратится в лишнюю заявку.

Подписанный запрос у Bybit несёт три заголовка: ключ X-BAPI-API-KEY, время в миллисекундах X-BAPI-TIMESTAMP и подпись X-BAPI-SIGN. Отдельный параметр recv_window задаёт, сколько запрос считается действительным, по умолчанию 5000 миллисекунд. Создание ключей Bybit и проверка подключения разобраны в ответе про API Bybit: ключи, режимы и проверку.

Как Python обращается к API биржи?

Python отправляет HTTP-запрос по адресу метода, получает ответ в формате JSON и достаёт из него нужные поля. Больше он ничего не делает, и прав к счёту он не добавляет.

  1. 1

    Найти метод в документации

    Цена, свечи и стакан - публичные, ключ не нужен

  2. 2

    Отправить HTTP-запрос

    Адрес метода плюс параметры, например символ

  3. 3

    Получить ответ в JSON

    Учебно: symbol EXAMPLE, price 100

  4. 4

    Разобрать поля

    Взять price и передать в свой расчёт

Учебная схема: инструмент EXAMPLE и цена 100 выдуманы, это форма ответа, а не котировка. Для методов счёта и заявок перед отправкой добавляются ключ, время и подпись.

Писать запросы вручную не обязательно. У Bybit есть официальный коннектор pybit для HTTP и WebSocket API. В его сессию передают ключ и секрет, и через неё данные можно как получать, так и отправлять бирже. Поэтому то, что библиотека установлена, о правах программы ничего не говорит, всё решает ключ.

Про лимиты запросов помнят с первого дня. Bybit по умолчанию пропускает 600 запросов за пять секунд с одного IP, сверх этого отвечает ошибкой 403 «access too frequent». Binance на превышение лимита отвечает кодом 429, а если программа продолжает слать запросы, IP автоматически блокируется с кодом 418. Цикл, который без паузы спрашивает цену, упирается в это быстрее всего.

Чем API Мосбиржи отличается от API брокера?

У самой Мосбиржи свободный публичный вход один - ISS с данными, а торговый API частному трейдеру обычно даёт брокер. Собственные торговые интерфейсы биржи - FIX, TWIME и FIFO MFIX Trade - рассчитаны на профессиональное подключение. FIFO MFIX Trade и TWIME Мосбиржа прямо рекомендует для быстрой торговли и HFT, а подключают их через облака сертифицированных провайдеров, выделенные каналы, колокацию в дата-центре биржи или защищённый интернет.

У брокеров свои торговые API. Финам, например, ведёт базу знаний по Trade API: авторизация, инструменты, потоковые данные и торговля, а одна из первых тем курса - получить ключ доступа и увидеть свой счёт. Логика та же, что у криптобирж: данные отдельно, счёт и заявки отдельно, права задаёт ключ.

Рабочий API не проверяет торговую идею. Прежде чем отдавать заявки программе, посчитайте риск на сделку и продумайте, что будет при сбое связи или ошибке кода. Как устроен торговый робот от сигнала до исполнения, разобрано в статье про торгового бота и его проверку, а основы рынка собраны в гиде для новичков. Материал образовательный и не является индивидуальной инвестиционной рекомендацией.

Источники

График TradingView с сигналами Buy и Sell индикатора Midas
Midas multi-индикатор for TradingViewОдин из самых продвинутых индикаторов для трейдинга
  • Сигналы без перерисовки
  • Интерактивный теханализ
  • 7 стратегий на выбор
Midas multi-индикатор for TradingViewСигнал, стоп и 3 цели - прямо на графике
  • Сигнал фиксируется по закрытию свечи
  • Стоп и 3 цели строятся автоматически
  • План сделки виден до входа