Skip to content

数据格式

WebSocket 加密货币交易推送使用 Protobuf 二进制编码传输。每条推送消息对应一个交易事件,反序列化后对应下方描述的 CryptoTradeEvent 结构,客户端应先按 event_type 字段区分事件类型,再解析 order_infofill_infos 等具体字段。

注意

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

INFO

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

消息结构

每条推送消息的顶层为一个 CryptoTradeEvent 对象:

json
{
  "event_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "event_type": "EVENT_FILL",
  "event_time_us": 1751433600000000,
  "user_info": {
    "uid": 123456789,
    "account_id": 987654321098765432
  },
  "order_info": {
    "order_id": "FTHC2989880641155745280T",
    "version": 2,
    "symbol_pair": {
      "symbol": "BTCUSD",
      "base": "BTC",
      "quote": "USD"
    },
    "side": "BUY",
    "order_qty": "0.1",
    "price": "29500",
    "order_amount": "2950",
    "cum_qty": "0.06",
    "avg_px": "29498.50",
    "fill_amount": "1769.91",
    "ord_type": "LIMIT",
    "time_in_force": "TIF_GTC",
    "create_time": 1751433500000000,
    "update_time": 1751433600000000,
    "ord_status": "PARTIAL_FILLED",
    "order_show_id": "C2989880641155745280",
    "is_close": false,
    "trigger_price": "",
    "trigger_time": 0,
    "cash_order_qty": ""
  },
  "fill_infos": [
    {
      "order_id": "FTHC2989880641155745280T",
      "fill_id": "FILL001",
      "quantity": "0.06",
      "price": "29498.50",
      "amount": "1769.91",
      "fill_time": 1751433600000000
    }
  ]
}

CryptoTradeEvent 顶层字段

字段类型说明
event_idstring事件唯一 ID(UUID),可用于客户端幂等处理。
event_typestring事件类型,详见下方事件类型说明。
event_time_usinteger事件发生时间,Unix 微秒时间戳。
user_infoobject用户信息,详见 user_info 字段
order_infoobject订单快照,反映事件发生时刻的最新订单状态,详见 order_info 字段
fill_infosobject[]成交信息列表,详见 fill_infos 字段。仅在 EVENT_FILL 事件中有值,其他事件该字段为空数组。

事件类型

event_type 字段的可选值:

说明
EVENT_NEW下单成功事件。订单已被系统受理,进入委托队列。order_info.is_close = false
EVENT_NEW_REJECTED下单失败事件。订单被系统拒绝。order_info.is_close = true
EVENT_FILL成交事件。fill_infos 包含本次成交明细。通过 order_info.ord_status 区分部分成交(PARTIAL_FILLED)和全部成交(FILLED)。全部成交时 order_info.is_close = true
EVENT_CANCELED撤单成功事件。订单已被撤销。order_info.is_close = true
EVENT_EXPIRED订单过期事件。订单因有效期到期被系统撤销。order_info.is_close = true

user_info 字段

字段类型说明
uidinteger用户 ID(nnid)。
account_idinteger加密货币账户 ID(uint64)。如果同一用户持有多个加密货币账户,可通过该字段区分事件来源账户。

order_info 字段

每条推送消息均携带订单的当前快照,反映事件发生时刻的最新订单状态。

关键字段:is_close

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

字段类型说明
order_idstring订单号,生命周期内不变。
versionuint32订单版本号。
symbol_pairSymbolPair交易对。
sideside买卖方向。
order_qtystring订单委托数量。
pricestring委托价格。市价单可能为空。
order_amountstring委托金额。
cum_qtystring截至本事件时刻的累计已成交数量
avg_pxstring截至本事件时刻的成交均价。未成交时为 "0"
fill_amountstring截至本事件时刻的累计成交金额
ord_typeord_type订单类型。
time_in_forcetime_in_force订单有效期。
create_timeint64订单创建时间,Unix 微秒时间戳。
update_timeint64订单最后更新时间,Unix 微秒时间戳。
ord_statusord_status订单当前状态。
order_show_idstring客户端展示用订单 ID。
is_closebooltrue 表示订单已到达终态,不会再推送该订单的后续事件。见上方提示。
trigger_pricestring条件单触发价,非条件单为空字符串。
trigger_timeint64条件单触发时间(Unix 微秒),未触发为 0
cash_order_qtystring金额下单时的委托金额,数量下单时为空字符串。

fill_infos 字段

仅在 EVENT_FILL 事件中包含有效数据,其他事件类型该字段为空数组。

字段类型说明
order_idstring关联的订单 ID。
fill_idstring成交 ID,可用于幂等去重。
quantitystring本次成交数量。
pricestring本次成交价格。
amountstring本次成交金额(price × quantity)。
fill_timeint64成交时间,Unix 微秒时间戳。

兼容性建议

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

相关文档