跳到主要内容

增量深度订单簿维护机制

  1. 获取全量深度快照(初始化) 接口:GET https://api.mexc.com/api/v1/contract/depth/{symbol}?limit=1000 保存 version = localLastVersion

  2. 订阅 WebSocket 深度信息

  3. 订阅 push.depth 收到 push.depth 更新:

  • 如果消息 version > localLastVersion,同一个价位用后收到的更新覆盖前面的(可先缓存)
  • 正常情况下若 version == localLastVersion + 1,直接应用更新
  1. 丢包恢复:获取最新深度 commits 接口:GET https://api.mexc.com/api/v1/contract/depth_commits/{symbol}/1000
  • 获取最新 1000 条深度增量快照(按 version 升序)
  1. 应用 commits 并清理缓存
  • 遍历 commits:跳过 version <= localLastVersion
  • version == localLastVersion + 1 开始,依次应用每个 commit 的更新(quantity > 0 更新/插入;==0 删除价位)
  • 更新 localLastVersion 为最后一个应用的 version
  • 若缓存中有 WS 更新,可一并覆盖应用(更高 version 优先)
  1. 继续实时更新
  • 从 WS 接收的 event 继续更新本地订单簿
  • 每个新 event 的 version 应恰好等于上一个 version + 1
  • 若不连续(跳号或乱序):可能丢包 → 重新从步骤 4 开始恢复(或回步骤 1 全量初始化)
  1. 更新规则
  • event 中的挂单量为绝对值(当前总量,非相对变化)
  • 如果 quantity == 0:表示该价位已撤单或被吃,应移除该价位