跳到主要内容

市场深度订阅

信息
  • 该接口推送延迟为:200ms

市场深度订阅

  • 方法: depth.subscribe
  • 参数:
参数名是否必须类型说明
market_list[n][0]truestringmarket,市场名称
market_list[n][1]trueintlimit,推送深度条数,[5, 10, 20, 50]中的其中一个
market_list[n][2]truestringinterval,合并粒度,["0", "0.00000000001", "0.000000000001", "0.0000000001", "0.000000001", "0.00000001", "0.0000001", "0.000001", "0.00001", "0.0001", "0.001", "0.01", "0.1", "1", "10", "100", "1000"]中的一个
market_list[n][3]trueboolif_full,是否为全量订阅
  • 订阅示例
{
"method": "depth.subscribe",
"params": {"market_list": [
["BTCUSDT", 10, "0", true],
["ETHUSDT", 10, "0", false]
]
},
"id": 1
}

深度推送

  • 方法: depth.update
  • 参数:
参数名类型说明
marketstring市场名
is_fullbooltrue为全量推送,false为增量推送
depthobject深度数据
depth.asksarray卖方数据
asks[n][0]string卖方价格
asks[n][1]string卖方数量,在增量推送时,该值为0表示需要删除该价格的深度
depth.bidsarray买方数据
bids[n][0]string买方价格
bids[n][1]string买方数量,在增量推送时,该值为0表示需要删除该价格的深度
depth.laststring最新价格
depth.updated_atint时间戳,毫秒
depth.checksumstring数据校验和
提示

关于增量与全量深度推送:

  1. 增量推送:每次推送上个推送时点到当前时点更新的深度数据。每200毫秒推送一次,若无深度更新,则不推送。
  2. 全量推送:每次推送完整的深度数据。每200毫秒推送一次,若无深度更新,则不推送。
  3. 如果订阅了多个市场,通过market参数来区分不同市场的推送消息。
  4. 市场深度每隔1分钟推送一次全量数据。

关于深度校验和(checksum):

  1. checksum 校验和是全深度数据的有符号的32位整数,用于验证深度数据的正确性。
  2. 构造校验和字符串:bid1_price:bid1_amount:bid2_price:bid2_amount:ask1_price:ask1_amout:…(如果沒有出价,则校验和字符串是ask1_price:ask1_amount:ask2_price:ask2_amount:…)
  3. 将校验和字符串使用crc32算法编码

如何结合全量及增量推送在api客户端恢复完整深度数据及进行深度数据校验,请参考代码示例

  • 推送示例
{
"method": "depth.update",
"data": {
"market": "BTCUSDT",
"is_full": true,
"depth": {
"asks": [
[
"30740.00",
"0.31763545"
],
[
"30769.00",
"1.45155000"
]
],
"bids": [
[
"30736.00",
"0.04857373"
],
[
"30733.00",
"0.84696320"
],
[
"30725.00",
"0.12563353"
],
[
"30422.00",
"0"
]
],
"last": "30746.28",
"updated_at": 1689152421692,
"checksum": 2578768879
}
},
"id": null
}

取消市场深度订阅

  • 方法: depth.unsubscribe
  • 参数:
参数名是否必须类型说明
market_listtrue[]string市场名列表,如果为空列表则全部取消订阅
  • 取消订阅示例:

// unsubscribe单个市场的深度订阅
{
"method": "depth.unsubscribe",
"params": {"market_list": ["BTCUSDT"]},
"id": 1
}

// unsubscribe多个市场的深度订阅
{
"method": "depth.unsubscribe",
"params": {"market_list": ["BTCUSDT", "ETHUSDT"]},
"id": 1
}

// unsubscribe所有市场的深度订阅
{
"method": "depth.unsubscribe",
"params": {"market_list": []},
"id": 1
}