avin_connect 0.4.0

Broker connectors for the 'avin' library
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
syntax = "proto3";

package tinkoff.public.invest.api.contract.v1;

option go_package = "./;investapi";
option java_package = "ru.tinkoff.piapi.contract.v1";
option java_multiple_files = true;
option csharp_namespace = "Tinkoff.InvestApi.V1";
option objc_class_prefix = "TIAPI";
option php_namespace = "Tinkoff\\Invest\\V1";

import "google/protobuf/timestamp.proto";
import "common.proto";

service MarketDataService { //Сервис получения биржевой информации:</br> **1**. свечи;</br> **2**. стаканы;</br> **3**. торговые статусы;</br> **4**. лента сделок.

  //Метод запроса исторических свечей по инструменту.
  rpc GetCandles(GetCandlesRequest) returns (GetCandlesResponse);

  //Метод запроса цен последних сделок по инструментам.
  rpc GetLastPrices(GetLastPricesRequest) returns (GetLastPricesResponse);

  //Метод получения стакана по инструменту.
  rpc GetOrderBook(GetOrderBookRequest) returns (GetOrderBookResponse);

  //Метод запроса статуса торгов по инструментам.
  rpc GetTradingStatus(GetTradingStatusRequest) returns (GetTradingStatusResponse);

  //Метод запроса статуса торгов по инструментам.
  rpc GetTradingStatuses(GetTradingStatusesRequest) returns (GetTradingStatusesResponse);

  //Метод запроса обезличенных сделок за последний час.
  rpc GetLastTrades(GetLastTradesRequest) returns (GetLastTradesResponse);

  //Метод запроса цен закрытия торговой сессии по инструментам.
  rpc GetClosePrices(GetClosePricesRequest) returns (GetClosePricesResponse);
}

service MarketDataStreamService {
  //Bi-directional стрим предоставления биржевой информации.
  rpc MarketDataStream(stream MarketDataRequest) returns (stream MarketDataResponse);

  //Server-side стрим предоставления биржевой информации.
  rpc MarketDataServerSideStream(MarketDataServerSideStreamRequest) returns (stream MarketDataResponse);
}

//Запрос подписки или отписки на определённые биржевые данные.
message MarketDataRequest {
  oneof payload {
    SubscribeCandlesRequest subscribe_candles_request = 1; //Запрос подписки на свечи.
    SubscribeOrderBookRequest subscribe_order_book_request = 2; //Запрос подписки на стаканы.
    SubscribeTradesRequest subscribe_trades_request = 3; //Запрос подписки на ленту обезличенных сделок.
    SubscribeInfoRequest subscribe_info_request = 4; //Запрос подписки на торговые статусы инструментов.
    SubscribeLastPriceRequest subscribe_last_price_request = 5; //Запрос подписки на цены последних сделок.
    GetMySubscriptions get_my_subscriptions = 6; //Запрос своих подписок.
  }
}

message MarketDataServerSideStreamRequest {
  SubscribeCandlesRequest subscribe_candles_request = 1; //Запрос подписки на свечи.
  SubscribeOrderBookRequest subscribe_order_book_request = 2; //Запрос подписки на стаканы.
  SubscribeTradesRequest subscribe_trades_request = 3; //Запрос подписки на ленту обезличенных сделок.
  SubscribeInfoRequest subscribe_info_request = 4; //Запрос подписки на торговые статусы инструментов.
  SubscribeLastPriceRequest subscribe_last_price_request = 5; //Запрос подписки на цены последних сделок.
}

//Пакет биржевой информации по подписке.
message MarketDataResponse {
  oneof payload {
    SubscribeCandlesResponse subscribe_candles_response = 1; //Результат подписки на свечи.
    SubscribeOrderBookResponse subscribe_order_book_response = 2; //Результат подписки на стаканы.
    SubscribeTradesResponse subscribe_trades_response = 3; //Результат подписки на поток обезличенных сделок.
    SubscribeInfoResponse subscribe_info_response = 4; //Результат подписки на торговые статусы инструментов.
    Candle candle = 5; //Свеча.
    Trade trade = 6; //Сделки.
    OrderBook orderbook = 7; //Стакан.
    TradingStatus trading_status = 8; //Торговый статус.
    Ping ping = 9; //Проверка активности стрима.
    SubscribeLastPriceResponse subscribe_last_price_response = 10; //Результат подписки на цены последние сделок по инструментам.
    LastPrice last_price = 11; //Цена последней сделки.
  }
}

