You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于ThreadedDepthCacheManager未遵循订单簿深度限制的咨询

问题原因与解决方案

你遇到的问题是因为ThreadedDepthCacheManager的limit参数只控制初始订单簿快照的返回深度,而非限制本地缓存的订单数量:

  • 首次获取订单簿时,确实会拿到指定的前2档买卖单,但后续Binance推送的增量更新(新挂单、撤单、订单量变化等)会全部合并到本地订单簿缓存中,不管这些订单是否处于前N位。
  • book.get_bids()返回的是本地缓存里所有存在的买单条目,自然会随着增量更新逐渐增多。

解决方法

如果需要每次都获取最新的前N档订单,得自己在回调里对订单列表做排序截取。订单簿的买单默认按价格从高到低排序,卖单按价格从低到高排序,直接取前limit个即可:

修改后的代码如下:

from binance import ThreadedDepthCacheManager
import time

def handle_book(book):
    # 截取排序后的前2档买单
    top_bids = sorted(book.get_bids(), key=lambda x: -float(x[0]))[:2]
    print(f'Top Bids {len(top_bids)}')

dcm = ThreadedDepthCacheManager()
dcm.start()

dcm.start_depth_cache(callback=handle_book, symbol='BTCUSDT', limit=2)

while True:
    time.sleep(0.1)

这样每次回调触发时,你拿到的就是实时的前2档买单,长度会稳定保持为2。

内容的提问来源于stack exchange,提问作者BOOM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 16:32:37