Skip to content

Commit 21227eb

Browse files
committed
update contracts and crates
1 parent ec87144 commit 21227eb

File tree

14 files changed

+6483
-2268
lines changed

14 files changed

+6483
-2268
lines changed

Cargo.lock

Lines changed: 335 additions & 246 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ license = "MIT"
77
repository = "https://github.com/ovr/tinkoff-invest-rust"
88

99
[dependencies]
10-
prost = "0.9"
11-
prost-types = "0.9.0"
12-
uuid = { version = "0.8", features = ["v4"] }
13-
tonic = { version = "0.6.2", features = ["tls", "compression", "tls-roots"]}
10+
prost = "0.11"
11+
prost-types = "0.11"
12+
prost-build = "0.11"
13+
protoc = "2"
14+
uuid = { version = "1", features = ["v4"] }
15+
tonic = { version = "0.8", features = ["tls", "tls-roots", "codegen", "channel"]}
1416

1517
[dev-dependencies]
1618
async-stream = "0.3"
@@ -20,8 +22,8 @@ tokio-stream = {version = "0.1", features = ["net"]}
2022
futures-util = {version = "0.3.21"}
2123

2224
[build-dependencies]
23-
tonic-build = { version = "0.6.2", features = ["rustfmt"] }
25+
tonic-build = { version = "0.8" }
2426

2527
[patch.crates-io]
2628
# Awaiting release with https://github.com/hyperium/tonic/commit/468e4221f0c496d9ffb4de24d3658b9267e884b1
27-
tonic = { git = "https://github.com/hyperium/tonic", rev = "d6c0fc112b2288a080fd0a727453b24d666e3d79" }
29+
# tonic = { git = "https://github.com/hyperium/tonic", rev = "d6c0fc112b2288a080fd0a727453b24d666e3d79" }

