Stockbit Research research Playground @hansputera

Protobuf Message Schemas & Enums

LivePrice

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;
}

OrderBookBody (v1)

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; }

Orderbook (v3 — DecimalValue)

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; }

RunningTrade

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; }

BestBidOfferWS

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; }

OrderQueueWebsocket

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;
}

MarketMover

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;
}

Watchlist

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; }

IEPIEV

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;
}

Intraday

message Intraday {
    string stock_code = 1;
    double price = 2;
    double volume = 3;
    double value = 4;
    double frequency = 5;
    int64 timestamp = 6;
}

Intraday_v3

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;
}

Orderbook (v1)

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; }

OrderBookHeader

message OrderBookHeader {
    string stock_symbol = 1;
    double open = 2;
    double high = 3;
    double low = 4;
    double previous = 5;
    Timestamp time = 6;
}

Top20

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;
}

Enums

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; }