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

如何通过Binance WebSocket获取多种加密货币实时数据

实现多币种Binance WebSocket实时1分钟K线数据获取

修改思路

  • Binance WebSocket支持合并流:通过一个WebSocket连接同时订阅多个币种的流,只需在streams参数中用斜杠/分隔各币种的流路径,格式为{币种小写}@kline_1m。
  • 修复原代码缩进错误:原代码中on_error、on_close、on_open嵌套在on_message函数内,会导致回调无法正常触发,需将这些函数放到全局作用域。
  • 动态生成流地址:利用已定义的pairs列表,自动拼接多币种的流路径,避免手动写死URL。

修改后的完整代码

import websocket
import json

pairs = ['fxsusdt', 'bnbusdt', 'btcusdt']
# 动态生成多币种合并流地址
stream_paths = [f"{pair}@kline_1m" for pair in pairs]
socket = f'wss://stream.binance.com:9443/stream?streams={"/".join(stream_paths)}'

def on_message(ws, message):
    json_message = json.loads(message)
    # 提取币种标识
    stream = json_message['stream']
    symbol = stream.split('@')[0].upper()
    data = json_message['data']
    candle = data['k']
    candle_closed = candle['x']
    close = candle['c']
    high = candle['h']
    low = candle['l']
    volume = candle['v']
    # 打印带币种标识的K线数据
    print(f"[{symbol}] 1分钟K线 - 收盘价:{close}, 最高价:{high}, 最低价:{low}, 成交量:{volume}, 已收盘:{candle_closed}")

def on_error(ws, error):
    print(f"错误: {error}")

def on_close(ws, close_status_code, close_msg):
    print("### 连接已关闭 ###")
    if close_status_code or close_msg:
        print(f"状态码: {close_status_code}, 关闭信息: {close_msg}")

def on_open(ws):
    print("已建立WebSocket连接")

ws = websocket.WebSocketApp(
    socket,
    on_open=on_open,
    on_message=on_message,
    on_error=on_error,
    on_close=on_close
)
ws.run_forever()

核心说明

  1. 合并流地址生成:用列表推导式把每个币种转换成xxxusdt@kline_1m格式,再用"/".join()拼接成完整的streams参数值,最终构造出支持多币种的WebSocket URL。
  2. 消息解析优化:在on_message中通过stream字段提取币种名称,方便区分不同币种的K线数据。
  3. 错误与关闭信息增强:在on_close中添加状态码和关闭信息的打印,便于排查连接异常问题。

学习参考要点

  • Binance官方API文档:重点查看「WebSocket Market Streams」章节,里面详细说明了单流、合并流的规则,以及K线、交易、深度等各类流的数据格式。
  • Python websocket库实操:掌握WebSocketApp的回调函数用法(on_open/on_message/on_error/on_close),理解WebSocket长连接的维护逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:06:29