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

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

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

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

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

Типы данных

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

Авторизация

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

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

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

Authorization: Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6IkpXVCJ9.eyJzdWIiOiJMb2dpblNhbXBsZSIsImVudCI6ImNsaWVudCIsImVpbiI6IjAxMjM0IiwiY2xpZW50aWQiOiIwMTIzNDU2IiwiYXpwIjoiMDEyMzQ1Njc4OWFiY2RlZjAxMjMiLCJhZ3JlZW1lbnRzIjoiQWdyZWVtZW50U2FtcGxlMSBBZ3JlZW1lbnRTYW1wbGUyIEFncmVlbWVudFNhbXBsZTMiLCJwb3J0Zm9saW9zIjoiUG9ydGZvbGlvU2FtcGxlMSBQb3J0Zm9saW9TYW1wbGUyIFBvcnRmb2xpb1NhbXBsZTMiLCJzY29wZSI6Ik9yZGVyc1JlYWQgT3JkZXJzQ3JlYXRlIFRyYWRlcyBQZXJzb25hbCBTdGF0cyIsImV4cCI6Mjg3MTc2MzE5OSwiaWF0IjowLCJpc3MiOiJBbG9yLklkZW50aXR5IiwiYXVkIjoiQ2xpZW50IFdBUlAgV2FycEFUQ29ubmVjdG9yIHN1YnNjcmlwdGlvbnNBcGkgQ29tbWFuZEFwaSBJbnN0cnVtZW50QXBpIFRyYWRpbmdWaWV3UGxhdGZvcm0ifQ.QOQVMIAoZ6SnF5urnIzJ0EvtQd9P5Sx355069kXoID207wHOTW0wkKNMcrIKXmENEQQ_0yDjqH_kjeqWLBJuqA


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

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

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

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

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

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

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

Path-параметры

    codestringrequired

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

    Пример: SOGN

    exchangestringrequired

    Код биржи

    Пример: ITS

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

Query-параметры

    instrumentGroupstring

    Код режима торгов (Борд). Для биржи ITS всегда ITS

    Пример: ITS

    depthint32

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

    Пример: 20

    formatstring

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

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

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

    Пример: Simple

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

https://api.inviabroker.com/md/v2/orderbooks/ITS/SOGN?instrumentGroup=TQBR&depth=5&format=Simple

https://apidev.inviabroker.com/md/v2/orderbooks/ITS/SOGN?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 можете воспользоваться руководствами по быстрому старту для тестового и боевого контуров системы.