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

如何用binance-connector-python批量获取币安交易对实时数据?

用binance-connector-python批量获取多交易对实时数据

你之前遇到的问题根源在于:单个调用klines会产生多次HTTP请求,耗时高;而ticker_price接口本身的更新频率就是1分钟,无法满足实时需求。以下两种方案可以解决你的问题:

方案一:Websocket批量订阅(推荐,低延迟实时推送)

币安的Websocket支持同时订阅多个交易对的实时数据频道,无需主动轮询,服务器会主动推送最新数据,完全满足15秒甚至更高频率的需求。

实时成交数据订阅示例

from binance.spot import SpotWebsocketClient

def message_handler(message):
    # 处理推送的实时成交数据,包含价格、成交量等信息
    print(f"交易对: {message['s']}, 成交价格: {message['p']}, 成交量: {message['q']}")

pairs = ["BTCUSDT", "ETHUSDT", "BNBUSDT"]
# 构造订阅频道,格式为<小写交易对>@trade
channels = [f"{pair.lower()}@trade" for pair in pairs]

client = SpotWebsocketClient()
client.start()
client.subscribe(channels, message_handler)

# 保持进程运行,按需添加停止逻辑
# client.stop()

最优买卖盘口订阅示例

如果需要最新的订单簿最优买卖价(更贴近实时行情),可以订阅@bookTicker频道:

from binance.spot import SpotWebsocketClient

def message_handler(message):
    print(f"交易对: {message['s']}, 买一价: {message['b']}, 卖一价: {message['a']}")

pairs = ["BTCUSDT", "ETHUSDT", "BNBUSDT"]
channels = [f"{pair.lower()}@bookTicker" for pair in pairs]

client = SpotWebsocketClient()
client.start()
client.subscribe(channels, message_handler)

方案二:REST API批量查询最优买卖盘口(轮询方式)

如果不想使用Websocket,币安的book_ticker REST接口支持批量查询多个交易对,数据更新频率远高于ticker_price(几乎实时),且一次请求即可获取所有目标交易对的数据,避免多次调用的耗时问题。

代码示例

from binance.spot import Spot
import time

spot_client = Spot()
pairs = ["BTCUSDT", "ETHUSDT", "BNBUSDT"]

# 每15秒轮询一次
while True:
    # 批量查询多个交易对的最优买卖盘口
    response = spot_client.book_ticker(symbols=pairs)
    for item in response:
        print(f"交易对: {item['symbol']}, 买一价: {item['bidPrice']}, 卖一价: {item['askPrice']}")
    time.sleep(15)

这个接口返回的是每个交易对当前订单簿的最优买价、卖价及对应挂单量,数据更新及时,适合15秒轮询的需求,且一次请求完成批量查询,效率远高于单个调用klines。


内容的提问来源于stack exchange,提问作者José Chamorro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:27:37