// subscribeCandles | Изменения статуса подписки на свечи.
message SubscribeCandlesRequest {
  SubscriptionAction subscription_action = 1; //Изменение статуса подписки.
  repeated CandleInstrument instruments = 2; //Массив инструментов для подписки на свечи.
  bool waiting_close = 3; //Флаг ожидания закрытия временного интервала для отправки свечи, применяется только для минутных свечей.
}

//Тип операции со списком подписок.
enum SubscriptionAction {
  SUBSCRIPTION_ACTION_UNSPECIFIED = 0; //Статус подписки не определён.
  SUBSCRIPTION_ACTION_SUBSCRIBE = 1; //Подписаться.
  SUBSCRIPTION_ACTION_UNSUBSCRIBE = 2; //Отписаться.
}

//Интервал свечи.
enum SubscriptionInterval {
  SUBSCRIPTION_INTERVAL_UNSPECIFIED = 0; //Интервал свечи не определён.
  SUBSCRIPTION_INTERVAL_ONE_MINUTE = 1; //Минутные свечи.
  SUBSCRIPTION_INTERVAL_FIVE_MINUTES = 2; //Пятиминутные свечи.
}

//Запрос изменения статус подписки на свечи.
message CandleInstrument {
  string figi = 1 [ deprecated = true ]; // Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
  SubscriptionInterval interval = 2; //Интервал свечей.
  string instrument_id = 3; //Идентификатор инструмента, принимает значение figi или instrument_uid
}

//Результат изменения статус подписки на свечи.
message SubscribeCandlesResponse {
  string tracking_id = 1; //Уникальный идентификатор запроса, подробнее: [tracking_id](https://tinkoff.github.io/investAPI/grpc#tracking-id).
  repeated CandleSubscription candles_subscriptions = 2; //Массив статусов подписки на свечи.
}

//Статус подписки на свечи.
message CandleSubscription {
  string figi = 1; //Figi-идентификатор инструмента.
  SubscriptionInterval interval = 2; //Интервал свечей.
  SubscriptionStatus subscription_status = 3; //Статус подписки.
  string instrument_uid = 4; //Uid инструмента
}

//Результат подписки.
enum SubscriptionStatus {
  SUBSCRIPTION_STATUS_UNSPECIFIED = 0; //Статус подписки не определён.
  SUBSCRIPTION_STATUS_SUCCESS = 1; //Успешно.
  SUBSCRIPTION_STATUS_INSTRUMENT_NOT_FOUND = 2; //Инструмент не найден.
  SUBSCRIPTION_STATUS_SUBSCRIPTION_ACTION_IS_INVALID = 3; //Некорректный статус подписки, список возможных значений: [SubscriptionAction](https://tinkoff.github.io/investAPI/marketdata#subscriptionaction).
  SUBSCRIPTION_STATUS_DEPTH_IS_INVALID = 4; //Некорректная глубина стакана, доступные значения: 1, 10, 20, 30, 40, 50.
  SUBSCRIPTION_STATUS_INTERVAL_IS_INVALID = 5; //Некорректный интервал свечей, список возможных значений: [SubscriptionInterval](https://tinkoff.github.io/investAPI/marketdata#subscriptioninterval).
  SUBSCRIPTION_STATUS_LIMIT_IS_EXCEEDED = 6; //Превышен лимит на общее количество подписок в рамках стрима, подробнее: [Лимитная политика](https://tinkoff.github.io/investAPI/limits/).
  SUBSCRIPTION_STATUS_INTERNAL_ERROR = 7; //Внутренняя ошибка сервиса.
  SUBSCRIPTION_STATUS_TOO_MANY_REQUESTS = 8; //Превышен лимит на количество запросов на подписки в течение установленного отрезка времени
  SUBSCRIPTION_STATUS_SUBSCRIPTION_NOT_FOUND = 9; // Активная подписка не найдена. Ошибка может возникнуть только при отписке от не существующей отписки
}

//Запрос на изменение статуса подписки на стаканы.
message SubscribeOrderBookRequest {
  SubscriptionAction subscription_action = 1; //Изменение статуса подписки.
  repeated OrderBookInstrument instruments = 2; //Массив инструментов для подписки на стаканы.
}

//Запрос подписки на стаканы.
message OrderBookInstrument {
  string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
  int32 depth = 2; //Глубина стакана.
  string instrument_id = 3; //Идентификатор инструмента, принимает значение figi или instrument_uid
}

