在加密货币交易领域,实时数据获取是决策分析的核心,币安(Binance)作为全球最大的加密货币交易所之一,提供了WebSocket(WSS)接口,允许开发者高效获取市场行情、交易深度等实时数据,本文将介绍如何使用Python通过WSS协议连接币安数据流,实现实时数据监听。
币安的WebSocket接口分为 streams(市场数据流)和 user data streams(用户数据流,需鉴权),市场数据流无需认证,可直接订阅,包括ticker价格、K线(candlesticks)、交易深度(depth)等;用户数据流需通过API Key生成签名,用于获取账户余额、订单状态等私有信息,本文以公开的ticker价格流为例,展示基础连接方法。

环境准备
安装必要的Python库:websockets(用于WebSocket通信)和json(数据解析)。
pip install websockets
连接WSS并订阅数据
币安的公开数据流WSS地址为wss://stream.binance.com:9443,订阅时需指定/ws/后缀加上流名称(如btcusdt@ticker),以下代码实现连接并打印实时ticker数据:
import websockets import json async def binance_ticker_stream(): uri = "wss://stream.binance.com:9443/ws/btcusdt@ticker" try: async with websockets.connect(uri) as websocket: print("已连接币安BTCUSDT ticker数据流") while True: data = await websocket.recv() ticker = json.loads(data) print(f"最新价格: {ticker['c']}, 最高价: {ticker['h']}, 最低价: {ticker['l']}") except Exception as e: print(f"连接错误: {e}") # 运行协程 import asyncio asyncio.run(binance_ticker_stream())
数据解析与处理
币安返回的ticker数据为JSON格式,包含字段如c(当前价)、h(24h最高价)、l(24h最低价)、v(成交量)等,开发者可根据需求提取字段,存入数据库或触发交易逻辑。
/stream?streams=拼接多个流(如btcusdt@ticker/ethusdt@ticker),同时监听多个交易对。wss://api.binance.com:9443/ws连接用户数据流,获取实时订单信息。通过Python和币安WSS接口,开发者可低成本构建实时数据监控系统,为量化交易、市场分析提供支持,本文示例展示了基础连接方法,实际应用中需结合具体需求扩展功能,并注意接口调用频率限制(如币安对IP的请求限制),随着加密货币市场的发展,WebSocket实时数据流已成为开发者不可或缺的工具。