Skip to content

数据格式

WebSocket 加密货币交易推送使用 Protobuf 二进制编码传输。每条推送消息对应一个 ReportMsg 结构,客户端应先按 report_type 字段区分报告类型,再解析 new_rptcancel_rptfill_rptexpire_rpt 等具体子报告字段。

注意

交易事件推送为 Protobuf 二进制格式,非 JSON 文本。鉴权响应(code/msg 字段)为 JSON 格式。客户端接收消息时需设置允许接收二进制帧(如 skip_utf8_validation=True)。

INFO

交易事件中的数值字段(如价格、数量)均以字符串类型传输,以避免浮点精度问题。时间字段使用微秒时间戳(Unix 微秒)。解析时请按字段说明做类型处理,未知字段建议忽略以保持向前兼容。

Proto 定义

proto
message Order {
    optional string order_id      = 1;  // 订单ID
    optional uint32 side          = 2;  // 买卖方向 1:BUY  2:SELL
    optional string coin          = 3;  // 交易对的基础资产,如 BTC、ETH
    optional string currency      = 4;  // 交易对的计价资产,如 USD
    optional string price         = 5;  // 订单价格
    optional string order_qty     = 6;  // 订单数量
    optional uint32 ord_type      = 7;  // 订单类型 1:Limit 2:Market 3:TAKE_PROFIT_LIMIT 4:TAKE_PROFIT_MARKET 5:STOP_LOSS_LIMIT 6:STOP_LOSS_MARKET
    optional uint32 time_in_force = 8;  // 订单有效期 2:TIF_GTC 3:TIF_IOC
    optional int64 create_time    = 11; // 订单创建时间戳,微秒
    optional bool is_close        = 12; // 订单是否完结
    optional string cum_qty       = 13; // 累计成交数量
    optional string avg_px        = 14; // 平均成交价格
}

// 下单报告
message OrderNewRpt {
    optional int32 result    = 1; // 0 成功,非 0 失败
    optional string err_msg  = 2; // 错误信息
    optional string order_id = 3; // 订单ID
}

// 撤单报告
message OrderCancelRpt {
    optional int32 result    = 1; // 0 成功,非 0 失败
    optional string err_msg  = 2; // 错误信息
    optional string order_id = 3; // 订单ID
}

// 成交报告
message OrderFillRpt {
    optional string order_id    = 1;  // 订单ID
    optional string fill_id     = 2;  // 成交ID
    optional string last_px     = 3;  // 本次成交价格
    optional string last_qty    = 4;  // 本次成交数量
    optional string leave_qty   = 5;  // 剩余未成交数量
    optional uint32 fill_status = 6;  // 成交状态 1:部分成交 2:完全成交
    optional string last_amount = 9;  // 成交金额
    optional string biz_flow_id = 10; // 业务流水唯一ID
}

// 订单过期报告
message OrderExpireRpt {
    optional string order_id = 1; // 订单ID
}

// 交易报告
message ReportMsg {
    optional string report_id          = 1;  // 事件唯一 ID(UUID),用于客户端幂等处理
    optional Order order               = 4;  // 订单信息
    optional uint32 report_type        = 6;  // 报告类型 1:下单报告 3:撤单报告 4:成交报告 5:订单过期报告
    optional OrderNewRpt new_rpt       = 7;  // 下单结果报告
    optional OrderCancelRpt cancel_rpt = 9;  // 撤单结果报告
    optional OrderFillRpt fill_rpt     = 10; // 成交报告
    optional OrderExpireRpt expire_rpt = 11; // 订单过期报告
}

ReportMsg 顶层字段

字段类型说明
report_idstring事件唯一 ID(UUID),可用于客户端幂等处理。
orderOrder订单信息快照,详见 Order 字段
report_typeuint32报告类型,详见下方报告类型说明。
new_rptOrderNewRpt下单结果报告,仅 report_type=1 时有值,详见 OrderNewRpt 字段
cancel_rptOrderCancelRpt撤单结果报告,仅 report_type=3 时有值,详见 OrderCancelRpt 字段
fill_rptOrderFillRpt成交报告,仅 report_type=4 时有值,详见 OrderFillRpt 字段
expire_rptOrderExpireRpt订单过期报告,仅 report_type=5 时有值,详见 OrderExpireRpt 字段

报告类型

report_type 字段的可选值:

说明
1下单报告。通过 new_rpt.result 判断下单成功(0)或失败(非 0)。下单成功时 order.is_close = false,下单失败时 order.is_close = true
3撤单报告。通过 cancel_rpt.result 判断撤单成功(0)或失败(非 0)。撤单成功时 order.is_close = true
4成交报告。通过 fill_rpt.fill_status 区分部分成交(1)和完全成交(2)。完全成交时 order.is_close = true
5订单过期报告。订单因有效期到期被系统撤销。order.is_close = true

Order 字段

每条推送消息均携带订单的当前信息快照。

关键字段:is_close

is_close = true 表示订单已到达终态,不会再收到该订单的任何后续推送is_close = false 表示订单仍然活跃,后续还可能收到成交或撤单事件。

字段类型说明
order_idstring订单 ID,生命周期内不变。
sideuint32买卖方向。1=BUY,2=SELL。
coinstring交易对的基础资产,如 BTCETH
currencystring交易对的计价资产,如 USD
pricestring订单价格。市价单可能为空。
order_qtystring订单数量。
ord_typeuint32订单类型。1=Limit,2=Market,3=TAKE_PROFIT_LIMIT,4=TAKE_PROFIT_MARKET,5=STOP_LOSS_LIMIT,6=STOP_LOSS_MARKET。
time_in_forceuint32订单有效期。2=TIF_GTC,3=TIF_IOC。
create_timeint64订单创建时间,Unix 微秒时间戳。
is_closebooltrue 表示订单已到达终态,不会再推送该订单的后续事件。
cum_qtystring累计成交数量。
avg_pxstring平均成交价格。未成交时为 "0"

OrderNewRpt 字段

report_type=1 时存在。

字段类型说明
resultint320 表示下单成功,非 0 表示下单失败。
err_msgstring失败原因。result=0 时为空。
order_idstring订单 ID。

OrderCancelRpt 字段

report_type=3 时存在。

字段类型说明
resultint320 表示撤单成功,非 0 表示撤单失败。
err_msgstring失败原因。result=0 时为空。
order_idstring订单 ID。

OrderFillRpt 字段

report_type=4 时存在。

字段类型说明
order_idstring订单 ID。
fill_idstring成交 ID,可用于幂等去重。
last_pxstring本次成交价格。
last_qtystring本次成交数量。
leave_qtystring剩余未成交数量。
fill_statusuint32成交状态。1=部分成交,2=完全成交。
last_amountstring本次成交金额。
biz_flow_idstring业务流水唯一 ID。

OrderExpireRpt 字段

report_type=5 时存在。

字段类型说明
order_idstring订单 ID。

兼容性建议

  • report_type 分发处理:不同报告类型携带不同子报告字段,建议 switch/match 处理。
  • 未知字段忽略:服务端可能新增字段,客户端应保持向前兼容。
  • 未知 report_type 兼容:记录日志后跳过,避免因新增报告类型导致处理异常。
  • 数值字段以字符串解析:价格、数量等字段均为字符串,需自行转换为 Decimal 或 float 处理精度。
  • 微秒时间戳create_time 为 Unix 微秒时间戳,注意与毫秒时间戳区分。

相关文档