Перейти к содержанию

Методы

OrdersStreamService

Методы сервиса

TradesStream

Stream сделок пользователя

OrderStateStream

Stream поручений пользователя. Перед работой прочитайте статью.

OrdersService

Сервис предназначен для работы с торговыми поручениями:
1. выставление;
2. отмена;
3. получение статуса;
4. расчёт полной стоимости;
5. получение списка заявок.

Методы сервиса

PostOrder

Метод выставления заявки.

CancelOrder

Метод отмены биржевой заявки.

GetOrderState

Метод получения статуса торгового поручения.

GetOrders

Метод получения списка активных заявок по счёту.

ReplaceOrder

Метод изменения выставленной заявки.

GetMaxLots

расчет количества доступных для покупки/продажи лотов

GetOrderPrice

Метод получения предварительной стоимости для лимитной заявки

Сообщения методов

TradesStreamRequest

Запрос установки соединения.

Field Type Description
accounts Массив объектов string Идентификаторы счетов.

TradesStreamResponse

Информация о торговых поручениях.

Field Type Description
order_trades OrderTrades Информация об исполнении торгового поручения.
ping Ping Проверка активности стрима.

OrderTrades

Информация об исполнении торгового поручения.

Field Type Description
order_id string Идентификатор торгового поручения.
created_at google.protobuf.Timestamp Дата и время создания сообщения в часовом поясе UTC.
direction OrderDirection Направление сделки.
figi string Figi-идентификатор инструмента.
trades Массив объектов OrderTrade Массив сделок.
account_id string Идентификатор счёта.
instrument_uid string UID идентификатор инструмента.

OrderTrade

Информация о сделке.

Field Type Description
date_time google.protobuf.Timestamp Дата и время совершения сделки в часовом поясе UTC.
price Quotation Цена за 1 инструмент, по которой совершена сделка.
quantity int64 Количество штук в сделке.
trade_id string Идентификатор сделки.

PostOrderRequest

Запрос выставления торгового поручения.

Field Type Description
figi string Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
quantity int64 Количество лотов.
price Quotation Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Игнорируется для рыночных поручений.
direction OrderDirection Направление операции.
account_id string Номер счёта.
order_type OrderType Тип заявки.
order_id string Идентификатор запроса выставления поручения для целей идемпотентности в формате UID. Максимальная длина 36 символов.
instrument_id string Идентификатор инструмента, принимает значения Figi или Instrument_uid.
time_in_force TimeInForceType Алгоритм исполнения поручения, применяется только к лимитной заявке.
price_type PriceType Тип цены.

PostOrderResponse

Информация о выставлении поручения.

Field Type Description
order_id string Биржевой идентификатор заявки.
execution_report_status OrderExecutionReportStatus Текущий статус заявки.
lots_requested int64 Запрошено лотов.
lots_executed int64 Исполнено лотов.
initial_order_price MoneyValue Начальная цена заявки. Произведение количества запрошенных лотов на цену.
executed_order_price MoneyValue Исполненная средняя цена одного инструмента в заявке.
total_order_amount MoneyValue Итоговая стоимость заявки, включающая все комиссии.
initial_commission MoneyValue Начальная комиссия. Комиссия рассчитанная при выставлении заявки.
executed_commission MoneyValue Фактическая комиссия по итогам исполнения заявки.
aci_value MoneyValue Значение НКД (накопленного купонного дохода) на дату. Подробнее: НКД при выставлении торговых поручений
figi string Figi-идентификатор инструмента.
direction OrderDirection Направление сделки.
initial_security_price MoneyValue Начальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
order_type OrderType Тип заявки.
message string Дополнительные данные об исполнении заявки.
initial_order_price_pt Quotation Начальная цена заявки в пунктах (для фьючерсов).
instrument_uid string UID идентификатор инструмента.
order_request_id string Идентификатор ключа идемпотентности, переданный клиентом, в формате UID. Максимальная длина 36 символов.
response_metadata ResponseMetadata Метадата

CancelOrderRequest

Запрос отмены торгового поручения.

Field Type Description
account_id string Номер счёта.
order_id string Идентификатор заявки.

CancelOrderResponse

Результат отмены торгового поручения.

Field Type Description
time google.protobuf.Timestamp Дата и время отмены заявки в часовом поясе UTC.
response_metadata ResponseMetadata Метадата

GetOrderStateRequest

Запрос получения статуса торгового поручения.