build.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
33
.build_client(true)
44
.build_server(false)
55
.out_dir("src")
6-
.format(true)
76
.compile(
87
&[
98
"contracts/instruments.proto",

contracts/.DS_Store

6 KB
Binary file not shown.

contracts/instruments.proto

Lines changed: 555 additions & 7 deletions
Large diffs are not rendered by default.

contracts/marketdata.proto

Lines changed: 144 additions & 25 deletions
Large diffs are not rendered by default.

contracts/operations.proto

Lines changed: 390 additions & 129 deletions
Large diffs are not rendered by default.

contracts/orders.proto

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,14 @@ service OrdersService {/* Сервис предназначен для рабо
3131

3232
//Метод получения списка активных заявок по счёту.
3333
rpc GetOrders(GetOrdersRequest) returns (GetOrdersResponse);
34+
35+
//Метод изменения выставленной заявки.
36+
rpc ReplaceOrder(ReplaceOrderRequest) returns (PostOrderResponse);
3437
}
3538

3639
//Запрос установки соединения.
3740
message TradesStreamRequest {
38-
41+
repeated string accounts = 1; //Идентификаторы счетов.
3942
}
4043

4144
//Информация о торговых поручениях.
@@ -48,25 +51,26 @@ message TradesStreamResponse {
4851

4952
//Информация об исполнении торгового поручения.
5053
message OrderTrades {
51-
string order_id = 1; //Идентификатор торгового поручения
54+
string order_id = 1; //Идентификатор торгового поручения.
5255
google.protobuf.Timestamp created_at = 2; //Дата и время создания сообщения в часовом поясе UTC.
53-
OrderDirection direction = 3; //Направление сделки (возможные значения)
54-
string figi = 4; //Figi-идентификатор инструмента
55-
repeated OrderTrade trades = 5; //Массив сделок
56+
OrderDirection direction = 3; //Направление сделки.
57+
string figi = 4; //Figi-идентификатор инструмента.
58+
repeated OrderTrade trades = 5; //Массив сделок.
59+
string account_id = 6; //Идентификатор счёта.
5660
}
5761

5862
//Информация о сделке.
5963
message OrderTrade {
6064
google.protobuf.Timestamp date_time = 1; //Дата и время совершения сделки в часовом поясе UTC.
61-
Quotation price = 2; //Цена, по которой совершена сделка
62-
int64 quantity = 3; //Количество лотов в сделке
65+
Quotation price = 2; //Цена одного инструмента, по которой совершена сделка.
66+
int64 quantity = 3; //Количество лотов в сделке.
6367
}
6468

6569
//Запрос выставления торгового поручения.
6670
message PostOrderRequest {
6771
string figi = 1; //Figi-идентификатор инструмента.
6872
int64 quantity = 2; //Количество лотов.
69-
Quotation price = 3; //Цена лота.
73+
Quotation price = 3; //Цена одного инструмента. Для получения стоимости лота требуется умножить на лотность инструмента. Игнорируется для рыночных поручений.
7074
OrderDirection direction = 4; //Направление операции.
7175
string account_id = 5; //Номер счёта.
7276
OrderType order_type = 6; //Тип заявки.
@@ -89,7 +93,7 @@ message PostOrderResponse {
8993

9094
string figi = 11; // Figi-идентификатор инструмента.
9195
OrderDirection direction = 12; //Направление сделки.
92-
MoneyValue initial_security_price = 13; //Начальная цена инструмента заявки.
96+
MoneyValue initial_security_price = 13; //Начальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
9397
OrderType order_type = 14; //Тип заявки.
9498
string message = 15; //Дополнительные данные об исполнении заявки.
9599
Quotation initial_order_price_pt = 16; //Начальная цена заявки в пунктах (для фьючерсов).
@@ -136,7 +140,7 @@ message OrderState {
136140
MoneyValue executed_commission = 10; //Фактическая комиссия по итогам исполнения заявки.
137141
string figi = 11; //Figi-идентификатор инструмента.
138142
OrderDirection direction = 12; //Направление заявки.
139-
MoneyValue initial_security_price = 13; //Начальная цена инструмента. Цена инструмента на момент выставления заявки.
143+
MoneyValue initial_security_price = 13; //Начальная цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
140144
repeated OrderStage stages = 14; //Стадии выполнения заявки.
141145
MoneyValue service_commission = 15; //Сервисная комиссия.
142146
string currency = 16; //Валюта заявки.
@@ -146,19 +150,29 @@ message OrderState {
146150

147151
//Сделки в рамках торгового поручения.
148152
message OrderStage {
149-
MoneyValue price = 1; //Цена.
153+
MoneyValue price = 1; //Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента..
150154
int64 quantity = 2; //Количество лотов.
151155
string trade_id = 3; //Идентификатор торговой операции.
152156
}
153157

154-
//Направление операции
158+
//Запрос изменения выставленной заявки.
159+
message ReplaceOrderRequest {
160+
string account_id = 1; //Номер счета.
161+
string order_id = 6; //Идентификатор заявки на бирже.
162+
string idempotency_key = 7; //Новый идентификатор запроса выставления поручения для целей идемпотентности. Максимальная длина 36 символов. Перезатирает старый ключ.
163+
int64 quantity = 11; //Количество лотов.
164+
Quotation price = 12; //Цена за 1 инструмент.
165+
PriceType price_type = 13; //Тип цены.
166+
}
167+
168+
//Направление операции.
155169
enum OrderDirection {
156170
ORDER_DIRECTION_UNSPECIFIED = 0; //Значение не указано
157171
ORDER_DIRECTION_BUY = 1; //Покупка
158172
ORDER_DIRECTION_SELL = 2; //Продажа
159173
}
160174

161-
//Тип заявки
175+
//Тип заявки.
162176
enum OrderType {
163177
ORDER_TYPE_UNSPECIFIED = 0; //Значение не указано
164178
ORDER_TYPE_LIMIT = 1; //Лимитная
@@ -173,4 +187,11 @@ enum OrderExecutionReportStatus {
173187
EXECUTION_REPORT_STATUS_CANCELLED = 3; //Отменена пользователем
174188
EXECUTION_REPORT_STATUS_NEW = 4; //Новая
175189
EXECUTION_REPORT_STATUS_PARTIALLYFILL = 5; //Частично исполнена
176-
}
190+
}
191+
192+
//Тип цены.
193+
enum PriceType {
194+
PRICE_TYPE_UNSPECIFIED = 0; //Значение не определено.
195+
PRICE_TYPE_POINT = 1; //Цена в пунктах (только для фьючерсов и облигаций).
196+
PRICE_TYPE_CURRENCY = 2; //Цена в валюте расчётов по инструменту.
197+
}

contracts/sandbox.proto

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ service SandboxService { //Сервис для работы с песочниц
2828
//Метод выставления торгового поручения в песочнице.
2929
rpc PostSandboxOrder(PostOrderRequest) returns (PostOrderResponse);
3030

31+
//Метод изменения выставленной заявки.
32+
rpc ReplaceSandboxOrder(ReplaceOrderRequest) returns (PostOrderResponse);
33+
3134
//Метод получения списка активных заявок по счёту в песочнице.
3235
rpc GetSandboxOrders(GetOrdersRequest) returns (GetOrdersResponse);
3336

@@ -43,11 +46,17 @@ service SandboxService { //Сервис для работы с песочниц
4346
//Метод получения операций в песочнице по номеру счёта.
4447
rpc GetSandboxOperations(OperationsRequest) returns (OperationsResponse);
4548

49+
//Метод получения операций в песочнице по номеру счета с пагинацией.
50+
rpc GetSandboxOperationsByCursor(GetOperationsByCursorRequest) returns (GetOperationsByCursorResponse);
51+
4652
//Метод получения портфолио в песочнице.
4753
rpc GetSandboxPortfolio(PortfolioRequest) returns (PortfolioResponse);
4854

4955
//Метод пополнения счёта в песочнице.
5056
rpc SandboxPayIn(SandboxPayInRequest) returns (SandboxPayInResponse);
57+
58+
//Метод получения доступного остатка для вывода средств в песочнице.
59+
rpc GetSandboxWithdrawLimits(WithdrawLimitsRequest) returns (WithdrawLimitsResponse);
5160
}
5261

5362
//Запрос открытия счёта в песочнице.

contracts/stoporders.proto

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,16 @@ service StopOrdersService { /* Сервис предназначен для ра
2525
rpc CancelStopOrder(CancelStopOrderRequest) returns (CancelStopOrderResponse);
2626
}
2727

28-
//Запрос выставления стоп-заявки
28+
//Запрос выставления стоп-заявки.
2929
message PostStopOrderRequest {
30-
string figi = 1; //Figi-идентификатор инструмента
31-
int64 quantity = 2; //Количество лотов
32-
Quotation price = 3; //Цена лота
33-
Quotation stop_price = 4; //Стоп-цена заявки
34-
StopOrderDirection direction = 5; //Направление операции
35-
string account_id = 6; //Номер счёта
36-
StopOrderExpirationType expiration_type = 7; //Тип экспирации заявки
37-
StopOrderType stop_order_type = 8; //Тип заявки
30+
string figi = 1; //Figi-идентификатор инструмента.
31+
int64 quantity = 2; //Количество лотов.
32+
Quotation price = 3; //Цена за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
33+
Quotation stop_price = 4; //Стоп-цена заявки за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
34+
StopOrderDirection direction = 5; //Направление операции.
35+
string account_id = 6; //Номер счёта.
36+
StopOrderExpirationType expiration_type = 7; //Тип экспирации заявки.
37+
StopOrderType stop_order_type = 8; //Тип заявки.
3838
google.protobuf.Timestamp expire_date = 9; //Дата и время окончания действия стоп-заявки в часовом поясе UTC. **Для ExpirationType = GoodTillDate заполнение обязательно**.
3939
}
4040

@@ -45,17 +45,17 @@ message PostStopOrderResponse {
4545

4646
//Запрос получения списка активных стоп-заявок.
4747
message GetStopOrdersRequest {
48-
string account_id = 1; //Идентификатор счёта клиента
48+
string account_id = 1; //Идентификатор счёта клиента.
4949
}
5050

5151
//Список активных стоп-заявок.
5252
message GetStopOrdersResponse {
53-
repeated StopOrder stop_orders = 1; //Массив стоп-заявок по счёту
53+
repeated StopOrder stop_orders = 1; //Массив стоп-заявок по счёту.
5454
}
5555

5656
//Запрос отмены выставленной стоп-заявки.
5757
message CancelStopOrderRequest {
58-
string account_id = 1; //Идентификатор счёта клиента
58+
string account_id = 1; //Идентификатор счёта клиента.
5959
string stop_order_id = 2; //Уникальный идентификатор стоп-заявки.
6060
}
6161

@@ -66,24 +66,24 @@ message CancelStopOrderResponse {
6666

6767
//Информация о стоп-заявке.
6868
message StopOrder {
69-
string stop_order_id = 1; //Идентификатор-идентификатор стоп-заявки
70-
int64 lots_requested = 2; //Запрошено лотов
71-
string figi = 3; //Figi-идентификатор инструмента
72-
StopOrderDirection direction = 4; //Направление операции
73-
string currency = 5; //Валюта стоп-заявки
74-
StopOrderType order_type = 6; //Тип стоп-заявки
69+
string stop_order_id = 1; //Идентификатор-идентификатор стоп-заявки.
70+
int64 lots_requested = 2; //Запрошено лотов.
71+
string figi = 3; //Figi-идентификатор инструмента.
72+
StopOrderDirection direction = 4; //Направление операции.
73+
string currency = 5; //Валюта стоп-заявки.
74+
StopOrderType order_type = 6; //Тип стоп-заявки.
7575
google.protobuf.Timestamp create_date = 7; //Дата и время выставления заявки в часовом поясе UTC.
7676
google.protobuf.Timestamp activation_date_time = 8; //Дата и время конвертации стоп-заявки в биржевую в часовом поясе UTC.
7777
google.protobuf.Timestamp expiration_time = 9; //Дата и время снятия заявки в часовом поясе UTC.
78-
MoneyValue price = 10; //Цена заявки
79-
MoneyValue stop_price = 11; //Цена активации стоп-заявки
78+
MoneyValue price = 10; //Цена заявки за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
79+
MoneyValue stop_price = 11; //Цена активации стоп-заявки за 1 инструмент. Для получения стоимости лота требуется умножить на лотность инструмента.
8080
}
8181

8282
//Направление сделки стоп-заявки.
8383
enum StopOrderDirection {
84-
STOP_ORDER_DIRECTION_UNSPECIFIED = 0; //Значение не указано
85-
STOP_ORDER_DIRECTION_BUY = 1; //Покупка
86-
STOP_ORDER_DIRECTION_SELL = 2; //Продажа
84+
STOP_ORDER_DIRECTION_UNSPECIFIED = 0; //Значение не указано.
85+
STOP_ORDER_DIRECTION_BUY = 1; //Покупка.
86+
STOP_ORDER_DIRECTION_SELL = 2; //Продажа.
8787
}
8888

8989
//Тип экспирации стоп-заявке.
@@ -95,8 +95,8 @@ enum StopOrderExpirationType {
9595

9696
//Тип стоп-заявки.
9797
enum StopOrderType {
98-
STOP_ORDER_TYPE_UNSPECIFIED = 0; //Значение не указано
99-
STOP_ORDER_TYPE_TAKE_PROFIT = 1; //Take-profit заявка
100-
STOP_ORDER_TYPE_STOP_LOSS = 2; //Stop-loss заявка
101-
STOP_ORDER_TYPE_STOP_LIMIT = 3; //Stop-limit заявка
98+
STOP_ORDER_TYPE_UNSPECIFIED = 0; //Значение не указано.
99+
STOP_ORDER_TYPE_TAKE_PROFIT = 1; //Take-profit заявка.
100+
STOP_ORDER_TYPE_STOP_LOSS = 2; //Stop-loss заявка.
101+
STOP_ORDER_TYPE_STOP_LIMIT = 3; //Stop-limit заявка.
102102
}

0 commit comments

Comments
 (0)