//Результат изменения статуса подписки на стаканы.
message SubscribeOrderBookResponse {
  string tracking_id = 1; //Уникальный идентификатор запроса, подробнее: [tracking_id](https://tinkoff.github.io/investAPI/grpc#tracking-id).
  repeated OrderBookSubscription order_book_subscriptions = 2; //Массив статусов подписки на стаканы.
}

//Статус подписки.
message OrderBookSubscription {
  string figi = 1; //Figi-идентификатор инструмента.
  int32 depth = 2; //Глубина стакана.
  SubscriptionStatus subscription_status = 3; //Статус подписки.
  string instrument_uid = 4; //Uid инструмента
}

//Изменение статуса подписки на поток обезличенных сделок.
message SubscribeTradesRequest {
  SubscriptionAction subscription_action = 1; //Изменение статуса подписки.
  repeated TradeInstrument instruments = 2; //Массив инструментов для подписки на поток обезличенных сделок.
}

//Запрос подписки на поток обезличенных сделок.
message TradeInstrument {
  string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
  string instrument_id = 2; //Идентификатор инструмента, принимает значение figi или instrument_uid
}

//Результат изменения статуса подписки на поток обезличенных сделок.
message SubscribeTradesResponse {
  string tracking_id = 1; //Уникальный идентификатор запроса, подробнее: [tracking_id](https://tinkoff.github.io/investAPI/grpc#tracking-id).
  repeated TradeSubscription trade_subscriptions = 2; //Массив статусов подписки на поток сделок.
}

//Статус подписки.
message TradeSubscription {
  string figi = 1; //Figi-идентификатор инструмента.
  SubscriptionStatus subscription_status = 2; //Статус подписки.
  string instrument_uid = 3; //Uid инструмента
}

//Изменение статуса подписки на торговый статус инструмента.
message SubscribeInfoRequest {
  SubscriptionAction subscription_action = 1; //Изменение статуса подписки.
  repeated InfoInstrument instruments = 2; //Массив инструментов для подписки на торговый статус.
}

//Запрос подписки на торговый статус.
message InfoInstrument {
  string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
  string instrument_id = 2; //Идентификатор инструмента, принимает значение figi или instrument_uid
}

//Результат изменения статуса подписки на торговый статус.
message SubscribeInfoResponse {
  string tracking_id = 1; //Уникальный идентификатор запроса, подробнее: [tracking_id](https://tinkoff.github.io/investAPI/grpc#tracking-id).
  repeated InfoSubscription info_subscriptions = 2; //Массив статусов подписки на торговый статус.
}

//Статус подписки.
message InfoSubscription {
  string figi = 1; //Figi-идентификатор инструмента.
  SubscriptionStatus subscription_status = 2; //Статус подписки.
  string instrument_uid = 3; //Uid инструмента
}

//Изменение статуса подписки на цену последней сделки по инструменту.
message SubscribeLastPriceRequest {
  SubscriptionAction subscription_action = 1; //Изменение статуса подписки.
  repeated LastPriceInstrument instruments = 2; //Массив инструментов для подписки на цену последней сделки.
}

//Запрос подписки на последнюю цену.
message LastPriceInstrument {
  string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
  string instrument_id = 2; //Идентификатор инструмента, принимает значение figi или instrument_uid
}

//Результат изменения статуса подписки на цену последней сделки.
message SubscribeLastPriceResponse {
  string tracking_id = 1; //Уникальный идентификатор запроса, подробнее: [tracking_id](https://tinkoff.github.io/investAPI/grpc#tracking-id).
  repeated LastPriceSubscription last_price_subscriptions = 2; //Массив статусов подписки на цену последней сделки.
}

//Статус подписки на цену последней сделки.
message LastPriceSubscription {
  string figi = 1; //Figi-идентификатор инструмента.
  SubscriptionStatus subscription_status = 2; //Статус подписки.
  string instrument_uid = 3; //Uid инструмента
}

//Пакет свечей в рамках стрима.
message Candle {
  string figi = 1; //Figi-идентификатор инструмента.
  SubscriptionInterval interval = 2; //Интервал свечи.
  Quotation open = 3; //Цена открытия за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
  Quotation high = 4; //Максимальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
  Quotation low = 5; //Минимальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
  Quotation close = 6; //Цена закрытия за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
  int64 volume = 7; //Объём сделок в лотах.
  google.protobuf.Timestamp time = 8; //Время начала интервала свечи в часовом поясе UTC.
  google.protobuf.Timestamp last_trade_ts = 9; //Время последней сделки, вошедшей в свечу в часовом поясе UTC.
  string instrument_uid = 10; //Uid инструмента
}

