syntax = "proto3"; import "api/pub.proto"; option go_package = "./pb"; // 订阅/查询/存储,交易所k线图/热度/深度等基础数据指标 service ExchangeService { // 订阅实时K线 rpc SubscribeKline(stream ReqStreamSubscribeKline) returns (stream RspStreamSubscribeKline); // 获取支持的交易所列表 rpc Exchanges(ReqExchanges) returns (RspExchanges); // 获取交易所交易产品状态 rpc ExchangeInstanceState(ReqExchangeInstanceState) returns (RspExchangeInstanceState); // 查询SeriesRange时间范围 rpc SeriesRange(ReqSeriesRange) returns (RspSeriesRange); // 查询历史k线 rpc HistoryKline(ReqHistoryKline) returns (RspHistoryKline); // 查询历史k线(流式返回) rpc HistoryKlineStream(ReqHistoryKlineStream) returns (stream RspHistoryKlineStream); } message ReqStreamSubscribeKline { SubscribeType sub_type = 1; repeated ExchangeType exchanges = 2; // 交易所 repeated string inst_ids = 3; repeated string intervals = 4; bool only_confirm = 5; // 只要confirm的k线 } message RspStreamSubscribeKline { StreamKline kline = 1; } message StreamKline { repeated Kline klines = 2; ExchangeType exchange = 3; // 交易所 string inst_id = 4; // 交易产品id int64 stream_id = 5; // subscribe stream id } message ReqExchanges { } message RspExchanges { repeated ExchangeType exchanges = 1; } message ReqExchangeInstanceState { bool all_exchange = 1; // 所有交易所 bool all_insts = 2; // 所有交易产品 bool all_status = 3; // 所有状态 repeated ExchangeType exchanges = 4; // 指定交易所 repeated string insts = 5; // 指定交易产品 repeated int32 status = 6; // 指定交易产品状态 } message RspExchangeInstanceState { repeated TradeInstanceState insts_state = 1; // 交易产品列表 } message ReqSeriesRange { SeriesRange series = 1; } message RspSeriesRange { int64 after = 1; int64 before = 2; int64 total = 3; } message ReqHistoryKline { SeriesRange series = 1; } message RspHistoryKline { ExchangeType exchange = 1; // 交易所 string inst_id = 2; string interval = 3; bool live = 4; // 第一根是否实时k线 // bool next = 5; // 是否有更多历史数据: 为true时, 可以用最后一根k线的ts作为before继续请求 repeated Kline klines = 9; } message ReqHistoryKlineStream { SeriesRange series = 1; } message RspHistoryKlineStream { repeated Kline klines = 2; }