Field Type Description
account_id string Номер счёта.
order_id string Идентификатор заявки.
price_type PriceType Тип цены.

GetOrdersRequest

Запрос получения списка активных торговых поручений.

Field Type Description
account_id string Номер счёта.

GetOrdersResponse

Список активных торговых поручений.

Field Type Description
orders Массив объектов OrderState Массив активных заявок.

OrderState

Информация о торговом поручении.

Field Type Description
order_id string Биржевой идентификатор заявки.
execution_report_status OrderExecutionReportStatus Текущий статус заявки.
lots_requested int64 Запрошено лотов.
lots_executed int64 Исполнено лотов.
initial_order_price MoneyValue Начальная цена заявки. Произведение количества запрошенных лотов на цену.
executed_order_price MoneyValue Исполненная цена заявки. Произведение средней цены покупки на количество лотов.
total_order_amount MoneyValue Итоговая стоимость заявки, включающая все комиссии.
average_position_price MoneyValue Средняя цена позиции по сделке.
initial_commission MoneyValue Начальная комиссия. Комиссия, рассчитанная на момент подачи заявки.
executed_commission MoneyValue Фактическая комиссия по итогам исполнения заявки.
figi string Figi-идентификатор инструмента.
direction OrderDirection Направление заявки.
initial_security_price MoneyValue Начальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
stages Массив объектов OrderStage Стадии выполнения заявки.
service_commission MoneyValue Сервисная комиссия.
currency string Валюта заявки.
order_type OrderType Тип заявки.
order_date google.protobuf.Timestamp Дата и время выставления заявки в часовом поясе UTC.
instrument_uid string UID идентификатор инструмента.
order_request_id string Идентификатор ключа идемпотентности, переданный клиентом, в формате UID. Максимальная длина 36 символов.

OrderStage

Сделки в рамках торгового поручения.

Field Type Description
price MoneyValue Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
quantity int64 Количество лотов.
trade_id string Идентификатор сделки.
execution_time google.protobuf.Timestamp Время исполнения сделки

ReplaceOrderRequest

Запрос изменения выставленной заявки.

Field Type Description
account_id string Номер счета.
order_id string Идентификатор заявки на бирже.
idempotency_key string Новый идентификатор запроса выставления поручения для целей идемпотентности. Максимальная длина 36 символов. Перезатирает старый ключ.
quantity int64 Количество лотов.
price Quotation Цена за 1 инструмент.
price_type PriceType Тип цены.

GetMaxLotsRequest

Запрос на расчет количества доступных для покупки/продажи лотов. Если не указывать цену инструмента, то расчет произведется по текущум ценам в стакане: по лучшему предложению для покупки и по лучшему спросу для продажи.

Field Type Description
account_id string Номер счета
instrument_id string Идентификатор инструмента, принимает значения Figi или instrument_uid
price Quotation Цена инструмента

GetMaxLotsResponse

Результат количество доступных для покупки/продажи лотов

Field Type Description
currency string Валюта инструмента
buy_limits GetMaxLotsResponse.BuyLimitsView Лимиты для покупок на собственные деньги
buy_margin_limits GetMaxLotsResponse.BuyLimitsView Лимиты для покупок с учетом маржинального кредитования
sell_limits GetMaxLotsResponse.SellLimitsView Лимиты для продаж по собственной позиции
sell_margin_limits GetMaxLotsResponse.SellLimitsView Лимиты для продаж с учетом маржинального кредитования

GetMaxLotsResponse.BuyLimitsView

Field Type Description
buy_money_amount Quotation Количество доступной валюты для покупки
buy_max_lots int64 Максимальное доступное количество лотов для покупки
buy_max_market_lots int64 Максимальное доступное количество лотов для покупки для заявки по рыночной цене на текущий момент

GetMaxLotsResponse.SellLimitsView

Field Type Description
sell_max_lots int64 Максимальное доступное количество лотов для продажи

GetOrderPriceRequest

Запрос получения предварительной стоимости заявки

Field Type Description
account_id string Номер счета
instrument_id string Идентификатор инструмента, принимает значения Figi или instrument_uid
price Quotation Цена инструмента
direction OrderDirection Направление заявки
quantity int64 Количество лотов

GetOrderPriceResponse

Предварительная стоимость заявки

