auto_trade_sys/docs/扫描效率优化完成总结.md
薇薇安 83e628b611 a
2026-01-25 16:32:08 +08:00

154 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 扫描效率优化完成总结
## ✅ 已完成的优化
### 1. 增加 MAX_SCAN_SYMBOLS
**优化前**`MAX_SCAN_SYMBOLS = 150`
**优化后**`MAX_SCAN_SYMBOLS = 250`
**效果**
- 覆盖率:从 27.6% 提升到 **46.0%**(增加 18.4%
- 减少错过好机会的概率
**已更新的文件**
1. `trading_system/config.py` - 默认配置
2. `backend/config_manager.py` - 配置管理器
3. `frontend/src/components/GlobalConfig.jsx` - 前端全局配置
4. `frontend/src/components/ConfigPanel.jsx` - 前端用户配置
---
### 2. 优化缓存机制
#### 2.1 增加24小时行情数据缓存TTL
**优化位置**`trading_system/binance_client.py`
**优化前**`TTL: 30秒`
**优化后**`TTL: 60秒`
**理由**
- 24小时行情数据变化较慢可以缓存更长时间
- 多个账户可以共用同一个缓存减少API请求
- 提升扫描效率
#### 2.2 添加技术指标计算结果缓存
**优化位置**`trading_system/market_scanner.py`
**功能**
- 缓存技术指标计算结果RSI、MACD、布林带、ATR、EMA等
- 基于K线数据的最后更新时间判断缓存是否有效
- 如果K线数据没有更新直接使用缓存的技术指标
**缓存键**`indicators:{symbol}:{primary_interval}:{confirm_interval}`
**缓存TTL**30秒与K线缓存一致
**效果**
- 减少重复计算技术指标的开销
- 多个账户可以共用同一个缓存
- 提升扫描效率特别是扫描250个交易对时
---
## 📊 性能提升
### 优化前
**扫描150个交易对**
- 获取24小时行情1次API请求缓存30秒
- 详细分析28个28次K线API请求有缓存
- 计算技术指标28次计算无缓存每次都计算
- **总耗时**约10-30秒
### 优化后
**扫描250个交易对**
- 获取24小时行情1次API请求缓存60秒多个账户共用
- 详细分析50-60个50-60次K线API请求有缓存多个账户共用
- 计算技术指标50-60次计算有缓存多个账户共用
- **总耗时**约15-40秒虽然扫描数量增加但缓存优化减少了实际计算时间
**性能提升**
- 24小时行情缓存TTL增加减少API请求
- 技术指标计算结果缓存,减少重复计算
- 多个账户可以共用缓存,进一步提升效率
---
## 🎯 缓存策略
### 1. 24小时行情数据缓存
- **缓存键**`ticker_24h:all`
- **TTL**60秒
- **共享**:所有账户共用
- **更新频率**每60秒更新一次
### 2. K线数据缓存
- **缓存键**`klines:{symbol}:{interval}:{limit}`
- **TTL**根据interval动态设置1h=60秒4h=300秒
- **共享**:所有账户共用
- **更新频率**根据interval动态更新
### 3. 技术指标计算结果缓存
- **缓存键**`indicators:{symbol}:{primary_interval}:{confirm_interval}`
- **TTL**30秒
- **共享**:所有账户共用
- **更新频率**当K线数据更新时自动失效
---
## 📈 预期效果
### 1. 扫描覆盖率提升
- **优化前**150/544 = 27.6%
- **优化后**250/544 = **46.0%**增加18.4%
- **效果**:减少错过好机会的概率
### 2. 扫描效率提升
- **优化前**:每次扫描都需要重新计算技术指标
- **优化后**:技术指标计算结果缓存,减少重复计算
- **效果**:虽然扫描数量增加,但实际耗时增加不多
### 3. 多账户效率提升
- **优化前**:每个账户独立扫描,重复计算
- **优化后**:多个账户共用缓存,减少重复计算
- **效果**:多个账户同时扫描时,效率显著提升
---
## 🚀 下一步操作
1. **重启交易进程**
```bash
supervisorctl restart auto_sys_acc1 auto_sys_acc2 auto_sys_acc3 auto_sys_acc4
```
2. **验证优化**
```bash
# 查看日志确认扫描数量增加到250
tail -f /www/wwwroot/autosys_new/logs/trading_*.log | grep -E "限制扫描数量|排除主流币|扫描完成"
# 查看缓存使用情况
tail -f /www/wwwroot/autosys_new/logs/trading_*.log | grep -E "使用缓存|已缓存|从Redis缓存"
```
3. **观察效果**
- 观察扫描时间是否在可接受范围内15-40秒
- 观察是否找到了更多优质机会
- 观察缓存命中率
---
## ✅ 完成时间
2026-01-25