如何正确在本地维护一个orderbook副本
- 订阅 wss://dstream.binance.com/stream?streams=btcusd_200925@depth
- 开始缓存收到的更新。同一个价位,后收到的更新覆盖前面的。
- 访问Rest接口 **https://dapi.binance.com/dapi/v1/depth?symbol=BTCUSD_200925&limit=1000**获得一个1000档的深度快照
- 将目前缓存到的信息中
u
< 步骤3中获取到的快照中的lastUpdateId
的部分丢弃(丢弃更早的信息,已经过期)。
- 将深度快照中的内容更新到本地orderbook副本中,并从websocket接收到的第一个
U
<=
lastUpdateId**且**
u >
= lastUpdateId
的event开始继续更新本地副本。
- 每一个新event的
pu
应该等于上一个event的u
,否则可能出现了丢包,请从step3重新进行初始化。
- 每一个event中的挂单量代表这个价格目前的挂单量绝对值,而不是相对变化。
- 如果某个价格对应的挂单量为0,表示该价位的挂单已经撤单或者被吃,应该移除这个价位。