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

Обезличенные сделки

WebSocket API предоставляет поток обезличенных сделок по инструменту в реальном времени.


🔌 WebSocket URL

wss://ws.broker.ru/trade-api-market-data-connector/api/v1/market-data/ws

🔐 Аутентификация

Перед установкой WebSocket-соединения клиент должен передать access-token в HTTP-заголовке:

Authorization: Bearer <ACCESS_TOKEN>

Подробнее об авторизации см. раздел Авторизация.


🧱 Общий формат сообщений

Все сообщения в WebSocket передаются в формате JSON.

  • Клиент → сервер: команды подписки / отписки.
  • Сервер → клиент: подтверждения подписки, данные обезличенных сделок, ошибки.

📤 Сообщения client → server

Подписка на обезличенные сделки

{
"subscribeType": 0,
"dataType": 2,
"instruments": [
{ "ticker": "SBER", "classCode": "TQBR" }
]
}

Поля запроса

ПолеГдеТипОбяз.Описание
subscribeTypeТелоnumber (enum)даТип сообщения:
0 — Подписка
1 — Отписка
dataTypeТелоnumber (enum)даТип данных:
2 — Обезличенные сделки
instrumentsТелоarrayдаСписок инструментов для подписки
instruments[].tickerТелоstringдаБиржевой тикер
instruments[].classCodeТелоstringдаКод класса бумаги

Отписка

{
"subscribeType": 1,
"dataType": 2,
"instruments": [
{ "ticker": "SBER", "classCode": "TQBR" }
]
}

📥 Ответы server → client

Успешный ответ о подписке

{
"responseType": "LastTradesSuccess",
"subscribeType": 0,
"ticker": "SBER",
"classCode": "TQBR",
"dateTime": "2024-11-01T10:00:00.000Z"
}

Структура данных успешной подписки

ПолеТипОписание
responseTypestring (enum)LastTradesSuccess — успешная подписка
tickerstringБиржевой тикер
classCodestringКод класса бумаги
dateTimestring (datetime)Время сделки (UTC)

Успешный ответ с данными

{
"responseType": "LastTrades",
"ticker": "SBER",
"classCode": "TQBR",
"side": "BUY",
"volume": 612,
"price": 305.89,
"quantity": 2,
"dateTime": "2025-11-20T06:29:41.000Z"
}

Структура данных ответа с данными

ПолеТипОписание
responseTypestring (enum)LastTrades - данные по сделке
tickerstringБиржевой тикер
classCodestringКод класса бумаги
sidestring (enum)Направление сделки:
BUY - покупка
SELL - продажа
volumenumberОбъём сделки
pricenumberЦена сделки
quantitynumberКоличество бумаг в сделке
dateTimestring (datetime)Дата и время обновления данных (UTC)

Пример ответа с ошибкой

{
"responseType": "LastTrades",
"errors": [
{
"message": "Input JSON structure does not match structure, 'ticker' field is undefined.",
"code": "INCORRECT_JSON"
}
]
}

Структура данных ошибки

ПолеТипОписание
responseTypestring (enum)Тип сообщения. Для ошибок по сделкам — LastTrades
errors[].messagestringТекст ошибки
errors[].codestring (enum)Код ошибки:
NO_DATE — нет данных
NOT_FOUND — инструмент не найден
INCORRECT_JSON – невалидный json
BAD_REQUEST — ошибка выполнения
UNAUTHORIZED — клиент не авторизован

💻 Примеры использования

import WebSocket from "ws";

const URL = "wss://ws.broker.ru/trade-api-market-data-connector/api/v1/market-data/ws";

const ws = new WebSocket(URL, {
headers: {
Authorization: "Bearer YOUR_ACCESS_TOKEN",
},
});

ws.on("open", () => {
const subscribeMessage = {
subscribeType: 0,
dataType: 2,
instruments: [{ ticker: "SBER", classCode: "TQBR" }],
};

ws.send(JSON.stringify(subscribeMessage));
});

ws.on("message", (event) => {
const payload = JSON.parse(event.toString());
console.log(payload);
});

ws.on("error", (error) => {
console.error("WebSocket error:", error);
});

❗ Ошибки

HTTPОшибкаОписание
400BadRequestНеверные параметры
500Internal Server ErrorВнутренняя ошибка сервера