api.java-sdk-grpc-contract.1.6.source-code.orders.proto Maven / Gradle / Ivy
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 "common.proto";
import "google/protobuf/timestamp.proto";
service OrdersStreamService {
//Stream сделок пользователя
rpc TradesStream(TradesStreamRequest) returns (stream TradesStreamResponse);
}
service OrdersService {/* Сервис предназначен для работы с торговыми поручениями: **1**.
выставление; **2**. отмена; **3**. получение статуса; **4**.
расчёт полной стоимости; **5**. получение списка заявок.*/
//Метод выставления заявки.
rpc PostOrder(PostOrderRequest) returns (PostOrderResponse);
//Метод отмены биржевой заявки.
rpc CancelOrder(CancelOrderRequest) returns (CancelOrderResponse);
//Метод получения статуса торгового поручения.
rpc GetOrderState(GetOrderStateRequest) returns (OrderState);
//Метод получения списка активных заявок по счёту.
rpc GetOrders(GetOrdersRequest) returns (GetOrdersResponse);
//Метод изменения выставленной заявки.
rpc ReplaceOrder(ReplaceOrderRequest) returns (PostOrderResponse);
//расчет количества доступных для покупки/продажи лотов
rpc GetMaxLots(GetMaxLotsRequest) returns (GetMaxLotsResponse);
}
//Запрос установки соединения.
message TradesStreamRequest {
repeated string accounts = 1; //Идентификаторы счетов.
}
//Информация о торговых поручениях.
message TradesStreamResponse {
oneof payload {
OrderTrades order_trades = 1; //Информация об исполнении торгового поручения.
Ping ping = 2; //Проверка активности стрима.
}
}
//Информация об исполнении торгового поручения.
message OrderTrades {
string order_id = 1; //Идентификатор торгового поручения.
google.protobuf.Timestamp created_at = 2; //Дата и время создания сообщения в часовом поясе UTC.
OrderDirection direction = 3; //Направление сделки.
string figi = 4; //Figi-идентификатор инструмента.
repeated OrderTrade trades = 5; //Массив сделок.
string account_id = 6; //Идентификатор счёта.
string instrument_uid = 7; //UID идентификатор инструмента.
}
//Информация о сделке.
message OrderTrade {
google.protobuf.Timestamp date_time = 1; //Дата и время совершения сделки в часовом поясе UTC.
Quotation price = 2; //Цена за 1 инструмент, по которой совершена сделка.
int64 quantity = 3; //Количество штук в сделке.
string trade_id = 4; //Идентификатор сделки.
}
//Запрос выставления торгового поручения.
message PostOrderRequest {
string figi = 1 [ deprecated = true ]; //Deprecated Figi-идентификатор инструмента. Необходимо использовать instrument_id.
int64 quantity = 2; //Количество лотов.
Quotation price = 3; //Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента. Игнорируется для рыночных поручений.
OrderDirection direction = 4; //Направление операции.
string account_id = 5; //Номер счёта.
OrderType order_type = 6; //Тип заявки.
string order_id = 7; //Идентификатор запроса выставления поручения для целей идемпотентности в формате UID. Максимальная длина 36 символов.
string instrument_id = 8; //Идентификатор инструмента, принимает значения Figi или Instrument_uid.
TimeInForceType time_in_force = 9; //Алгоритм исполнения поручения
}
//Прочитайте про ключ идемпотентности [здесь](https://russianinvestments.github.io/investAPI/head-orders/)
//Информация о выставлении поручения.
message PostOrderResponse {
string order_id = 1; //Биржевой идентификатор заявки.
OrderExecutionReportStatus execution_report_status = 2; //Текущий статус заявки.
int64 lots_requested = 3; //Запрошено лотов.
int64 lots_executed = 4; //Исполнено лотов.
MoneyValue initial_order_price = 5; //Начальная цена заявки. Произведение количества запрошенных лотов на цену.
MoneyValue executed_order_price = 6; //Исполненная средняя цена одного инструмента в заявке.
MoneyValue total_order_amount = 7; //Итоговая стоимость заявки, включающая все комиссии.
MoneyValue initial_commission = 8; //Начальная комиссия. Комиссия рассчитанная при выставлении заявки.
MoneyValue executed_commission = 9; //Фактическая комиссия по итогам исполнения заявки.
MoneyValue aci_value = 10; //Значение НКД (накопленного купонного дохода) на дату. Подробнее: [НКД при выставлении торговых поручений](https://russianinvestments.github.io/investAPI/head-orders#coupon)
string figi = 11; // Figi-идентификатор инструмента.
OrderDirection direction = 12; //Направление сделки.
MoneyValue initial_security_price = 13; //Начальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
OrderType order_type = 14; //Тип заявки.
string message = 15; //Дополнительные данные об исполнении заявки.
Quotation initial_order_price_pt = 16; //Начальная цена заявки в пунктах (для фьючерсов).
string instrument_uid = 17; //UID идентификатор инструмента.
string order_request_id = 20; //Идентификатор ключа идемпотентности, переданный клиентом, в формате UID. Максимальная длина 36 символов.
}
//Запрос отмены торгового поручения.
message CancelOrderRequest {
string account_id = 1; //Номер счёта.
string order_id = 2; //Идентификатор заявки.
}
//Результат отмены торгового поручения.
message CancelOrderResponse {
google.protobuf.Timestamp time = 1; //Дата и время отмены заявки в часовом поясе UTC.
}
//Запрос получения статуса торгового поручения.
message GetOrderStateRequest {
string account_id = 1; //Номер счёта.
string order_id = 2; //Идентификатор заявки.
}
//Запрос получения списка активных торговых поручений.
message GetOrdersRequest {
string account_id = 1; //Номер счёта.
}
//Список активных торговых поручений.
message GetOrdersResponse {
repeated OrderState orders = 1; //Массив активных заявок.
}
//Информация о торговом поручении.
message OrderState {
string order_id = 1; //Биржевой идентификатор заявки.
OrderExecutionReportStatus execution_report_status = 2; //Текущий статус заявки.
int64 lots_requested = 3; //Запрошено лотов.
int64 lots_executed = 4; //Исполнено лотов.
MoneyValue initial_order_price = 5; //Начальная цена заявки. Произведение количества запрошенных лотов на цену.
MoneyValue executed_order_price = 6; //Исполненная цена заявки. Произведение средней цены покупки на количество лотов.
MoneyValue total_order_amount = 7; //Итоговая стоимость заявки, включающая все комиссии.
MoneyValue average_position_price = 8; //Средняя цена позиции по сделке.
MoneyValue initial_commission = 9; //Начальная комиссия. Комиссия, рассчитанная на момент подачи заявки.
MoneyValue executed_commission = 10; //Фактическая комиссия по итогам исполнения заявки.
string figi = 11; //Figi-идентификатор инструмента.
OrderDirection direction = 12; //Направление заявки.
MoneyValue initial_security_price = 13; //Начальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
repeated OrderStage stages = 14; //Стадии выполнения заявки.
MoneyValue service_commission = 15; //Сервисная комиссия.
string currency = 16; //Валюта заявки.
OrderType order_type = 17; //Тип заявки.
google.protobuf.Timestamp order_date = 18; //Дата и время выставления заявки в часовом поясе UTC.
string instrument_uid = 19; //UID идентификатор инструмента.
string order_request_id = 20; //Идентификатор ключа идемпотентности, переданный клиентом, в формате UID. Максимальная длина 36 символов.
}
//Сделки в рамках торгового поручения.
message OrderStage {
MoneyValue price = 1; //Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
int64 quantity = 2; //Количество лотов.
string trade_id = 3; //Идентификатор сделки.
}
//Запрос изменения выставленной заявки.
message ReplaceOrderRequest {
string account_id = 1; //Номер счета.
string order_id = 6; //Идентификатор заявки на бирже.
string idempotency_key = 7; //Новый идентификатор запроса выставления поручения для целей идемпотентности. Максимальная длина 36 символов. Перезатирает старый ключ.
int64 quantity = 11; //Количество лотов.
Quotation price = 12; //Цена за 1 инструмент.
PriceType price_type = 13; //Тип цены.
}
//Запрос на расчет количества доступных для покупки/продажи лотов
message GetMaxLotsRequest {
string account_id = 1; //Номер счета
string instrument_id = 2; //Идентификатор инструмента, принимает значения Figi или instrument_uid
Quotation price = 3; //Цена инструмента
}
//Результат количество доступных для покупки/продажи лотов
message GetMaxLotsResponse {
string currency = 1; //Валюта инструмента
BuyLimitsView buy_limits = 2; //Лимиты для покупок на собственные деньги
BuyLimitsView buy_margin_limits = 3; //Лимиты для покупок с учетом маржинального кредитования
SellLimitsView sell_limits = 4; //Лимиты для продаж по собственной позиции
SellLimitsView sell_margin_limits = 5; //Лимиты для продаж с учетом маржинального кредитования
message BuyLimitsView {
Quotation buy_money_amount = 1; //Количество доступной валюты для покупки
int64 buy_max_lots = 2; //Максимальное доступное количество лотов для покупки
int64 buy_max_market_lots = 3; //Максимальное доступное количество лотов для покупки для заявки по рыночной цене на текущий момент
}
message SellLimitsView {
int64 sell_max_lots = 1; //Максимальное доступное количество лотов для продажи
}
}
//Направление операции.
enum OrderDirection {
ORDER_DIRECTION_UNSPECIFIED = 0; //Значение не указано
ORDER_DIRECTION_BUY = 1; //Покупка
ORDER_DIRECTION_SELL = 2; //Продажа
}
//Тип заявки.
enum OrderType {
ORDER_TYPE_UNSPECIFIED = 0; //Значение не указано
ORDER_TYPE_LIMIT = 1; //Лимитная
ORDER_TYPE_MARKET = 2; //Рыночная
ORDER_TYPE_BESTPRICE = 3; //Лучшая цена
}
//Текущий статус заявки (поручения)
enum OrderExecutionReportStatus {
EXECUTION_REPORT_STATUS_UNSPECIFIED = 0;
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; //Частично исполнена
}
enum TimeInForceType {
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; //заявка исполнения полностью или уничтожена
}