想获取바이낸스의实时시세数据?WebSocket是最好的方式——低延迟、不消耗REST API权重、数据实时推送。
WebSocket基础
WebSocket是一种双向通信协议。和HTTP请求不同,WebSocket建立连接后가능持续接收服务器推送的数据,不필요你反复发请求。
在암호화폐거래中,WebSocket主要用于获取:
- 实时가격
- 实时체결记录
- 深度数据(호가창)
- K线数据
- 계정信息变化
바이낸스WebSocket端点
바이낸스 가입后,바이낸스는 제공합니다以下WebSocket端点:
公共数据流(不필요API Key)
基础端点:wss://stream.binance.com:9443/ws/<streamName>
组合端点:wss://stream.binance.com:9443/stream?streams=<stream1>/<stream2>
사용자数据流(필요API Key)
필요先通过REST API创建一个listenKey,然后用这个key连接WebSocket获取你的계정实时数据。
可用的公共数据流
逐笔거래(Trade)
获取某个거래쌍的每一笔체결记录。
- 流名称:
btcusdt@trade - 数据:가격、数量、매매方向、时间
K线数据(Kline)
获取实时K线更新。
- 流名称:
btcusdt@kline_1m(1분K线) - 지원多种周期:1m、5m、15m、1h、4h、1d等
深度数据(Depth)
获取호가창变化。
- 流名称:
btcusdt@depth或btcusdt@depth@100ms - 数据:매매대기 주문的变化
24시간시세统计
获取某个或所有거래쌍的24시간统计数据。
- 流名称:
btcusdt@ticker或!ticker@arr(所有거래쌍)
最新가격
获取某个或所有거래쌍的最新체결价。
- 流名称:
btcusdt@miniTicker
사용자数据流
获取你계정的实时信息:
- 通过REST API调用POST
/api/v3/userDataStream获取listenKey - 连接WebSocket:
wss://stream.binance.com:9443/ws/<listenKey> - 接收实时推送:
- 계정잔액变化
- 주문状态更新
- 체결通知
주의:listenKey每60분필요续期一次(通过PUT请求),否则连接会断开。
连接管理要点
心跳机制
- 每3분发送一次ping,服务器会回复pong
- 如果超过一定时间没有收到pong,필요重新连接
断线重连
네트워크不稳定时连接可能断开。你的程序필요实现自动重连逻辑:
- 检测到连接断开
- 等待短暂时间(1-5秒)
- 重新建立连接
- 重新订阅数据流
订阅数量限制
- 单个连接最多200个数据流
- 필요更多的话,建立多个连接
자주 묻는 질문
Q:WebSocket数据有延迟吗? 正常情况下延迟在几十毫秒到几百毫秒之间,取决于你的네트워크바이낸스로服务器的距离。
Q:用Python怎么连接?
가능사용websocket-client或websockets库。也有现成的Python바이낸스SDK(如python-binance)封装了WebSocket기능。
Q:能同时订阅현물和선물吗?
현물和선물用不同的端点。선물WebSocket端点是wss://fstream.binance.com/ws/<streamName>。
Q:有数据丢失어떻게 해야 하나요? WebSocket不保证100%不丢数据。在断线重连后,가능用REST API补充缺失的数据。
아직 앱을 설치하지 않으셨다면가능先바이낸스 앱 다운로드。
정리
바이낸스WebSocket提供丰富的实时数据流,包括시세、深度、K线和사용자数据。接入简单,延迟低,不消耗REST API权重。주의做好心跳保活和断线重连。对于필요实时数据的量化거래和数据分析来说,WebSocket是必备工具。