Field Type Description
total_order_amount MoneyValue Итоговая стоимость заявки
initial_order_amount MoneyValue Стоимость заявки без комиссий, НКД, ГО (для фьючерсов — стоимость контрактов)
lots_requested int64 Запрошено лотов
executed_commission MoneyValue Общая комиссия
executed_commission_rub MoneyValue Общая комиссия в рублях
service_commission MoneyValue Сервисная комиссия
deal_commission MoneyValue Комиссия за проведение сделки
extra_bond GetOrderPriceResponse.ExtraBond Дополнительная информация по облигациям
extra_future GetOrderPriceResponse.ExtraFuture Дополнительная информация по фьючерсам

GetOrderPriceResponse.ExtraBond

Field Type Description
aci_value MoneyValue Значение НКД (накопленного купонного дохода) на дату
nominal_conversion_rate Quotation Курс конвертации для замещающих облигаций

GetOrderPriceResponse.ExtraFuture

Field Type Description
initial_margin MoneyValue Гарантийное обеспечение для фьючерса

OrderStateStreamRequest

Запрос установки стрим-соединения торговых поручений

Field Type Description
accounts Массив объектов string Идентификаторы счетов.
ping_delay_millis int32 Задержка пинг сообщений milliseconds 1000-120000, default 120000

OrderStateStreamResponse

Информация по заявкам

Field Type Description
order_state OrderStateStreamResponse.OrderState Информация об исполнении торгового поручения.
ping Ping Проверка активности стрима.
subscription OrderStateStreamResponse.SubscriptionResponse Ответ на запрос на подписку.

OrderStateStreamResponse.SubscriptionResponse

Field Type Description
tracking_id string Уникальный идентификатор запроса, подробнее: tracking_id.
status ResultSubscriptionStatus Статус подписки.
stream_id string Идентификатор открытого соединения
accounts Массив объектов string Идентификаторы счетов.
error ErrorDetail

OrderStateStreamResponse.OrderState

Заявка

Field Type Description
order_id string Биржевой идентификатор заявки
order_request_id string Идентификатор ключа идемпотентности, переданный клиентом, в формате UID. Максимальная длина 36 символов.
client_code string Код клиента на бирже
created_at google.protobuf.Timestamp Дата создания заявки
execution_report_status OrderExecutionReportStatus Статус заявки
status_info OrderStateStreamResponse.StatusCauseInfo Дополнительная информация по статусу
ticker string Тикер инструмента
class_code string Класс-код (секция торгов)
lot_size int32 Лотность инструмента заявки
direction OrderDirection Направление заявки
time_in_force TimeInForceType Алгоритм исполнения поручения
order_type OrderType Тип заявки
account_id string Номер счета
initial_order_price MoneyValue Начальная цена заявки
order_price MoneyValue Цена выставления заявки
amount MoneyValue Предрассчитанная стоимость полной заявки
executed_order_price MoneyValue Исполненная средняя цена одного инструмента в заявке
currency string Валюта исполнения
lots_requested int64 Запрошено лотов
lots_executed int64 Исполнено лотов
lots_left int64 Число неисполненных лотов по заявке
lots_cancelled int64 Отмененные лоты
marker OrderStateStreamResponse.MarkerType Спецсимвол
trades Массив объектов OrderTrade Список сделок
completion_time google.protobuf.Timestamp Время исполнения заявки
exchange string Код биржи
instrument_uid string UID идентификатор инструмента

Enums

OrderDirection

Направление операции.

Name Number Description
ORDER_DIRECTION_UNSPECIFIED 0 Значение не указано
ORDER_DIRECTION_BUY 1 Покупка
ORDER_DIRECTION_SELL 2 Продажа

OrderType

Тип заявки.

Name Number Description
ORDER_TYPE_UNSPECIFIED 0 Значение не указано
ORDER_TYPE_LIMIT 1 Лимитная
ORDER_TYPE_MARKET 2 Рыночная
ORDER_TYPE_BESTPRICE 3 Лучшая цена

OrderExecutionReportStatus

Текущий статус заявки (поручения)

Name Number Description
EXECUTION_REPORT_STATUS_UNSPECIFIED 0 none
EXECUTION_REPORT_STATUS_FILL 1 Исполнена
EXECUTION_REPORT_STATUS_REJECTED 2 Отклонена
EXECUTION_REPORT_STATUS_CANCELLED 3 Отменена пользователем
EXECUTION_REPORT_STATUS_NEW 4 Новая
EXECUTION_REPORT_STATUS_PARTIALLYFILL 5 Частично исполнена

TimeInForceType

