bbgo_origin/pkg/pb/bbgo.proto
2022-03-15 18:43:57 +08:00

257 lines
5.3 KiB
Protocol Buffer

syntax = "proto3";
package pb;
option go_package = "../pb";
service BBGO {
// should support streaming
rpc Subcribe(SubscribeRequest) returns (stream SubscribeResponse) {}
rpc SubcribeUserData(Empty) returns (stream SubscribeResponse) {}
// request-response
rpc SubmitOrder(SubmitOrderRequest) returns (SubmitOrderResponse) {}
rpc CancelOrder(CancelOrderRequest) returns (CancelOrderResponse) {}
rpc QueryOrder(QueryOrderRequest) returns (QueryOrderResponse) {}
rpc QueryOrders(QueryOrdersRequest) returns (QueryOrdersResponse) {}
rpc QueryTrades(QueryTradesRequest) returns (QueryTradesResponse) {}
rpc QueryKLines(QueryKLinesRequest) returns (QueryKLinesResponse) {}
}
enum Event {
ERROR = 0;
SUBSCRIBED = 1;
UNSUBSCRIBED = 2;
SNAPSHOT = 3;
UPDATE = 4;
AUTHENTICATED = 5;
ORDER_SNAPSHOT = 6;
ORDER_UPDATE = 7;
TRADE_SNAPSHOT = 8;
TRADE_UPDATE = 9;
ACCOUNT_SNAPSHOT = 10;
ACCOUNT_UPDATE = 11;
}
enum Channel {
BOOK = 0;
TRADE = 1;
TICKER = 2;
USER = 3;
}
enum Side {
BUY = 0;
SELL = 1;
}
enum OrderType {
MARKET = 0;
LIMIT = 1;
STOP_MARKET = 2;
STOP_LIMIT = 3;
POST_ONLY = 4;
IOC_LIMIT = 5;
}
message Empty {}
message Error {
int64 error_code = 1;
string error_message = 2;
}
message SubscribeRequest {
repeated Subscription subscriptions = 1;
}
message Subscription {
string exchange = 1;
Channel channel = 2; // book, trade, ticker
string symbol = 3;
int64 depth = 4;
}
message SubscribeResponse {
string exchange = 1;
string symbol = 2;
Channel channel = 3; // book, trade, ticker, user
Event event = 4; // snapshot, update, order_snapshot, ...
Depth depth = 5;
repeated Trade trades = 6;
Ticker ticker = 7;
repeated Order orders = 8;
repeated Balance balances = 9;
int64 subscribed_at = 10;
Error error = 11;
}
message Depth {
string exchange = 1;
string symbol = 2;
repeated PriceVolume asks = 3;
repeated PriceVolume bids = 4;
}
message PriceVolume {
int64 price = 1;
int64 volume = 2;
}
// https://maicoin.github.io/max-websocket-docs/#/private_channels?id=trade-response
// https://maicoin.github.io/max-websocket-docs/#/public_trade?id=success-response
message Trade {
string exchange = 1;
string symbol = 2;
string id = 3;
double price = 4;
double volume = 5;
int64 created_at = 6;
Side side = 7;
double fee = 8;
string fee_currency = 9;
bool maker = 10;
string trend = 11;
}
// https://maicoin.github.io/max-websocket-docs/#/public_ticker?id=success-response
message Ticker {
string exchange = 1;
string symbol = 2;
double open = 3;
double high = 4;
double low = 5;
double close = 6;
double volume = 7;
}
// https://maicoin.github.io/max-websocket-docs/#/private_channels?id=snapshot
message Order {
string exchange = 1;
string symbol = 2;
string id = 3;
Side side = 4;
OrderType order_type = 5;
double price = 6;
double stop_price = 7;
double avg_price = 8;
string status = 9;
int64 created_at = 10;
double quantity = 11;
double executed_volume = 12;
int64 trades_count = 13;
string client_order_id = 14;
int64 group_id = 15;
}
message SubmitOrder {
string exchange = 1;
string symbol = 2;
Side side = 3;
double quantity = 4;
double price = 5;
double stop_price = 6;
OrderType order_type = 7;
string client_order_id = 8;
int64 group_id = 9;
}
// https://maicoin.github.io/max-websocket-docs/#/private_channels?id=account-response
message Balance {
string exchange = 1;
string currency = 2;
double available = 3;
double locked = 4;
}
message SubmitOrderRequest {
SubmitOrder submit_order = 1;
}
message SubmitOrderResponse {
Order order = 1;
Error error = 2;
}
message CancelOrderRequest {
string exchange = 1;
string id = 2;
string client_order_id = 3;
}
message CancelOrderResponse {
Order order = 1;
Error error = 2;
}
message QueryOrderRequest {
string exchange = 1;
string id = 2;
string client_order_id = 3;
}
message QueryOrderResponse {
Order order = 1;
Error error = 2;
}
message QueryOrdersRequest {
string exchange = 1;
string symbol = 2;
repeated string state = 3;
string order_by = 4;
int64 group_id = 5;
bool pagination = 6;
int64 page = 7;
int64 limit = 8;
int64 offset = 9;
}
message QueryOrdersResponse {
repeated Order orders = 1;
Error error = 2;
}
message QueryTradesRequest {
string exchange = 1;
string symbol = 2;
int64 timestamp = 3;
int64 from = 4;
int64 to = 5;
string order_by = 6;
bool pagination = 7;
int64 page = 8;
int64 limit = 9;
int64 offset = 10;
}
message QueryTradesResponse {
repeated Trade trades = 1;
Error error = 2;
}
message QueryKLinesRequest {
string exchange = 1;
string symbol = 2;
int64 limit = 3;
int64 interval = 4; // time period of K line in minute
int64 timestamp = 5;
}
message QueryKLinesResponse {
repeated KLine klines = 1;
Error error = 2;
}
message KLine {
string exchange = 1;
string symbol = 2;
int64 timestamp = 3;
double open = 4;
double high = 5;
double low = 6;
double close = 7;
double volume = 8;
double quote_volume = 9;
}