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"; import "google/api/field_behavior.proto"; service MarketDataService {//Сервис для получения биржевой информации:
1. Свечи.
2. Стаканы.
3. Торговые статусы.
4. Лента сделок. //GetCandles — исторические свечи по инструменту rpc GetCandles(GetCandlesRequest) returns (GetCandlesResponse); //GetLastPrices — цены последних сделок по инструментам rpc GetLastPrices(GetLastPricesRequest) returns (GetLastPricesResponse); //GetOrderBook — стакан по инструменту rpc GetOrderBook(GetOrderBookRequest) returns (GetOrderBookResponse); //GetTradingStatus — статус торгов по инструменту rpc GetTradingStatus(GetTradingStatusRequest) returns (GetTradingStatusResponse); //GetTradingStatuses — статус торгов по инструментам rpc GetTradingStatuses(GetTradingStatusesRequest) returns (GetTradingStatusesResponse); //GetLastTrades — обезличенные сделки //Обезличенные сделки по инструменту. Метод гарантирует получение информации за последний час. rpc GetLastTrades(GetLastTradesRequest) returns (GetLastTradesResponse); //GetClosePrices — цены закрытия торговой сессии по инструментам rpc GetClosePrices(GetClosePricesRequest) returns (GetClosePricesResponse); //GetTechAnalysis — технические индикаторы по инструменту rpc GetTechAnalysis(GetTechAnalysisRequest) returns (GetTechAnalysisResponse); //GetMarketValues — рыночные данные по инструментам rpc GetMarketValues(GetMarketValuesRequest) returns (GetMarketValuesResponse); } service MarketDataStreamService { //MarketDataStream — bidirectional стрим предоставления биржевой информации rpc MarketDataStream(stream MarketDataRequest) returns (stream MarketDataResponse); //MarketDataServerSideStream — 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; //Запрос своих подписок. PingRequest ping = 7; //Запрос проверки активности соединения. PingDelaySettings ping_settings = 15; //Запрос настройки пинга. } } 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; //Запрос подписки на цены последних сделок. PingDelaySettings ping_settings = 15; //Запрос настройки пинга. } //Пакет биржевой информации по подписке. 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; //Цена последней сделки. OpenInterest open_interest = 12; //Открытый интерес. } } // subscribeCandles | Изменения статуса подписки на свечи. message SubscribeCandlesRequest { SubscriptionAction subscription_action = 1; //Изменение статуса подписки. repeated CandleInstrument instruments = 2; //Массив инструментов для подписки на свечи. bool waiting_close = 3; //Флаг ожидания закрытия временного интервала для отправки свечи. optional GetCandlesRequest.CandleSource candle_source_type = 9; //Источник свечей. } //Тип операции со списком подписок. 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; //Пятиминутные свечи. SUBSCRIPTION_INTERVAL_FIFTEEN_MINUTES = 3; //Пятнадцатиминутные свечи. SUBSCRIPTION_INTERVAL_ONE_HOUR = 4; //Часовые свечи. SUBSCRIPTION_INTERVAL_ONE_DAY = 5; //Дневные свечи. SUBSCRIPTION_INTERVAL_2_MIN = 6; //Двухминутные свечи. SUBSCRIPTION_INTERVAL_3_MIN = 7; //Трехминутные свечи. SUBSCRIPTION_INTERVAL_10_MIN = 8; //Десятиминутные свечи. SUBSCRIPTION_INTERVAL_30_MIN = 9; //Тридцатиминутные свечи. SUBSCRIPTION_INTERVAL_2_HOUR = 10; //Двухчасовые свечи. SUBSCRIPTION_INTERVAL_4_HOUR = 11; //Четырехчасовые свечи. SUBSCRIPTION_INTERVAL_WEEK = 12; //Недельные свечи. SUBSCRIPTION_INTERVAL_MONTH = 13; //Месячные свечи. } //Запрос изменения статус подписки на свечи. message CandleInstrument { string figi = 1 [deprecated = true]; // Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`. SubscriptionInterval interval = 2; //Интервал свечей. Двухчасовые и четырехчасовые свечи в стриме отсчитываются с 0:00 по UTC. string instrument_id = 3; //Идентификатор инструмента. Принимает значение `figi`, `instrument_uid` или `ticker + '_' + class_code`. } //Результат изменения статус подписки на свечи. message SubscribeCandlesResponse { string tracking_id = 1; //Уникальный идентификатор запроса. [Подробнее](./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 инструмента. bool waiting_close = 5; //Флаг ожидания закрытия временного интервала для отправки свечи. string stream_id = 6; //Идентификатор открытого соединения. string subscription_id = 7; //Идентификатор подписки в формате `UUID`. SubscriptionAction subscription_action = 8; //Действие подписки. optional GetCandlesRequest.CandleSource candle_source_type = 9; //Источник свечей. string ticker = 10; //Тикер инструмента. string class_code = 11; //Класс-код (секция торгов). } //Результат подписки. enum SubscriptionStatus { SUBSCRIPTION_STATUS_UNSPECIFIED = 0; //Статус подписки не определен. SUBSCRIPTION_STATUS_SUCCESS = 1; //Успешно. SUBSCRIPTION_STATUS_INSTRUMENT_NOT_FOUND = 2; //Инструмент не найден. SUBSCRIPTION_STATUS_SUBSCRIPTION_ACTION_IS_INVALID = 3; //Некорректный статус подписки. [Список возможных значений](./marketdata#subscriptionaction). SUBSCRIPTION_STATUS_DEPTH_IS_INVALID = 4; //Некорректная глубина стакана. Доступные значения — 1, 10, 20, 30, 40, 50. SUBSCRIPTION_STATUS_INTERVAL_IS_INVALID = 5; //Некорректный интервал свечей. [Список возможных значений](./marketdata#subscriptioninterval). SUBSCRIPTION_STATUS_LIMIT_IS_EXCEEDED = 6; //Превышен лимит на общее количество подписок в рамках стрима. [Лимитная политика](./limits/). SUBSCRIPTION_STATUS_INTERNAL_ERROR = 7; //Внутренняя ошибка сервиса. SUBSCRIPTION_STATUS_TOO_MANY_REQUESTS = 8; //Превышен лимит на количество запросов на подписки в течение установленного отрезка времени. SUBSCRIPTION_STATUS_SUBSCRIPTION_NOT_FOUND = 9; // Активная подписка не найдена. Ошибка может возникнуть только при отписке от несуществующей подписки. SUBSCRIPTION_STATUS_SOURCE_IS_INVALID = 10; //Указан некорректный источник. } //Запрос на изменение статуса подписки на стаканы. 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` или `ticker + '_' + class_code`. OrderBookType order_book_type = 4; //Тип стакана. Значение по умолчанию — `ORDERBOOK_TYPE_ALL`, стакан биржевой и дилера. } //Результат изменения статуса подписки на стаканы. message SubscribeOrderBookResponse { string tracking_id = 1; //Уникальный идентификатор запроса. [Подробнее](./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 инструмента. string stream_id = 5; //Идентификатор открытого соединения. string subscription_id = 6; //Идентификатор подписки в формате `UUID`. OrderBookType order_book_type = 7; //Тип стакана. SubscriptionAction subscription_action = 8; //Действие подписки. string ticker = 9; //Тикер инструмента. string class_code = 10; //Класс-код (секция торгов). } //Типы источников сделок. enum TradeSourceType { TRADE_SOURCE_UNSPECIFIED = 0; //Тип источника сделки не определён. TRADE_SOURCE_EXCHANGE = 1; // Биржевые сделки. TRADE_SOURCE_DEALER = 2; // Сделки дилера. TRADE_SOURCE_ALL = 3; // Все сделки. } //Изменение статуса подписки на поток обезличенных сделок. message SubscribeTradesRequest { SubscriptionAction subscription_action = 1; //Изменение статуса подписки. repeated TradeInstrument instruments = 2; //Массив инструментов для подписки на поток обезличенных сделок. TradeSourceType trade_source = 3; //Тип источника сделок. Значение по умолчанию — `TRADE_SOURCE_ALL`, все сделки. bool with_open_interest = 4; //Флаг открытого интереса. **true** - в стриме дополнительно передается информация об открытом интересе для фьючерсов } //Запрос подписки на поток обезличенных сделок. message TradeInstrument { string figi = 1 [deprecated = true]; //Deprecated FIGI-идентификатор инструмента. Используйте instrument_id`. string instrument_id = 2; //Идентификатор инструмента. Принимает значение `figi`, `instrument_uid` или `ticker + '_' + class_code`. } //Результат изменения статуса подписки на поток обезличенных сделок. message SubscribeTradesResponse { string tracking_id = 1; //Уникальный идентификатор запроса. [Подробнее](./grpc#tracking-id). repeated TradeSubscription trade_subscriptions = 2; //Массив статусов подписки на поток сделок. TradeSourceType trade_source = 3; //Тип источника сделок. } //Статус подписки. message TradeSubscription { string figi = 1; //FIGI-идентификатор инструмента. SubscriptionStatus subscription_status = 2; //Статус подписки. string instrument_uid = 3; //UID инструмента. string stream_id = 4; //Идентификатор открытого соединения. string subscription_id = 5; //Идентификатор подписки в формате UUID. bool with_open_interest = 6; //Флаг открытого интереса. **true** - в стриме дополнительно передается информация об открытом интересе для фьючерсов SubscriptionAction subscription_action = 7; //Действие подписки. string ticker = 8; //Тикер инструмента. string class_code = 9; //Класс-код (секция торгов). } //Изменение статуса подписки на торговый статус инструмента. 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` или `ticker + '_' + class_code`. } //Результат изменения статуса подписки на торговый статус. message SubscribeInfoResponse { string tracking_id = 1; //Уникальный идентификатор запроса. [Подробнее](./grpc#tracking-id). repeated InfoSubscription info_subscriptions = 2; //Массив статусов подписки на торговый статус. } //Статус подписки. message InfoSubscription { string figi = 1; //FIGI-идентификатор инструмента. SubscriptionStatus subscription_status = 2; //Статус подписки. string instrument_uid = 3; //UID инструмента. string stream_id = 4; //Идентификатор открытого соединения. string subscription_id = 5; //Идентификатор подписки в формате UUID. SubscriptionAction subscription_action = 6; //Действие подписки. string ticker = 7; //Тикер инструмента. string class_code = 8; //Класс-код (секция торгов). } //Изменение статуса подписки на цену последней сделки по инструменту. 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` или `ticker + '_' + class_code`. } //Результат изменения статуса подписки на цену последней сделки. message SubscribeLastPriceResponse { string tracking_id = 1; //Уникальный идентификатор запроса. [Подробнее](./grpc#tracking-id). repeated LastPriceSubscription last_price_subscriptions = 2; //Массив статусов подписки на цену последней сделки. } //Статус подписки на цену последней сделки. message LastPriceSubscription { string figi = 1; //FIGI-идентификатор инструмента. SubscriptionStatus subscription_status = 2; //Статус подписки. string instrument_uid = 3; //UID инструмента. string stream_id = 4; //Идентификатор открытого соединения. string subscription_id = 5; //Идентификатор подписки в формате `UUID`. SubscriptionAction subscription_action = 6; //Действие подписки. string ticker = 7; //Тикер инструмента. string class_code = 8; //Класс-код (секция торгов). } //Пакет свечей в рамках стрима. message Candle { string figi = 1; //FIGI-идентификатор инструмента. SubscriptionInterval interval = 2; //Интервал свечи. Quotation open = 3; //Цена открытия за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](./faq_marketdata/#_15). Quotation high = 4; //Максимальная цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](./faq_marketdata/#_15). Quotation low = 5; //Минимальная цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](./faq_marketdata/#_15). Quotation close = 6; //Цена закрытия за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](./faq_marketdata/#_15). int64 volume = 7; //Объем сделок в лотах. google.protobuf.Timestamp time = 8; //Время начала интервала свечи по UTC. google.protobuf.Timestamp last_trade_ts = 9; //Время последней сделки, вошедшей в свечу по UTC. string instrument_uid = 10; //UID инструмента. string ticker = 11; //Тикер инструмента. string class_code = 12; //Класс-код (секция торгов). int64 volume_buy = 13; //Объем торгов на покупку. int64 volume_sell = 14; //Объём торгов на продажу. CandleSource candle_source_type = 19; //Источник свечей. } //Пакет стаканов в рамках стрима. 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 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](./faq_marketdata/#_15). Quotation limit_down = 8; //Нижний лимит цены за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](./faq_marketdata/#_15). string instrument_uid = 9; //UID инструмента. OrderBookType order_book_type = 10; //Тип стакана. string ticker = 11; //Тикер инструмента. string class_code = 12; //Класс-код (секция торгов). } //Массив предложений/спроса. message Order { Quotation price = 1; //Цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](./faq_marketdata/#_15). int64 quantity = 2; //Количество в лотах. } //Информация о сделке. message Trade { string figi = 1; //FIGI-идентификатор инструмента. TradeDirection direction = 2; //Направление сделки. Quotation price = 3; //Цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](./faq_marketdata/#_15). int64 quantity = 4; //Количество лотов. google.protobuf.Timestamp time = 5; //Время сделки в часовом поясе UTC по времени биржи. string instrument_uid = 6; //UID инструмента. TradeSourceType trade_source = 7; //Тип источника сделки. string ticker = 8; //Тикер инструмента. string class_code = 9; //Класс-код (секция торгов). } //Направление сделки. 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 инструмента. string ticker = 7; //Тикер инструмента. string class_code = 8; //Класс-код (секция торгов). } //Запрос исторических свечей. message GetCandlesRequest { optional string figi = 1 [deprecated = true]; //Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`. google.protobuf.Timestamp from = 2 [(google.api.field_behavior) = REQUIRED]; //Начало запрашиваемого периода по UTC. google.protobuf.Timestamp to = 3 [(google.api.field_behavior) = REQUIRED]; //Окончание запрашиваемого периода по UTC. CandleInterval interval = 4 [(google.api.field_behavior) = REQUIRED]; //Интервал запрошенных свечей. optional string instrument_id = 5; //Идентификатор инструмента. Принимает значение `figi`, `instrument_uid` или `ticker + '_' + class_code`. optional CandleSource candle_source_type = 7; //Тип источника свечи. optional int32 limit = 10; //Максимальное количество свечей в ответе. enum CandleSource { CANDLE_SOURCE_UNSPECIFIED = 0; //Все свечи. CANDLE_SOURCE_EXCHANGE = 1; //Биржевые свечи. CANDLE_SOURCE_INCLUDE_WEEKEND = 3; //Все свечи с учетом торговли по выходным. } } //Интервал свечей. Максимальное значение интервала приведено ориентировочно, может отличаться в большую сторону в зависимости от параметров запроса. enum CandleInterval { CANDLE_INTERVAL_UNSPECIFIED = 0; //Интервал не определен. CANDLE_INTERVAL_1_MIN = 1; //От 1 минуты до 1 дня. Максимальное значение `limit` — 2400. CANDLE_INTERVAL_5_MIN = 2; //От 5 минут до недели. Максимальное значение `limit` — 2400. CANDLE_INTERVAL_15_MIN = 3; //От 15 минут до 3 недель. Максимальное значение `limit` — 2400. CANDLE_INTERVAL_HOUR = 4; //От 1 часа до 3 месяцев. Максимальное значение `limit` — 2400. CANDLE_INTERVAL_DAY = 5; //От 1 дня до 6 лет. Максимальное значение `limit` — 2400. CANDLE_INTERVAL_2_MIN = 6; //От 2 минут до 1 дня. Максимальное значение `limit` — 1200. CANDLE_INTERVAL_3_MIN = 7; //От 3 минут до 1 дня. Максимальное значение `limit` — 750. CANDLE_INTERVAL_10_MIN = 8; //От 10 минут до недели. Максимальное значение `limit` — 1200. CANDLE_INTERVAL_30_MIN = 9; //От 30 минут до 3 недель. Максимальное значение `limit` — 1200. CANDLE_INTERVAL_2_HOUR = 10; //От 2 часов до 3 месяцев. Максимальное значение `limit` — 2400. CANDLE_INTERVAL_4_HOUR = 11; //От 4 часов до 3 месяцев. Максимальное значение `limit` — 700. CANDLE_INTERVAL_WEEK = 12; //От 1 недели до 5 лет. Максимальное значение `limit` — 300. CANDLE_INTERVAL_MONTH = 13; //От 1 месяца до 10 лет. Максимальное значение `limit` — 120. CANDLE_INTERVAL_5_SEC = 14; //От 5 секунд до 200 минут. Максимальное значение `limit` — 2500. CANDLE_INTERVAL_10_SEC = 15; //От 10 секунд до 200 минут. Максимальное значение `limit` — 1250. CANDLE_INTERVAL_30_SEC = 16; //От 30 секунд до 20 часов. Максимальное значение `limit` — 2500. } enum CandleSource { CANDLE_SOURCE_UNSPECIFIED = 0; //Источник свечей не определен. CANDLE_SOURCE_EXCHANGE = 1; //Биржевые свечи. CANDLE_SOURCE_DEALER_WEEKEND = 2; //Свечи дилера в результате торговли по выходным. } //Список свечей. message GetCandlesResponse { repeated HistoricCandle candles = 1; //Массив свечей. } //Информация о свече. message HistoricCandle { Quotation open = 1; //Цена открытия за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](./faq_marketdata/#_15). Quotation high = 2; //Максимальная цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](./faq_marketdata/#_15). Quotation low = 3; //Минимальная цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](./faq_marketdata/#_15). Quotation close = 4; //Цена закрытия за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](./faq_marketdata/#_15). int64 volume = 5; //Объем торгов в лотах. google.protobuf.Timestamp time = 6; //Время свечи в часовом поясе UTC. bool is_complete = 7; //Признак завершенности свечи. **false** — свеча за текущие интервал еще сформирована не полностью. CandleSource candle_source = 9; //Тип источника свечи int64 volume_buy = 10; //Объем торгов на покупку. int64 volume_sell = 11; //Объём торгов на продажу. } //Запрос получения цен последних сделок. message GetLastPricesRequest { repeated string figi = 1 [deprecated = true]; //Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`. repeated string instrument_id = 2; //Массив идентификаторов инструмента. Принимает значения `figi`, `instrument_uid` или `ticker + '_' + class_code`. LastPriceType last_price_type = 3; //Тип запрашиваемой последней цены. optional InstrumentStatus instrument_status = 9; //Статус запрашиваемых инструментов. [Возможные значения](#instrumentstatus). } //Список цен последних сделок. message GetLastPricesResponse { repeated LastPrice last_prices = 1; //Массив цен последних сделок. } //Информация о цене последней сделки. message LastPrice { string figi = 1; //FIGI инструмента. Quotation price = 2; //Цена последней сделки за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](./faq_marketdata/#_15). google.protobuf.Timestamp time = 3; //Время получения последней цены в часовом поясе UTC по времени биржи. string ticker = 9; //Тикер инструмента. string class_code = 10; //Класс-код (секция торгов). string instrument_uid = 11; //UID инструмента. LastPriceType last_price_type = 12; //Тип последней цены. } message OpenInterest { string instrument_uid = 1; //UID инструмента. google.protobuf.Timestamp time = 2; //Время получения открытого интереса в часовом поясе UTC по времени биржи. int64 open_interest = 3; //Открытый интерес. string ticker = 4; //Тикер инструмента. string class_code = 5; //Класс-код (секция торгов). } //Запрос стакана. message GetOrderBookRequest { optional string figi = 1 [deprecated = true]; //Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`. int32 depth = 2 [(google.api.field_behavior) = REQUIRED]; //Глубина стакана. optional string instrument_id = 3; //Идентификатор инструмента. Принимает значение `figi`, `instrument_uid` или `ticker + '_' + class_code`. } //Информация о стакане. message GetOrderBookResponse { string figi = 1; //FIGI-идентификатор инструмента. int32 depth = 2; //Глубина стакана. repeated Order bids = 3; //Множество пар значений на покупку. repeated Order asks = 4; //Множество пар значений на продажу. Quotation last_price = 5; //Цена последней сделки за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](./faq_marketdata/#_15). Quotation close_price = 6; //Цена закрытия за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](./faq_marketdata/#_15). Quotation limit_up = 7; //Верхний лимит цены за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](./faq_marketdata/#_15). Quotation limit_down = 8; //Нижний лимит цены за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. [Подробнее про перевод цен в валюту](./faq_marketdata/#_15). string instrument_uid = 9; //UID инструмента. string ticker = 10; //Тикер инструмента. string class_code = 11; //Класс-код (секция торгов). google.protobuf.Timestamp last_price_ts = 21; //Время получения цены последней сделки. google.protobuf.Timestamp close_price_ts = 22; //Время получения цены закрытия. google.protobuf.Timestamp orderbook_ts = 23; //Время формирования стакана на бирже. } //Запрос получения торгового статуса. message GetTradingStatusRequest { optional string figi = 1 [deprecated = true]; //Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`. optional string instrument_id = 2; //Идентификатор инструмента. Принимает значение `figi`, `instrument_uid` или `ticker + '_' + class_code` } //Запрос получения торгового статуса. message GetTradingStatusesRequest { repeated string instrument_id = 1; //Идентификатор инструмента. Принимает значение `figi`, `instrument_uid` или `ticker + '_' + class_code` } //Информация о торговом статусе. 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 инструмента. bool bestprice_order_available_flag = 8; //Признак доступности завяки по лучшей цене. bool only_best_price = 9; //Признак доступности только заявки по лучшей цене. string ticker = 10; //Тикер инструмента. string class_code = 11; //Класс-код (секция торгов). } //Запрос обезличенных сделок за последний час. message GetLastTradesRequest { optional string figi = 1 [deprecated = true]; //Deprecated FIGI-идентификатор инструмента. Используйте `instrument_id`. google.protobuf.Timestamp from = 2 [(google.api.field_behavior) = REQUIRED]; //Начало запрашиваемого периода по UTC. google.protobuf.Timestamp to = 3 [(google.api.field_behavior) = REQUIRED]; //Окончание запрашиваемого периода по UTC. optional string instrument_id = 4; //Идентификатор инструмента. Принимает значение `figi`, `instrument_uid` или `ticker + '_' + class_code` TradeSourceType trade_source = 5; //Тип источника сделок. Значение по умолчанию — `TRADE_SOURCE_ALL`, все сделки. } //Обезличенных сделок за последний час. message GetLastTradesResponse { repeated Trade trades = 1; //Массив сделок. } //Запрос активных подписок. Возвращает по одному сообщению на каждый тип активных подписок — `SubscribeLastPriceResponse`, `SubscribeInfoResponse`, `SubscribeTradesResponse`, `SubscribeOrderBookResponse`, `SubscribeCandlesResponse`. message GetMySubscriptions {} //Запрос цен закрытия торговой сессии по инструментам. message GetClosePricesRequest { repeated InstrumentClosePriceRequest instruments = 1 [(google.api.field_behavior) = REQUIRED]; //Массив по инструментам. optional InstrumentStatus instrument_status = 9; //Статус запрашиваемых инструментов. [Возможные значения](#instrumentstatus). } //Запрос цен закрытия торговой сессии по инструменту. message InstrumentClosePriceRequest { string instrument_id = 1; //Идентификатор инструмента. Принимает значение `figi`, `instrument_uid` или `ticker + '_' + class_code` } //Цены закрытия торговой сессии по инструментам. message GetClosePricesResponse { repeated InstrumentClosePriceResponse close_prices = 1; //Массив по инструментам. } //Цена закрытия торговой сессии по инструменту. message InstrumentClosePriceResponse { string figi = 1; //FIGI инструмента. string instrument_uid = 2; //UID инструмента. string ticker = 3; //Тикер инструмента. string class_code = 4; //Класс-код (секция торгов). Quotation price = 11; //Цена закрытия торговой сессии. Quotation evening_session_price = 12; //Цена последней сделки с вечерней сессии. Цена публикуется биржей по торговым дням и в нерабочие дни не обновляется. google.protobuf.Timestamp time = 21; //Дата совершения торгов. google.protobuf.Timestamp evening_session_price_time = 23; //Дата цены закрытия вечерней сессии. } message GetTechAnalysisRequest { IndicatorType indicator_type = 1 [(google.api.field_behavior) = REQUIRED]; //Тип технического индикатора. string instrument_uid = 2 [(google.api.field_behavior) = REQUIRED]; //UID инструмента. google.protobuf.Timestamp from = 3 [(google.api.field_behavior) = REQUIRED]; //Начало запрашиваемого периода по UTC. google.protobuf.Timestamp to = 4 [(google.api.field_behavior) = REQUIRED]; //Окончание запрашиваемого периода по UTC. IndicatorInterval interval = 5 [(google.api.field_behavior) = REQUIRED]; //Интервал, за который рассчитывается индикатор. TypeOfPrice type_of_price = 6 [(google.api.field_behavior) = REQUIRED]; //Тип цены, который используется при расчете индикатора. int32 length = 7; //Торговый период, за который рассчитывается индикатор. Deviation deviation = 8; //Параметры отклонения. Smoothing smoothing = 9; //Параметры сглаживания. message Smoothing { int32 fast_length = 1; //Короткий период сглаживания для первой экспоненциальной скользящей средней (EMA). int32 slow_length = 2; //Длинный период сглаживания для второй экспоненциальной скользящей средней (EMA). int32 signal_smoothing = 3; //Период сглаживания для третьей экспоненциальной скользящей средней (EMA) } message Deviation { Quotation deviation_multiplier = 1; //Количество стандартных отклонений, на которые отступают верхняя и нижняя границы. } //Интервал свечи. enum IndicatorInterval { INDICATOR_INTERVAL_UNSPECIFIED = 0; //Интервал не определен. INDICATOR_INTERVAL_ONE_MINUTE = 1; //1 минута. INDICATOR_INTERVAL_FIVE_MINUTES = 2; //5 минут. INDICATOR_INTERVAL_FIFTEEN_MINUTES = 3; //15 минут. INDICATOR_INTERVAL_ONE_HOUR = 4; //1 час. INDICATOR_INTERVAL_ONE_DAY = 5; //1 день. INDICATOR_INTERVAL_2_MIN = 6; //2 минуты. INDICATOR_INTERVAL_3_MIN = 7; //3 минуты. INDICATOR_INTERVAL_10_MIN = 8; //10 минут. INDICATOR_INTERVAL_30_MIN = 9; //30 минут. INDICATOR_INTERVAL_2_HOUR = 10; //2 часа. INDICATOR_INTERVAL_4_HOUR = 11; //4 часа. INDICATOR_INTERVAL_WEEK = 12; //Неделя. INDICATOR_INTERVAL_MONTH = 13; //Месяц. } enum TypeOfPrice { TYPE_OF_PRICE_UNSPECIFIED = 0; //Не указано. TYPE_OF_PRICE_CLOSE = 1; //Цена закрытия. TYPE_OF_PRICE_OPEN = 2; //Цена открытия. TYPE_OF_PRICE_HIGH = 3; //Максимальное значение за выбранный интервал. TYPE_OF_PRICE_LOW = 4; //Минимальное значение за выбранный интервал. TYPE_OF_PRICE_AVG = 5; //Среднее значение по показателям [ (close + open + high + low) / 4 ]. } enum IndicatorType { INDICATOR_TYPE_UNSPECIFIED = 0; //Не определен. INDICATOR_TYPE_BB = 1; //Bollinger Bands — линия Боллинжера. INDICATOR_TYPE_EMA = 2; //Exponential Moving Average — EMA, экспоненциальная скользящая средняя. INDICATOR_TYPE_RSI = 3; //Relative Strength Index — индекс относительной силы. INDICATOR_TYPE_MACD = 4; //Moving Average Convergence/Divergence — схождение/расхождение скользящих средних. INDICATOR_TYPE_SMA = 5; //Simple Moving Average — простое скользящее среднее. } } message GetTechAnalysisResponse { repeated TechAnalysisItem technical_indicators = 1; //Массив значений результатов технического анализа. message TechAnalysisItem { google.protobuf.Timestamp timestamp = 1; //Временная метка по UTC, для которой были рассчитаны значения индикатора. optional Quotation middle_band = 2; //Значение простого скользящего среднего (средней линии). optional Quotation upper_band = 3; //Значение верхней линии Боллинджера. optional Quotation lower_band = 4; //Значение нижней линии Боллинджера. optional Quotation signal = 5; //Значение сигнальной линии. optional Quotation macd = 6; //Значение линии MACD. } } message GetMarketValuesRequest { repeated string instrument_id = 1; //Массив идентификаторов инструментов. Принимает значения `figi`, `instrument_uid` или `ticker + '_' + class_code`. repeated MarketValueType values = 2; //Массив запрашиваемых параметров. } message GetMarketValuesResponse { repeated MarketValueInstrument instruments = 1; //Массив значений параметров. } message MarketValueInstrument { string instrument_uid = 1; //Идентификатор инструмента. repeated MarketValue values = 2; //Массив параметров инструмента. string ticker = 3; //Тикер инструмента. string class_code = 4; //Класс-код (секция торгов). } message MarketValue { optional MarketValueType type = 1; //Тип параметра. optional Quotation value = 2; //Значение. optional google.protobuf.Timestamp time = 3; //Дата и время. } enum MarketValueType { INSTRUMENT_VALUE_UNSPECIFIED = 0; //Не определен. INSTRUMENT_VALUE_LAST_PRICE = 1; //Последняя биржевая цена. INSTRUMENT_VALUE_LAST_PRICE_DEALER = 2; //Последняя цена дилера. INSTRUMENT_VALUE_CLOSE_PRICE = 3; //Цена закрытия. INSTRUMENT_VALUE_EVENING_SESSION_PRICE = 4; //Цена последней сделки с вечерней сессии. INSTRUMENT_VALUE_OPEN_INTEREST = 5; // Открытый интерес, возвращается только для фьючерсов. INSTRUMENT_VALUE_THEOR_PRICE = 6; //Теоретическая цена, возвращается только для опционов. INSTRUMENT_VALUE_YIELD = 7; //Доходность } enum OrderBookType { ORDERBOOK_TYPE_UNSPECIFIED = 0; //Не определен. ORDERBOOK_TYPE_EXCHANGE = 1; //Биржевой стакан. ORDERBOOK_TYPE_DEALER = 2; //Стакан дилера. ORDERBOOK_TYPE_ALL = 3; //Стакан биржевой и дилера. } //Тип последней цены enum LastPriceType { LAST_PRICE_UNSPECIFIED = 0; //Не определен. LAST_PRICE_EXCHANGE = 1; // Цена биржи. LAST_PRICE_DEALER = 2; // Цена дилера }