3.6 KiB
3.6 KiB
Unicorn WebSocket 集成说明
概述
已集成 unicorn-binance-websocket-api,提供高性能的实时WebSocket数据流支持。
功能特性
1. 高性能实时数据流
- 使用Unicorn库提供更高效的WebSocket连接
- 支持多路复用流(一个连接订阅多个交易对)
- 自动重连和错误恢复
2. 实时价格监控
- 订阅交易对的实时ticker数据
- 实时获取最新价格,无需轮询API
- 支持价格更新回调
3. K线数据流
- 订阅实时K线数据
- 支持多种时间周期(1m, 5m, 15m等)
- 实时更新K线数据
配置
在 config.py 中:
TRADING_CONFIG = {
# Unicorn WebSocket配置
'USE_UNICORN_WEBSOCKET': True, # 是否使用Unicorn WebSocket
}
使用方法
1. 自动启用
程序启动时会自动检测并启用Unicorn WebSocket(如果配置为True)。
2. 订阅实时价格
# 在代码中订阅实时价格
symbols = ['BTCUSDT', 'ETHUSDT']
client.subscribe_realtime_prices(symbols, price_callback)
# 回调函数
async def price_callback(symbol, price, price_data):
print(f"{symbol} 最新价格: {price}")
3. 获取实时价格
# 获取实时价格(从WebSocket流)
price = client.get_realtime_price('BTCUSDT')
if price:
print(f"BTCUSDT 实时价格: {price}")
4. 监控价格变化
# 使用market_scanner监控价格
await scanner.monitor_price('BTCUSDT', price_callback)
优势
相比标准WebSocket
-
性能更高
- 多路复用:一个连接订阅多个交易对
- 更低的延迟
- 更少的资源占用
-
更稳定
- 自动重连机制
- 错误恢复
- 流管理更完善
-
功能更丰富
- 支持多种数据流(ticker, kline等)
- 流统计信息
- 更好的数据解析
回退机制
如果Unicorn WebSocket启动失败或不可用,系统会自动回退到标准的python-binance WebSocket,确保功能正常。
注意事项
-
依赖安装
pip install unicorn-binance-websocket-api==2.4.0 -
测试网支持
- 自动检测测试网/生产网环境
- 使用对应的WebSocket端点
-
资源管理
- 程序退出时自动清理所有流
- 避免资源泄漏
-
性能考虑
- 订阅大量交易对时,注意系统资源
- 建议订阅数量不超过100个
故障排查
问题1:Unicorn启动失败
原因:依赖未安装或版本不兼容 解决:
pip install unicorn-binance-websocket-api==2.4.0
问题2:无法获取实时价格
原因:未订阅该交易对
解决:先调用 subscribe_realtime_prices() 订阅
问题3:流数据丢失
原因:处理速度跟不上数据产生速度 解决:检查回调函数是否阻塞,优化处理逻辑
示例代码
# 订阅多个交易对的实时价格
symbols = ['BTCUSDT', 'ETHUSDT', 'BNBUSDT']
async def on_price_update(symbol, price, price_data):
print(f"{symbol}: {price}")
# 可以在这里实现交易逻辑
# 订阅
client.subscribe_realtime_prices(symbols, on_price_update)
# 获取实时价格
btc_price = client.get_realtime_price('BTCUSDT')
print(f"BTC价格: {btc_price}")
技术细节
流管理
- 每个交易对对应一个stream_id
- 支持动态添加/删除订阅
- 自动管理流的生命周期
数据处理
- 异步处理流数据
- 支持多个回调函数
- 自动解析数据格式
性能优化
- 使用缓冲区减少API调用
- 批量处理数据
- 异步非阻塞处理
更新日志
- 2026-01-13:初始集成Unicorn WebSocket支持