//Пакет стаканов в рамках стрима.
message OrderBook {
  string figi = 1; //Figi-идентификатор инструмента.
  int32 depth = 2; //Глубина стакана.
  bool is_consistent = 3; //Флаг консистентности стакана. **false** значит не все заявки попали в стакан по причинам сетевых задержек или нарушения порядка доставки.
  repeated Order bids = 4; //Массив предложений.
  repeated Order asks = 5; //Массив спроса.
  google.protobuf.Timestamp time = 6; //Время формирования стакана в часовом поясе UTC по времени биржи.
  Quotation limit_up = 7; //Верхний лимит цены за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
  Quotation limit_down = 8; //Нижний лимит цены за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
  string instrument_uid = 9; //Uid инструмента
}

//Массив предложений/спроса.
message Order {
  Quotation price = 1; //Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
  int64 quantity = 2; //Количество в лотах.
}

//Информация о сделке.
message Trade {
  string figi = 1; //Figi-идентификатор инструмента.
  TradeDirection direction = 2; //Направление сделки.
  Quotation price = 3; //Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
  int64 quantity = 4; //Количество лотов.
  google.protobuf.Timestamp time = 5; //Время сделки в часовом поясе UTC по времени биржи.
  string instrument_uid = 6; //Uid инструмента
}

//Направление сделки.
enum TradeDirection {
  TRADE_DIRECTION_UNSPECIFIED = 0; //Направление сделки не определено.
  TRADE_DIRECTION_BUY = 1; //Покупка.
  TRADE_DIRECTION_SELL = 2; //Продажа.
}

//Пакет изменения торгового статуса.
message TradingStatus {
  string figi = 1; //Figi-идентификатор инструмента.
  SecurityTradingStatus trading_status = 2; //Статус торговли инструментом.
  google.protobuf.Timestamp time = 3; //Время изменения торгового статуса в часовом поясе UTC.
  bool limit_order_available_flag = 4; //Признак доступности выставления лимитной заявки по инструменту.
  bool market_order_available_flag = 5; //Признак доступности выставления рыночной заявки по инструменту.
  string instrument_uid = 6; //Uid инструмента
}

//Запрос исторических свечей.
message GetCandlesRequest {
  string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
  google.protobuf.Timestamp from = 2; //Начало запрашиваемого периода в часовом поясе UTC.
  google.protobuf.Timestamp to = 3; //Окончание запрашиваемого периода в часовом поясе UTC.
  CandleInterval interval = 4; //Интервал запрошенных свечей.
  string instrument_id = 5; //Идентификатор инструмента, принимает значение figi или instrument_uid.
}

//Интервал свечей.
enum CandleInterval {
  CANDLE_INTERVAL_UNSPECIFIED = 0; //Интервал не определён.
  CANDLE_INTERVAL_1_MIN = 1; //от 1 минуты до 1 дня.
  CANDLE_INTERVAL_5_MIN = 2; //от 5 минут до 1 дня.
  CANDLE_INTERVAL_15_MIN = 3; //от 15 минут до 1 дня.
  CANDLE_INTERVAL_HOUR = 4; //от 1 часа до 1 недели.
  CANDLE_INTERVAL_DAY = 5; //от 1 дня до 1 года.
  CANDLE_INTERVAL_2_MIN = 6; //от 2 минут до 1 дня.
  CANDLE_INTERVAL_3_MIN = 7; //от 3 минут до 1 дня.
  CANDLE_INTERVAL_10_MIN = 8; //от 10 минут до 1 дня.
  CANDLE_INTERVAL_30_MIN = 9; //от 30 минут до 2 дней.
  CANDLE_INTERVAL_2_HOUR = 10; //от 2 часов до 1 месяца.
  CANDLE_INTERVAL_4_HOUR = 11; //от 4 часов до 1 месяца.
  CANDLE_INTERVAL_WEEK = 12; //от 1 недели до 2 лет.
  CANDLE_INTERVAL_MONTH = 13; //от 1 месяца до 10 лет.
}

//Список свечей.
message GetCandlesResponse {
  repeated HistoricCandle candles = 1; //Массив свечей.
}

//Информация о свече.
message HistoricCandle {
  Quotation open = 1; //Цена открытия за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
  Quotation high = 2; //Максимальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
  Quotation low = 3; //Минимальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
  Quotation close = 4; //Цена закрытия за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
  int64 volume = 5; //Объём торгов в лотах.
  google.protobuf.Timestamp time = 6; //Время свечи в часовом поясе UTC.
  bool is_complete = 7; //Признак завершённости свечи. **false** значит, свеча за текущие интервал ещё сформирована не полностью.
}

