message LivePrice {
string stock_code = 1;
double lastprice = 2;
double volume = 3;
double high = 4;
double low = 5;
double open = 6;
double frequency = 7;
double frg_buy = 8;
double frg_sell = 9;
double average = 10;
string date = 11;
double close = 12;
double prev = 13;
double value = 14;
Change change = 15;
string order_verb = 16;
int64 quantity = 17;
bool is_index = 18;
int64 sequence_number = 19;
int64 order_book_id = 20;
int64 order_number = 21;
int64 match_number = 22;
BoardType board = 23;
Source source = 24;
SwitchReset switch_reset = 25;
string itch_incoming_time = 26;
}
message OrderBookBody {
string stock_symbol = 1;
repeated Bid bid = 2;
repeated Offer offer = 3;
Timestamp time = 4;
}
message Bid { double price = 1; double lot = 2; }
message Offer { double price = 1; double lot = 2; }
message Orderbook_v3 {
string symbol = 1;
repeated OrderBookData bid = 2;
repeated OrderBookData offer = 3;
OrderBookData total_bid = 4;
OrderBookData total_offer = 5;
Timestamp timestamp = 6;
}
message OrderBookData {
DecimalValue volume = 1;
DecimalValue price = 2;
DecimalValue frequency = 3;
}
message DecimalValue { int64 units = 1; sfixed32 nanos = 2; }
message Timestamp { int64 seconds = 1; int32 nanos = 2; }
message RunningTrade {
Timestamp websocket_time = 1;
string stock = 2;
double price = 3;
double volume = 4;
TradeType action = 5; // BUY or SELL
bool is_global = 6;
Timestamp time = 7;
Change change = 8;
uint32 trade_number = 9;
MarketBoardType market_board = 10;
double value = 11;
}
message RunningTradeBatch { repeated RunningTrade trades = 1; }
enum TradeType { BUY = 0; SELL = 1; }
enum MarketBoardType { REGULER = 0; TUNAI = 1; NEGO = 2; }
message BestBidOfferWS {
string stock_code = 1;
int64 sequence_number = 2;
BestOrder best_bid = 3;
BestOrder best_offer = 4;
string datetime = 5;
}
message BestOrder { Value price = 1; Value quantity = 2; string change_percentage = 3; }
message Value { double raw = 1; string formatted = 2; }
message OrderQueueWebsocketRequest {
string stock_code = 1;
double price = 2;
BoardType board_type = 3;
ActionType action_type = 4;
}
message OrderQueueWebsocket { repeated OrderQueueWebsocketData data = 1; }
message OrderQueueWebsocketData {
string stock_code = 1;
string time = 2;
ActionType action_type = 3;
double price = 4;
OrderStatus status = 5;
double open = 6;
double lot = 7;
BoardType board_type = 8;
ExchangeOrderNumber exchange_order_number = 9;
int64 order_number = 10;
double open_change_quantity = 11;
}
message MarketMoverRequest { MoverType mover_type = 1; repeated FilterStocksType filter_stocks = 2; }
message MarketMoverBatch { repeated MarketMoverData data = 1; }
message MarketMoverData {
string stock_code = 1;
double price = 2;
double change = 3;
double volume = 4;
double value = 5;
double frequency = 6;
}
message Watchlist { repeated WatchlistData data = 1; }
message WatchlistData { string stock_code = 1; double lastprice = 2; double change = 3; double change_percent = 4; double volume = 5; }
message IEPIEV {
string stock_code = 1;
double iep = 2;
double iev = 3;
double iep_change = 4;
int64 total_buy_lot = 5;
int64 total_sell_lot = 6;
}
message Intraday {
string stock_code = 1;
double price = 2;
double volume = 3;
double value = 4;
double frequency = 5;
int64 timestamp = 6;
}
Same fields but using DecimalValue:
message Intraday_v3 {
string stock_code = 1;
DecimalValue price = 2;
DecimalValue volume = 3;
DecimalValue value = 4;
DecimalValue frequency = 5;
int64 timestamp = 6;
}
message Orderbook {
string stock_symbol = 1;
repeated OrderbookLevel bid = 2;
repeated OrderbookLevel offer = 3;
Timestamp time = 4;
double open = 5;
double high = 6;
double low = 7;
double previous = 8;
}
message OrderbookLevel { double price = 1; double lot = 2; double volume = 3; }
message OrderBookHeader {
string stock_symbol = 1;
double open = 2;
double high = 3;
double low = 4;
double previous = 5;
Timestamp time = 6;
}
message Top20 {
repeated Top20Data gainers = 1;
repeated Top20Data losers = 2;
repeated Top20Data active = 3;
}
message Top20Data {
string stock_code = 1;
double price = 2;
double change = 3;
double change_percent = 4;
double volume = 5;
double value = 6;
}
enum BoardType { REGULAR = 0; NEGOTIATION = 1; CASH = 2; ALL = 3; }
enum ActionType { BUY = 0; SELL = 1; ALL = 2; }
enum OrderStatus { OPEN = 0; FULL_MATCH = 1; WITHDRAWN = 2; PARTIAL_MATCH = 3; AMEND = 4; ALL = 5; }
enum MoverType { TOP_GAINER = 0; TOP_LOSER = 1; MOST_ACTIVE = 2; }
enum FilterStocksType { ALL = 0; REGULER = 1; TUNAI = 2; NEGO = 3; }
enum Source { REGULER = 0; TUNAI = 1; NEGO = 2; NON_REGULER = 3; ALL_MARKET = 4; }
enum SwitchReset { NO_SWITCH = 0; SWITCH = 1; RESET = 2; }
enum Change { NO_CHANGE = 0; UP = 1; DOWN = 2; }