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

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

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

Выбор способа взаимодействия

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

Типы данных

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

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

Если получить интересующие данные не удалось — не нашли подходящего запроса или полученный результат выглядит неинформативным — свяжитесь с нами в Telegram.


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

Все данные, предоставляемые торговой системой через 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-параметры

    exchange stringrequired

    Possible values: [MOEX, SPBX]

    Биржа

    symbol stringrequired

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

    Example: SBER

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

Query-параметры

    depth int32

    Possible values: >= 1 and <= 20

    Default value: 20

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

    Example: 5
    format string

    Possible values: [Simple, Slim, Heavy]

    Формат возвращаемого сервером JSON

    Example: Simple

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

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

https://apidev.alor.ru/md/v2/orderbooks/MOEX/SBER?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,
"depth": 20,
"existing": true
}

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

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

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


Что дальше?

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