Websocket proxy for grpc streaming
Сервис для получения сообщений grpc streaming Тинькофф Инвестиции через json websocket
Адрес для подключения wss://invest-public-api.tinkoff.ru/ws/
- *token - токен доступа к счету Тинькофф Инвестиции можно передать в заголовке
Authorization: Bearer *token
, либо в заголовкеWeb-Socket-Protocol: json, *token
- запрос на подключение требует указание протокола json в заголовоке
Web-Socket-Protocol: json
Чтобы получать сообщения c наименованиями полей идентичными наименованиям полей из proto-контрактов, необходимо использовать протокол в заголовке WebSocket-Protocol
json-proto
вместо
json
Отправка json-сообщений поддерживается в обоих вариантах, как в camelCase, так и snake_case.
Сервис поручений
Лента сделок.
TradesStreamRequest TradesStreamResponse
Пример запроса
{
"accounts": [
"*accountId"
]
}
Пример ответа
{
"orderTrades": {
"orderId": "36042910361",
"createdAt": "2023-05-16T13:27:14.682140664Z",
"direction": "ORDER_DIRECTION_SELL",
"figi": "BBG00RPRPX12",
"trades": [
{
"dateTime": "2023-05-16T13:27:13.423246Z",
"price": {
"units": "1",
"nano": 235000000
},
"quantity": "1",
"tradeId": "7653265991"
}
],
"accountId": "*accountId",
"instrumentUid": "ade12bc5-07d9-44fe-b27a-1543e05bacfd"
}
}
Сервис операций
Лента событий по позициям.
PositionsStreamRequest PositionsStreamResponse
Пример запроса
{
"accounts": [
"*accountId"
]
}
Пример ответа - подписка успешна
{
"subscriptions": {
"accounts": [
{
"accountId": "*accountId",
"subscriptionStatus": "POSITIONS_SUBSCRIPTION_STATUS_SUCCESS"
}
]
}
}
Пример события - изменение позици в портфеле
{
"position": {
"accountId": "*accountId",
"money": [
{
"availableValue": {
"currency": "rub",
"units": "3148",
"nano": 130000000
},
"blockedValue": {
"currency": "rub",
"units": "0",
"nano": 20000000
}
}
],
"securities": [
{
"figi": "BBG00RPRPX12",
"blocked": "0",
"balance": "9",
"positionUid": "eee36ccf-5f28-4419-9c29-c6465f39581a",
"instrumentUid": "ade12bc5-07d9-44fe-b27a-1543e05bacfd",
"exchangeBlocked": false,
"instrumentType": "etf"
}
],
"futures": [],
"options": [],
"date": "2023-05-16T13:29:13.411710Z"
}
}
Лента событий по портфелям.
PortfolioStreamRequest PortfolioStreamResponse
Пример запроса
{
"accounts": [
"*accountId"
]
}
Пример ответа подписка успешна
{
"subscriptions": {
"accounts": [
{
"accountId": "*accountId",
"subscriptionStatus": "PORTFOLIO_SUBSCRIPTION_STATUS_SUCCESS"
}
]
}
}
Пример события изменения по портфелю
{
"portfolio": {
"totalAmountShares": {
"currency": "rub",
"units": "2787",
"nano": 700000000
},
"totalAmountBonds": {
"currency": "rub",
"units": "0",
"nano": 0
},
"totalAmountEtf": {
"currency": "rub",
"units": "11",
"nano": 115000000
},
"totalAmountCurrencies": {
"currency": "rub",
"units": "3194",
"nano": 843600000
},
"expectedYield": {
"units": "9158",
"nano": 160000000
},
"positions": [
{
"figi": "BBG004S68473",
"instrumentType": "share",
"quantity": {
"units": "400",
"nano": 0
},
"averagePositionPrice": {
"currency": "rub",
"units": "3",
"nano": 942567000
},
"expectedYield": {
"units": "6",
"nano": 352000000
},
"averagePositionPricePt": {
"units": "3",
"nano": 942567000
},
"currentPrice": {
"currency": "rub",
"units": "4",
"nano": 193000000
},
"averagePositionPriceFifo": {
"currency": "rub",
"units": "3",
"nano": 956275000
},
"quantityLots": {
"units": "4",
"nano": 0
},
"blocked": false,
"positionUid": "427f9bcc-2cab-4561-bf94-942d4261fbb7",
"instrumentUid": "2dfbc1fd-b92a-436e-b011-928c79e805f2"
}
],
"accountId": "*accountId",
"virtualPositions": []
}
}
Сервис рыночных данных
MarketDataRequest MarketDataResponse
Лента торговых статусов инструментов
Пример запроса
{
"subscribeInfoRequest": {
"subscriptionAction": "SUBSCRIPTION_ACTION_SUBSCRIBE",
"instruments": [
{
"instrumentId": "962e2a95-02a9-4171-abd7-aa198dbe643a"
}
]
}
}
Пример ответа - подписка успешна
{
"subscribeInfoResponse": {
"trackingId": "644a898058ce5265b24f9adc21011f67",
"infoSubscriptions": [
{
"figi": "BBG004730RP0",
"subscriptionStatus": "SUBSCRIPTION_STATUS_SUCCESS",
"instrumentUid": "962e2a95-02a9-4171-abd7-aa198dbe643a"
}
]
}
}
Пример сообщения торговый статус по инструменту
{
"tradingStatus": {
"figi": "BBG004730RP0",
"tradingStatus": "SECURITY_TRADING_STATUS_NORMAL_TRADING",
"time": "2023-05-16T07:00:00.750460Z",
"limitOrderAvailableFlag": true,
"marketOrderAvailableFlag": true,
"instrumentUid": "962e2a95-02a9-4171-abd7-aa198dbe643a"
}
}
Лента цен последних сделок
Пример запроса
{
"subscribeLastPriceRequest": {
"subscriptionAction": "SUBSCRIPTION_ACTION_SUBSCRIBE",
"instruments": [
{
"instrumentId": "962e2a95-02a9-4171-abd7-aa198dbe643a"
}
]
}
}
Пример ответа - подписка успешна
{
"subscribeLastPriceResponse": {
"trackingId": "644a875239934cfcda96460984a55ced",
"lastPriceSubscriptions": [
{
"figi": "BBG004730RP0",
"subscriptionStatus": "SUBSCRIPTION_STATUS_SUCCESS",
"instrumentUid": "962e2a95-02a9-4171-abd7-aa198dbe643a"
}
]
}
}
Пример сообщения последние цены по инструменту
{
"lastPrice": {
"figi": "BBG004730RP0",
"price": {
"units": "178",
"nano": 790000000
},
"time": "2023-05-16T08:49:31.085056Z",
"instrumentUid": "962e2a95-02a9-4171-abd7-aa198dbe643a"
}
}
Лента обезличенных сделок
Пример запроса
{
"subscribeTradesRequest": {
"subscriptionAction": "SUBSCRIPTION_ACTION_SUBSCRIBE",
"instruments": [
{
"instrumentId": "962e2a95-02a9-4171-abd7-aa198dbe643a"
}
]
}
}
Пример ответа - подписка успешна
{
"subscribeTradesResponse": {
"trackingId": "6440d32adb48515bc217b426880a99a7",
"tradeSubscriptions": [
{
"figi": "BBG004730RP0",
"subscriptionStatus": "SUBSCRIPTION_STATUS_SUCCESS",
"instrumentUid": "962e2a95-02a9-4171-abd7-aa198dbe643a"
}
]
}
}
Пример сообщения обезличиные сделки по инстурменту
{
"trade": {
"figi": "BBG004730RP0",
"direction": "TRADE_DIRECTION_SELL",
"price": {
"units": "178",
"nano": 860000000
},
"quantity": "200",
"time": "2023-05-16T08:50:22.807741Z",
"instrumentUid": "962e2a95-02a9-4171-abd7-aa198dbe643a"
}
}
Лента событий по стаканам
Пример запроса
{
"subscribeOrderBookRequest": {
"subscriptionAction": "SUBSCRIPTION_ACTION_SUBSCRIBE",
"instruments": [
{
"depth": 10,
"instrumentId": "962e2a95-02a9-4171-abd7-aa198dbe643a"
}
],
"waitingClose": false
}
}
Пример ответа - подписка успешна
{
"subscribeOrderBookResponse": {
"trackingId": "6440cfbaa85be1a52839fc81e5f0f14f",
"orderBookSubscriptions": [
{
"figi": "",
"depth": 10,
"subscriptionStatus": "SUBSCRIPTION_STATUS_SUCCESS",
"instrumentUid": "962e2a95-02a9-4171-abd7-aa198dbe643a"
}
]
}
}
Пример сообщения стака по инструменту
{
"orderbook": {
"figi": "BBG004730RP0",
"depth": 10,
"isConsistent": true,
"bids": [
{
"price": {
"units": "178",
"nano": 970000000
},
"quantity": "20"
}...
# ...other 9 items collapsed
],
"asks": [
{
"price": {
"units": "178",
"nano": 980000000
},
"quantity": "3"
}...
# ...other 9 items collapsed
],
"time": "2023-05-16T08:54:00.549662Z",
"limitUp": {
"units": "191",
"nano": 440000000
},
"limitDown": {
"units": "156",
"nano": 240000000
},
"instrumentUid": "962e2a95-02a9-4171-abd7-aa198dbe643a"
}
}
Лента события по свечам
Пример запроса
{
"subscribeCandlesRequest": {
"subscriptionAction": "SUBSCRIPTION_ACTION_SUBSCRIBE",
"instruments": [
{
"interval": "SUBSCRIPTION_INTERVAL_ONE_MINUTE",
"instrumentId": "962e2a95-02a9-4171-abd7-aa198dbe643a"
}
],
"waitingClose": false
}
}
Пример ответа - подписка успешна
{
"subscribeCandlesResponse": {
"trackingId": "644a8c236378693c5265a3f679698708",
"candlesSubscriptions": [
{
"figi": "BBG004730RP0",
"interval": "SUBSCRIPTION_INTERVAL_ONE_MINUTE",
"subscriptionStatus": "SUBSCRIPTION_STATUS_SUCCESS",
"instrumentUid": "962e2a95-02a9-4171-abd7-aa198dbe643a"
}
]
}
}
Пример события свеча по инструменту
{
"candle": {
"figi": "BBG004730RP0",
"interval": "SUBSCRIPTION_INTERVAL_ONE_MINUTE",
"open": {
"units": "179",
"nano": 50000000
},
"high": {
"units": "179",
"nano": 70000000
},
"low": {
"units": "178",
"nano": 950000000
},
"close": {
"units": "178",
"nano": 950000000
},
"volume": "4279",
"time": "2023-05-16T08:44:00Z",
"lastTradeTs": "2023-05-16T08:44:27.432487Z",
"instrumentUid": "962e2a95-02a9-4171-abd7-aa198dbe643a"
}
}
Пинг сообщения
Пример
{
"ping": {
"time": "2023-05-16T08:32:00.472145624Z"
}
}