# Unicorn WebSocket 集成说明

## 概述

已集成 `unicorn-binance-websocket-api`，提供高性能的实时WebSocket数据流支持。

## 功能特性

### 1. 高性能实时数据流
- 使用Unicorn库提供更高效的WebSocket连接
- 支持多路复用流（一个连接订阅多个交易对）
- 自动重连和错误恢复

### 2. 实时价格监控
- 订阅交易对的实时ticker数据
- 实时获取最新价格，无需轮询API
- 支持价格更新回调

### 3. K线数据流
- 订阅实时K线数据
- 支持多种时间周期（1m, 5m, 15m等）
- 实时更新K线数据

## 配置

在 `config.py` 中：

```python
TRADING_CONFIG = {
    # Unicorn WebSocket配置
    'USE_UNICORN_WEBSOCKET': True,  # 是否使用Unicorn WebSocket
}
```

## 使用方法

### 1. 自动启用

程序启动时会自动检测并启用Unicorn WebSocket（如果配置为True）。

### 2. 订阅实时价格

```python
# 在代码中订阅实时价格
symbols = ['BTCUSDT', 'ETHUSDT']
client.subscribe_realtime_prices(symbols, price_callback)

# 回调函数
async def price_callback(symbol, price, price_data):
    print(f"{symbol} 最新价格: {price}")
```

### 3. 获取实时价格

```python
# 获取实时价格（从WebSocket流）
price = client.get_realtime_price('BTCUSDT')
if price:
    print(f"BTCUSDT 实时价格: {price}")
```

### 4. 监控价格变化

```python
# 使用market_scanner监控价格
await scanner.monitor_price('BTCUSDT', price_callback)
```

## 优势

### 相比标准WebSocket

1. **性能更高**
   - 多路复用：一个连接订阅多个交易对
   - 更低的延迟
   - 更少的资源占用

2. **更稳定**
   - 自动重连机制
   - 错误恢复
   - 流管理更完善

3. **功能更丰富**
   - 支持多种数据流（ticker, kline等）
   - 流统计信息
   - 更好的数据解析

## 回退机制

如果Unicorn WebSocket启动失败或不可用，系统会自动回退到标准的`python-binance` WebSocket，确保功能正常。

## 注意事项

1. **依赖安装**
   ```bash
   pip install unicorn-binance-websocket-api==2.4.0
   ```

2. **测试网支持**
   - 自动检测测试网/生产网环境
   - 使用对应的WebSocket端点

3. **资源管理**
   - 程序退出时自动清理所有流
   - 避免资源泄漏

4. **性能考虑**
   - 订阅大量交易对时，注意系统资源
   - 建议订阅数量不超过100个

## 故障排查

### 问题1：Unicorn启动失败

**原因**：依赖未安装或版本不兼容
**解决**：
```bash
pip install unicorn-binance-websocket-api==2.4.0
```

### 问题2：无法获取实时价格

**原因**：未订阅该交易对
**解决**：先调用 `subscribe_realtime_prices()` 订阅

### 问题3：流数据丢失

**原因**：处理速度跟不上数据产生速度
**解决**：检查回调函数是否阻塞，优化处理逻辑

## 示例代码

```python
# 订阅多个交易对的实时价格
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支持
