gtat-tech-career-kickstarte.../proto/order_book.proto

82 lines
1.8 KiB
Protocol Buffer

syntax = "proto3";
package optiver.exchange.orderbook;
import "common.proto";
// ------------------------------------------------------------
// Messages sent to all clients upon logging in with the current
// state of the order book, then upon any changes
// ------------------------------------------------------------
message OnOrderBookCreated {
int64 order_book_id = 1;
double tick_size = 2;
int64 created_timestamp = 3;
}
message OnOrderInserted {
int64 order_id = 1;
int64 order_book_id = 2;
int64 timestamp = 3;
Side side = 4;
double price = 5;
int32 quantity = 6;
string username = 7;
repeated int64 trade_ids = 10;
}
message OnOrderCancelled {
int64 order_id = 1;
int64 cancellation_timestamp = 2;
}
message OnTrade {
int64 trade_id = 1;
int64 order_book_id = 2;
int64 timestamp = 3;
int64 buy_order_id = 4;
int64 sell_order_id = 5;
double price = 6;
int32 quantity = 7;
Side aggressor_side = 8;
}
// ------------------------------------------------------------
// Requests accepted by this service
// ------------------------------------------------------------
message InsertOrderRequest {
int64 request_id = 1;
int64 order_book_id = 2;
Side side = 3;
double price = 4;
int32 quantity = 5;
string username = 6;
// TODO start with LIMIT order type only
}
message InsertOrderResponse {
int64 request_id = 1;
string error_message = 2;
int64 order_id = 3;
int64 timestamp = 4;
repeated int64 trade_ids = 5;
int32 traded_quantity = 6;
}
message CancelOrderRequest {
int64 request_id = 1;
int64 order_book_id = 2;
int64 order_id = 3;
}
message CancelOrderResponse {
int64 request_id = 1;
string error_message = 2;
int64 cancellation_timestamp = 3;
int32 remaining_quantity = 4;
}