如何正确在本地维护一个 orderbook 副本
1.打开 WebSocket 连接并订阅spot@public.aggre.depth.v3.api.pb@(100ms|10ms)@{symbol}
2.开始缓存接收到的增量深度推送,并记录第一条推送消息的 fromVersion
3.访问https://api.mexc.com/api/v3/depth?symbol={symbol}&limit=5000获取深度快照,并记录lastUpdateId
4.如果 lastUpdateId < 第一条推送的 fromVersion,请返回步骤 3 重新获取快照
5.在缓存的增量推送中,丢弃所有 toVersion <= lastUpdateId 的推送消息
6.取剩余推送中的第一条消息,若fromVersion > lastUpdateId + 1,则认为数据不连续,请返回步骤 3 重新初始化
7.将本地 Order Book 设置为快照数据,本地版本号设为 lastUpdateId,并按顺序应用所有剩余及后续收到的增量推送
每次更新后,将本地版本号更新为该推送的 toVersion
若任意一条推送不满足:fromVersion = 上一条 toVersion + 1,则必须重新初始化
注意: 因为深度快照对价格档位数量有限制,初始快照之外的价格档位如果没有发生数量变化,是不会出现在增量推送消息中的。所以本地的 order book 与真实的 order book 可能会有一些差异。 不过对于大多数用例,5000 的深度限制足以有效地了解市场和交易。