//Запрос получения цен последних сделок.
message GetLastPricesRequest {
  repeated string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
  repeated string instrument_id = 2; //Массив идентификаторов инструмента, принимает значения figi или instrument_uid.
}

//Список цен последних сделок.
message GetLastPricesResponse {
  repeated LastPrice last_prices = 1; //Массив цен последних сделок.
}

//Информация о цене последней сделки.
message LastPrice {
  string figi = 1; //Figi инструмента.
  Quotation price = 2; //Цена последней сделки за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
  google.protobuf.Timestamp time = 3; //Время получения последней цены в часовом поясе UTC по времени биржи.
  string instrument_uid = 11; //Uid инструмента
}

//Запрос стакана.
message GetOrderBookRequest {
  string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
  int32 depth = 2; //Глубина стакана.
  string instrument_id = 3; //Идентификатор инструмента, принимает значение figi или instrument_uid.
}

//Информация о стакане.
message GetOrderBookResponse {
  string figi = 1; //Figi-идентификатор инструмента.
  int32 depth = 2; //Глубина стакана.
  repeated Order bids = 3; //Множество пар значений на покупку.
  repeated Order asks = 4; //Множество пар значений на продажу.
  Quotation last_price = 5; //Цена последней сделки за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
  Quotation close_price = 6; //Цена закрытия за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
  Quotation limit_up = 7; //Верхний лимит цены за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
  Quotation limit_down = 8; //Нижний лимит цены за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Для перевод цен в валюту рекомендуем использовать [информацию со страницы](https://tinkoff.github.io/investAPI/faq_marketdata/)
  google.protobuf.Timestamp last_price_ts = 21; //Время получения цены последней сделки.
  google.protobuf.Timestamp close_price_ts = 22; //Время получения цены закрытия.
  google.protobuf.Timestamp orderbook_ts = 23; //Время формирования стакана на бирже.
  string instrument_uid = 9; //Uid инструмента.
}

//Запрос получения торгового статуса.
message GetTradingStatusRequest {
  string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
  string instrument_id = 2; //Идентификатор инструмента, принимает значение figi или instrument_uid.
}

//Запрос получения торгового статуса.
message GetTradingStatusesRequest {
  repeated string instrument_id = 1; //Идентификатор инструмента, принимает значение figi или instrument_uid
}

//Информация о торговом статусе.
message GetTradingStatusesResponse {
  repeated GetTradingStatusResponse trading_statuses = 1; //Массив информации о торговых статусах
}

//Информация о торговом статусе.
message GetTradingStatusResponse {
  string figi = 1; //Figi-идентификатор инструмента.
  SecurityTradingStatus trading_status = 2; //Статус торговли инструментом.
  bool limit_order_available_flag = 3; //Признак доступности выставления лимитной заявки по инструменту.
  bool market_order_available_flag = 4; //Признак доступности выставления рыночной заявки по инструменту.
  bool api_trade_available_flag = 5; //Признак доступности торгов через API.
  string instrument_uid = 6; //Uid инструмента.
}

//Запрос обезличенных сделок за последний час.
message GetLastTradesRequest {
  string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
  google.protobuf.Timestamp from = 2; //Начало запрашиваемого периода в часовом поясе UTC.
  google.protobuf.Timestamp to = 3; //Окончание запрашиваемого периода в часовом поясе UTC.
  string instrument_id = 4; //Идентификатор инструмента, принимает значение figi или instrument_uid.
}

//Обезличенных сделок за последний час.
message GetLastTradesResponse {
  repeated Trade trades = 1; //Массив сделок.
}

//Запрос активных подписок.
message GetMySubscriptions { }

//Запрос цен закрытия торговой сессии по инструментам.
message GetClosePricesRequest {
  repeated InstrumentClosePriceRequest instruments = 1; //Массив по инструментам.
}

//Запрос цен закрытия торговой сессии по инструменту.
message InstrumentClosePriceRequest {
  string instrument_id = 1; //Идентификатор инструмента, принимает значение figi или instrument_uid.
}

//Цены закрытия торговой сессии по инструментам.
message GetClosePricesResponse {
  repeated InstrumentClosePriceResponse close_prices = 1; //Массив по инструментам.
}

//Цена закрытия торговой сессии по инструменту.
message InstrumentClosePriceResponse {
  string figi = 1; //Figi инструмента.
  string instrument_uid = 2; //Uid инструмента.
  Quotation price = 11; //Цена закрытия торговой сессии.
  google.protobuf.Timestamp time = 21; //Дата совершения торгов.
}