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

Получение данных

Торговая система АЛОР Брокер предоставляет возможность получения биржевых данных через API. Для этого можно использовать HTTP API, WebSocket API и GraphQL API.

Выбор интерфейса

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

Типы данных

Через API от торговой системы можно получить следующие биржевые данные:

  • Список созданных заявок и детальная информация о них
  • Список совершённых сделок и детальная информация о них
  • Список доступных финансовых инструментов и информация о них: котировки, биржевые стаканы, исторические данные и т.д.
  • Информация о пользователе и портфеле: общая информация, позиции, риски и т.д.
Нужна помощь?

Если получить интересующие данные не удалось — не нашли подходящего запроса или полученный результат выглядит неинформативным — свяжитесь с нами по электронной почте support@alor.ru или через Личный кабинет.


Категории данных

Все данные, предоставляемые торговой системой через API, можно разделить на две категории:

  • Публичные данные — информация, которую можно свободно получить из любых сторонних источников, а доступ широкого круга лиц к ним не повлияет на поведение рынка или состояние системы. К такой информации, например, относятся списки доступных инструментов и валютных пар.
  • Защищённые данные — информация, свободная публикация которых для неограниченного круга лиц может спровоцировать как изменения в поведении рынка, так и разглашение персональных данных держателей портфелей. Для доступа к данным этой категории в обязательном порядке требуется авторизация для подтверждения прав доступа к вызываемым ресурсам. К такой информации, например, относятся данные о всех сделках за сегодня и список открытых позиций в портфеле.

Доступ к данным

Несмотря на то, что публичные данные не являются тайной и могут быть свободно получены через другие источники, доступ к ним через АЛОР Брокер API может быть частично ограничен. Сделано это для снижения нагрузки на систему и предоставления приоритета запросам от клиентов Брокера.

В зависимости от выбранного способа взаимодействия ограничения могут иметь разный характер:

  • В HTTP API и GraphQL API публичные ресурсы не требуют обязательной авторизации запросов, но ответ будет содержать данные, бывшие актуальными 15 минут назад. Так, например, в ответ на отправленный в 15:00 запрос на получение текущего UTC времени в формате Unix будут возвращены данные, соответствующие времени 14:45.
  • В WebSocket API публичных ресурсов не существует — все запросы к любому из предоставляемых ресурсов должны быть авторизованы. Это касается даже тех запросов, информацию в ответ на которые можно получить другими способами без авторизации.

Чтобы избавиться от этих ограничений, авторизуйтесь как действующий трейдер или воспользуйтесь тестовым доступом.


Примеры запросов

Общие требования

Чтобы система вернула в ответ актуальные данные, отправляемые запросы должны соответствовать определённым требованиям. В зависимости от выбранного интерфейса взаимодействия, запросы должны:

  • Быть авторизованными (HTTP API, WebSocket API, GraphQL API)
  • Быть идентифицируемыми (WebSocket API)
  • Отправляться к единому URL интерфейса (WebSocket API, GraphQL API)

Для соблюдения этих требований используются дополнительные параметры заголовка и/или тела запроса.

Авторизация

Авторизация нужна для подтверждения у отправителя наличия прав на использование запрошенного ресурса. Для авторизации запросов используется JWT токен, выполняющий роль Access токена. Полное описание доступных способов авторизации представлено в разделе Авторизация.

В HTTP API для передачи токена используется параметр заголовка Authorization. Заголовок должен передаваться с каждым выполняемым запросом.

Передаётся этот токен как Bearer-токен, в связи с чем заголовок должен содержать префикс Bearer перед передаваемым значением. Выглядит корректно заполненный заголовок Authorization так:

