如何通过socket或REST获取Binance多币种指定时间区间的平均交易量
方案1:复用现有WebSocket数据本地计算(最优方案)
你已经在每2秒拉取200个交易对的烛台数据,不需要额外发起任何API请求,直接本地维护数据计算即可:
- 为每个交易对存储最近
24小时20分钟的逐根K线交易量数据,旧数据自动过期清理 - 每分钟计算时,直接截取
[当前时间-24h20min, 当前时间-20min]区间内的所有K线交易量,求和后除以区间时长/对应K线数量即可得到平均交易量 - 零额外API调用开销,性能最好,也完全满足时间区间自定义需求,仅需注意WebSocket断线重连时补全缺失时段的K线数据,避免计算误差
方案2:调用全交易对24小时行情接口(次优方案,仅需1次请求/分钟)
币安GET /api/v3/ticker/24hr接口支持不传交易对参数,单次请求即可返回所有交易对的24小时滚动统计数据,请求weight仅为40,远低于200次K线接口调用的200 weight:
- 单次请求拿到全量交易对数据后,过滤出所有USDT计价的交易对即可
- 如果你对20分钟的时间偏移要求不严格,可直接使用接口返回的24小时交易量计算平均值;如果需要严格匹配偏移窗口,可本地缓存每20分钟的24小时行情数据,做差值计算即可得到对应窗口的交易量
方案3:使用批量REST请求(降低网络开销)
如果必须要精准获取自定义时间区间的K线数据,可将200个交易对的K线请求打包为批量请求提交,币安REST API支持批量执行多个请求:
- 仅需2次HTTP请求即可完成200个交易对的数据拉取,大幅减少TCP握手、网络往返带来的性能损耗,总请求weight和单请求一致仍为200,不会额外占用限流额度
内容的提问来源于stack exchange,提问作者Whirlwind
相关产品推荐
相关产品推荐

