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