Level 2 市場行情
{
"id": 1545910660740,
"type": "subscribe",
"topic": "/contractMarket/level2:XBTUSDTM",
"response": true
}
Topic:/contractMarket/level2:{symbol}
訂閱此topic,獲取Level 2買賣盤數據。
訂閱成功後,Websocket系統將向您推送增量數據的消息。
- 推送頻率: 實時推送
{
"subject": "level2",
"topic": "/contractMarket/level2:XBTUSDTM",
"type": "message",
"data": {
"sequence": 18, // 順序號,用於判斷消息連續
"change": "5000.0,sell,83" // 價格、方向、數量
"timestamp": 1551770400000
}
}
校準流程:
- 將Websocket推送的Level 2數據緩存在本地。
- 通過REST請求拉取Level 2買賣盤的快照信息。
- 回放緩存的Level 2數據流。
- 將拉取的最新Level 2數據流回放到本地緩存中,以確保最新的Level 2買賣盤數據順序號與之前的Level 2數據順序號連續無間斷。丟棄掉舊Level 2數據該順序號之前的數據,更新Level 2數據流。
- 請根據訂單數量對應的順序號更新Level 2的全部買賣盤數據。如果數量爲0,則需要將該數量對應的訂單價格從Level 2數據流中移除。如遇其他情況,正常更新買賣盤數據即可。
- 如果收到的消息的sequence與上一條消息不連續,可通過REST請求(GET /api/v1/level2/message/query), start和end間隔不超過500。 Level 2 的Change屬性是一個“price, size, sequence”的字符串值。請注意,size指的是price對應的最新size。當size爲0時,需要將其對應的price從買賣盤中刪除。
示例
通過REST請求(Get Order Book)拉取Level 2買賣盤的快照信息。獲取的快照信息如下:
Sequence:16
{
"sequence": 16,
"asks":[
["3988.59",3],
["3988.60",47],
["3988.61",32],
["3988.62",8]
],
"bids":[
["3988.51",56],
["3988.50",15],
["3988.49",100],
["3988.48",10]
]
}
如上所示,當前拉取的買賣盤快照數據如下:
價格 | 數量 | 方向 |
---|---|---|
3988.62 | 8 | 賣4 |
3988.61 | 32 | 賣3 |
3988.60 | 47 | 賣2 |
3988.59 | 3 | 賣1 |
3988.51 | 56 | 買1 |
3988.50 | 15 | 買2 |
3988.49 | 100 | 買3 |
3988.48 | 10 | 買4 |
訂閱成功後,您將收到如下變更消息:
"data": {
"sequence": 17,
"change": "3988.50,buy,44" // 價格、方向、數量
}
"data": {
"sequence": 18,
"change": "3988.61,sell,0" // 價格、方向、數量
}
當前買賣盤快照信息的順序號爲16。丟棄買賣盤數據中順序號小於等於16的數據,回放順序號爲17和18的數據,並更新買賣盤快照信息。現在,您的順序號變成了18,本地買賣盤已最新。
變更
- 將價格3988.50對應的數量變更爲44 (順序號爲17)
- 移除價格爲3988.61的數據(順序號爲8)
變更後,當前買賣盤數據爲最新數據,具體數據如下:
價格 | 數量 | 方向 |
---|---|---|
3988.62 | 8 | 賣3 |
3988.60 | 47 | 賣2 |
3988.59 | 3 | 賣1 |
3988.51 | 56 | 買1 |
3988.50 | 44 | 買2 |
3988.49 | 100 | 買3 |
3988.48 | 10 | 買4 |