Level 2 市場行情

  {
    "id": 1545910660740,                          
    "type": "subscribe",
    "topic": "/contractMarket/level2:XBTUSDM",
    "response": true                              
  }

Topic:/contractMarket/level2:{symbol}

訂閱此topic,獲取Level 2買賣盤數據。

訂閱成功後,Websocket系統將向您推送增量數據的消息。

  {
    "subject": "level2",
    "topic": "/contractMarket/level2:XBTUSDM",
    "type": "message",
    "data": {
      "sequence": 18,					// 順序號,用於判斷消息連續
      "change": "5000.0,sell,83"		// 價格、方向、數量
      "timestamp": 1551770400000 
      
      }
  }

校準流程:

  1. 將Websocket推送的Level 2數據緩存在本地。
  2. 通過REST請求拉取Level 2買賣盤的快照信息。
  3. 回放緩存的Level 2數據流。
  4. 將拉取的最新Level 2數據流回放到本地緩存中,以確保最新的Level 2買賣盤數據順序號與之前的Level 2數據順序號連續無間斷。丟棄掉舊Level 2數據該順序號之前的數據,更新Level 2數據流。
  5. 請根據訂單數量對應的順序號更新Level 2的全部買賣盤數據。如果數量爲0,則需要將該數量對應的訂單價格從Level 2數據流中移除。如遇其他情況,正常更新買賣盤數據即可。
  6. 如果收到的消息的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