Алгоритм исполнения заявки

Name Number Description
TIME_IN_FORCE_UNSPECIFIED 0 Значение не определено см. TIME_IN_FORCE_DAY
TIME_IN_FORCE_DAY 1 Заявка действует до конца торгового дня. Значение по умолчанию
TIME_IN_FORCE_FILL_AND_KILL 2 Если в момент выставления возможно исполнение заявки(в т.ч. частичное), заявка будет исполнена или отменена сразу после выставления
TIME_IN_FORCE_FILL_OR_KILL 3 Если в момент выставления возможно полное исполнение заявки, заявка будет исполнена или отменена сразу после выставления, недоступно для срочного рынка и торговли по выходным

OrderStateStreamResponse.MarkerType

Маркер

Name Number Description
MARKER_UNKNOWN 0 не определено
MARKER_BROKER 1 сделки брокера
MARKER_CHAT 2 исполнение поручение, полученного от клиента через каналы связи
MARKER_PAPER 3 исполнение поручение, полученного от клиента в бумажной форме
MARKER_MARGIN 4 принудительное закрытие позиций
MARKER_TKBNM 5 сделки по управлению ликвидностью
MARKER_SHORT 6 сделки РЕПО по привлечению у клиентов бумаг
MARKER_SPECMM 7 перенос временно непокрытых позиций
MARKER_PO 8 none

OrderStateStreamResponse.StatusCauseInfo

Дополнительная информация по статусу заявки

Name Number Description
CAUSE_UNSPECIFIED 0 Не определено
CAUSE_CANCELLED_BY_CLIENT 15 Отменено клиентом
CAUSE_CANCELLED_BY_EXCHANGE 1 Отменено биржей
CAUSE_CANCELLED_NOT_ENOUGH_POSITION 2 Заявка не выставлена из-за нехватки средств
CAUSE_CANCELLED_BY_CLIENT_BLOCK 3 Отменено из-за блокировки клиента
CAUSE_REJECTED_BY_BROKER 4 Отклонено брокером
CAUSE_REJECTED_BY_EXCHANGE 5 Отклонено биржей
CAUSE_CANCELLED_BY_BROKER 6 Отменено брокером

PriceType

Name Number Description
PRICE_TYPE_UNSPECIFIED 0 Значение не определено
PRICE_TYPE_POINT 1 Цена в пунктах (только для фьючерсов и облигаций)
PRICE_TYPE_CURRENCY 2 Цена в валюте расчётов по инструменту

ResponseMetadata

Метадата

Field Type Description
tracking_id string Идентификатор трекинга
server_time google.protobuf.Timestamp Серверное время

ResultSubscriptionStatus

Результат подписки

Name Number Description
SUBSCRIPTION_STATUS_UNSPECIFIED 0 Статус подписки не определен.
SUBSCRIPTION_STATUS_OK 1 Подписка успешно установлена.
SUBSCRIPTION_STATUS_ERROR 13 Ошибка подписки

ErrorDetail

Описание ошибки

Field Type Description
code string Код ошибки.
message string Описание ошибки.

Про тип цены

В TINKOFF INVEST API ответ в методах для фьючерсов и облигаций может возвращаться как в валюте расчетов, так и в пунктах цены. Стоимость пункта может меняться в зависимости от курсовой разницы. Про конвертацию пунктов в валюту можно почитать тут

Нестандартные типы данных

MoneyValue

Денежная сумма в определенной валюте

Field Type Description
currency string Строковый ISO-код валюты
units int64 Целая часть суммы, может быть отрицательным числом
nano int32 Дробная часть суммы, может быть отрицательным числом

Quotation

Котировка - денежная сумма без указания валюты

Field Type Description
units int64 Целая часть суммы, может быть отрицательным числом
nano int32 Дробная часть суммы, может быть отрицательным числом

Числа с плавающей точкой(запятой)

В программировании часто используют типы данных с плавающей точкой, например float или double. Такие типы данных - компромисc между скоростью, диапазоном значений и точностью. Число с плавающей точкой имеет фиксированную относительную точность и изменяющуюся абсолютную. Поэтому мы используем тыпы данных MoneyValue и Quotation.

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

Пример

Шаг цены для инструмента = 0.1. Хотим выставить заявку по цене 256.8, что соответствует шагу цены. Если представить число 256.8 в формате типа данных float, то значение будет 256.79998779296875.

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

-256.7 в случае покупки

-256.8 в случае продажи