Authorization: Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6IkpXVCJ9.eyJzdWIiOiJMb2dpblNhbXBsZSIsImVudCI6ImNsaWVudCIsImVpbiI6IjAxMjM0IiwiY2xpZW50aWQiOiIwMTIzNDU2IiwiYXpwIjoiMDEyMzQ1Njc4OWFiY2RlZjAxMjMiLCJhZ3JlZW1lbnRzIjoiQWdyZWVtZW50U2FtcGxlMSBBZ3JlZW1lbnRTYW1wbGUyIEFncmVlbWVudFNhbXBsZTMiLCJwb3J0Zm9saW9zIjoiUG9ydGZvbGlvU2FtcGxlMSBQb3J0Zm9saW9TYW1wbGUyIFBvcnRmb2xpb1NhbXBsZTMiLCJzY29wZSI6Ik9yZGVyc1JlYWQgT3JkZXJzQ3JlYXRlIFRyYWRlcyBQZXJzb25hbCBTdGF0cyIsImV4cCI6Mjg3MTc2MzE5OSwiaWF0IjowLCJpc3MiOiJBbG9yLklkZW50aXR5IiwiYXVkIjoiQ2xpZW50IFdBUlAgV2FycEFUQ29ubmVjdG9yIHN1YnNjcmlwdGlvbnNBcGkgQ29tbWFuZEFwaSBJbnN0cnVtZW50QXBpIFRyYWRpbmdWaWV3UGxhdGZvcm0ifQ.QOQVMIAoZ6SnF5urnIzJ0EvtQd9P5Sx355069kXoID207wHOTW0wkKNMcrIKXmENEQQ_0yDjqH_kjeqWLBJuqA


Отправка запросов

Для демонстрации синтаксиса запроса на получение данных используем запрос на получение биржевого стакана, доступный как в HTTP API, так и в WebSocket API.

GraphQL

В настоящий момент схема GraphQL API находится в разработке, в связи с чем получение некоторых данных может быть недоступно. К их числу относятся данные о биржевом стакане, в связи с чем для демонстрации этого способа используется пример с получением базовой информации об инструменте.

Интерактивный запрос

Интерактивное описание запроса доступно на странице Биржевой стакан

Защищённый ресурс

Для выполнения запроса требуется авторизация.

Для получения биржевого стакана по инструменту через HTTP API используется GET-запрос к конечной точке /md/v2/orderbooks/{exchange}/{symbol}, где:

Path-параметры

    codestringrequired

    Тикер (Код финансового инструмента)

    Пример: SBER

    exchangestringrequired

    Биржа:

    • MOEX — Московская Биржа
    • SPBX — СПБ Биржа

    Пример: MOEX

Для уточнения запроса можно добавить опциональные Query-параметры:

Query-параметры

    instrumentGroupstring

    Код режима торгов (Борд):

    • Для Московской Биржи список кодов доступен в таблице
    • Для Биржи СПБ всегда SPBX

    Пример: TQBR

    depthint32

    Глубина стакана. Стандартное значение — 20 (20x20), максимальное — 50 (50х50).

    Пример: 20

    formatstring

    Формат возвращаемого сервером JSON-объекта:

    • Simple — оригинальный формат данных. Поддерживает устаревшие параметры для обеспечения обратной совместимости
    • Slim — облегчённый формат данных для быстрой передачи сообщений. Не поддерживает устаревшие параметры
    • Heavy — полный формат данных, развивающийся и дополняющийся новыми полями. Не поддерживает устаревшие параметры

    От формата объекта также зависит минимальное значение параметра frequency для WebSocket-подписок.

    Пример: Simple

После заполнения параметров нужными значениями полный URL запроса выглядит так:

https://api.alor.ru/md/v2/orderbooks/MOEX/SBER?instrumentGroup=TQBR&depth=5&format=Simple

https://apidev.alor.ru/md/v2/orderbooks/MOEX/SBER?instrumentGroup=TQBR&depth=5&format=Simple

В случае успешного выполнения запроса API вернёт ответ с кодом 200 и сообщением, содержащим запрошенную информацию:

Пример ответа
{
"snapshot": true,
"bids": [
{
"price": 281.98,
"volume": 36
}
],
"asks": [
{
"price": 281.99,
"volume": 11
}
],
"timestamp": 1713387004,
"ms_timestamp": 1713387004878,
"existing": true
}

Если обработка запроса завершилась ошибкой, API вернёт информацию о причинах этой ошибки.

Детали запроса

Полный список всех параметров и возможных ответов доступен на странице описания запроса.


Что дальше?

Для быстрого погружения в процессы использования API можете воспользоваться руководствами по быстрому старту для тестового и боевого контуров системы.