294 lines
9.5 KiB
Markdown
294 lines
9.5 KiB
Markdown
# 排查账户未下单问题指南
|
||
|
||
## 🔍 问题描述
|
||
account3 和 account4 今天一直没有下单,没有看到明显的报错日志。
|
||
|
||
## 📋 排查步骤
|
||
|
||
### 1. 检查进程是否在运行
|
||
|
||
```bash
|
||
# 检查 supervisor 状态
|
||
supervisorctl status auto_sys_acc3
|
||
supervisorctl status auto_sys_acc4
|
||
|
||
# 或者查看所有进程
|
||
supervisorctl status all | grep -E "acc3|acc4"
|
||
|
||
# 检查实际运行的进程
|
||
ps aux | grep -E "trading_system.*main" | grep -E "acc3|acc4"
|
||
```
|
||
|
||
**预期结果**:
|
||
- ✅ `RUNNING` 状态,有 PID
|
||
- ❌ `FATAL`、`EXITED`、`BACKOFF` 表示进程异常
|
||
|
||
**如果进程未运行**:
|
||
```bash
|
||
# 查看启动错误
|
||
supervisorctl tail -200 auto_sys_acc3 stderr
|
||
supervisorctl tail -200 auto_sys_acc4 stderr
|
||
|
||
# 尝试手动启动
|
||
supervisorctl start auto_sys_acc3
|
||
supervisorctl start auto_sys_acc4
|
||
```
|
||
|
||
---
|
||
|
||
### 2. 检查日志文件
|
||
|
||
```bash
|
||
# 查看最近的日志(最后100行)
|
||
tail -n 100 /www/wwwroot/autosys_new/logs/trading_3.log
|
||
tail -n 100 /www/wwwroot/autosys_new/logs/trading_4.log
|
||
|
||
# 查看今天的错误
|
||
grep -i "error" /www/wwwroot/autosys_new/logs/trading_3.log | tail -n 20
|
||
grep -i "error" /www/wwwroot/autosys_new/logs/trading_4.log | tail -n 20
|
||
|
||
# 查看警告
|
||
grep -i "warning" /www/wwwroot/autosys_new/logs/trading_3.log | tail -n 20
|
||
grep -i "warning" /www/wwwroot/autosys_new/logs/trading_4.log | tail -n 20
|
||
```
|
||
|
||
**关键日志检查点**:
|
||
- ✅ 进程启动成功:`交易系统启动成功`、`币安客户端连接成功`
|
||
- ✅ 配置加载:`交易配置(当前策略)`、`单笔最大仓位`、`杠杆配置`
|
||
- ❌ API 错误:`API密钥未配置`、`API权限验证失败`、`连接失败`
|
||
- ❌ 配置错误:`配置加载失败`、`配置管理器初始化失败`
|
||
|
||
---
|
||
|
||
### 3. 检查市场扫描是否正常
|
||
|
||
```bash
|
||
# 查看最近的扫描活动
|
||
grep -E "开始扫描|扫描完成|等待.*秒后进行下次扫描" /www/wwwroot/autosys_new/logs/trading_3.log | tail -n 10
|
||
grep -E "开始扫描|扫描完成|等待.*秒后进行下次扫描" /www/wwwroot/autosys_new/logs/trading_4.log | tail -n 10
|
||
|
||
# 查看扫描到的交易对
|
||
grep -E "扫描到.*个交易对|处理交易对" /www/wwwroot/autosys_new/logs/trading_3.log | tail -n 20
|
||
grep -E "扫描到.*个交易对|处理交易对" /www/wwwroot/autosys_new/logs/trading_4.log | tail -n 20
|
||
```
|
||
|
||
**预期结果**:
|
||
- ✅ 每 `SCAN_INTERVAL` 秒(默认3600秒=1小时)有一次扫描
|
||
- ✅ 扫描到交易对并进行分析
|
||
- ❌ 如果没有扫描日志,说明扫描循环可能卡住或未启动
|
||
|
||
**如果扫描未执行**:
|
||
- 检查 `SCAN_INTERVAL` 配置是否过大
|
||
- 检查是否有异常导致扫描循环中断
|
||
- 查看是否有 `等待 {SCAN_INTERVAL} 秒后进行下次扫描` 的日志
|
||
|
||
---
|
||
|
||
### 4. 检查交易信号生成
|
||
|
||
```bash
|
||
# 查看技术指标分析
|
||
grep -E "技术指标分析|交易信号|should_trade" /www/wwwroot/autosys_new/logs/trading_3.log | tail -n 30
|
||
grep -E "技术指标分析|交易信号|should_trade" /www/wwwroot/autosys_new/logs/trading_4.log | tail -n 30
|
||
|
||
# 查看为什么跳过交易
|
||
grep -E "跳过自动交易|仅生成推荐|不自动交易" /www/wwwroot/autosys_new/logs/trading_3.log | tail -n 20
|
||
grep -E "跳过自动交易|仅生成推荐|不自动交易" /www/wwwroot/autosys_new/logs/trading_4.log | tail -n 20
|
||
```
|
||
|
||
**常见跳过原因**:
|
||
1. **趋势过滤**:`❌ 4H趋势中性(为提升胜率:仅生成推荐,不自动交易)`
|
||
- **原因**:`AUTO_TRADE_ONLY_TRENDING=True` 且 4H 趋势不是明确上涨/下跌
|
||
- **解决**:检查 `AUTO_TRADE_ALLOW_4H_NEUTRAL` 配置,或降低 `MIN_SIGNAL_STRENGTH`
|
||
|
||
2. **信号强度不足**:`信号强度: X < MIN_SIGNAL_STRENGTH`
|
||
- **原因**:交易信号强度低于 `MIN_SIGNAL_STRENGTH`(默认7)
|
||
- **解决**:降低 `MIN_SIGNAL_STRENGTH` 或提高信号质量
|
||
|
||
3. **成交量不足**:`成交量确认失败`
|
||
- **原因**:24小时成交量低于 `MIN_VOLUME_24H` 或 `MIN_VOLUME_24H_STRICT`
|
||
- **解决**:检查成交量配置是否过严格
|
||
|
||
---
|
||
|
||
### 5. 检查风险控制是否阻止交易
|
||
|
||
```bash
|
||
# 查看风险检查结果
|
||
grep -E "风险检查|余额不足|仓位限制|最大持仓|每日限额" /www/wwwroot/autosys_new/logs/trading_3.log | tail -n 20
|
||
grep -E "风险检查|余额不足|仓位限制|最大持仓|每日限额" /www/wwwroot/autosys_new/logs/trading_4.log | tail -n 20
|
||
|
||
# 查看账户余额
|
||
grep -E "账户余额|余额|balance|可用余额" /www/wwwroot/autosys_new/logs/trading_3.log | tail -n 10
|
||
grep -E "账户余额|余额|balance|可用余额" /www/wwwroot/autosys_new/logs/trading_4.log | tail -n 10
|
||
```
|
||
|
||
**常见阻止原因**:
|
||
1. **余额不足**:`余额不足,无法开仓`、`可用余额: X USDT < 最小保证金`
|
||
- **解决**:检查账户余额,确保有足够的保证金
|
||
|
||
2. **持仓数量限制**:`已达到最大持仓数量`、`当前持仓: X >= MAX_OPEN_POSITIONS`
|
||
- **解决**:检查 `MAX_OPEN_POSITIONS` 配置,或平掉部分持仓
|
||
|
||
3. **每日限额**:`今日已开仓 X 次,达到每日限额`
|
||
- **解决**:检查 `MAX_DAILY_ENTRIES` 配置
|
||
|
||
4. **总仓位限制**:`总仓位已超过上限`
|
||
- **解决**:检查 `MAX_TOTAL_POSITION_PERCENT` 配置
|
||
|
||
---
|
||
|
||
### 6. 检查配置是否正确
|
||
|
||
**前端检查**:
|
||
1. 登录前端,进入 account3 和 account4 的配置页面
|
||
2. 检查以下关键配置项:
|
||
- ✅ `BINANCE_API_KEY` 和 `BINANCE_API_SECRET` 是否已配置
|
||
- ✅ `MIN_SIGNAL_STRENGTH`(信号强度阈值)
|
||
- ✅ `MAX_OPEN_POSITIONS`(最大持仓数)
|
||
- ✅ `MAX_DAILY_ENTRIES`(每日最大开仓次数)
|
||
- ✅ `AUTO_TRADE_ONLY_TRENDING`(是否只交易趋势行情)
|
||
- ✅ `AUTO_TRADE_ALLOW_4H_NEUTRAL`(是否允许4H中性趋势交易)
|
||
- ✅ `SCAN_INTERVAL`(扫描间隔,默认3600秒)
|
||
|
||
**日志检查**:
|
||
```bash
|
||
# 查看启动时的配置输出
|
||
grep -A 50 "交易配置(当前策略)" /www/wwwroot/autosys_new/logs/trading_3.log | head -n 60
|
||
grep -A 50 "交易配置(当前策略)" /www/wwwroot/autosys_new/logs/trading_4.log | head -n 60
|
||
```
|
||
|
||
---
|
||
|
||
### 7. 检查API连接和权限
|
||
|
||
```bash
|
||
# 查看API连接状态
|
||
grep -E "币安客户端|API|连接|权限|密钥" /www/wwwroot/autosys_new/logs/trading_3.log | tail -n 20
|
||
grep -E "币安客户端|API|连接|权限|密钥" /www/wwwroot/autosys_new/logs/trading_4.log | tail -n 20
|
||
|
||
# 查看API错误
|
||
grep -iE "api.*error|api.*fail|连接失败|权限" /www/wwwroot/autosys_new/logs/trading_3.log | tail -n 10
|
||
grep -iE "api.*error|api.*fail|连接失败|权限" /www/wwwroot/autosys_new/logs/trading_4.log | tail -n 10
|
||
```
|
||
|
||
**常见API问题**:
|
||
1. **API密钥未配置**:`API密钥未配置`、`API密钥未正确加载`
|
||
- **解决**:在前端配置页面设置 API 密钥
|
||
|
||
2. **API权限不足**:`API权限验证失败`、`API密钥权限不足`
|
||
- **解决**:检查币安API密钥是否启用了"合约交易"权限
|
||
|
||
3. **IP白名单**:`IP地址不在白名单中`
|
||
- **解决**:在币安API设置中添加服务器IP到白名单
|
||
|
||
---
|
||
|
||
### 8. 使用自动化排查脚本
|
||
|
||
```bash
|
||
# 运行自动化排查脚本
|
||
chmod +x check_accounts_no_trades.sh
|
||
./check_accounts_no_trades.sh
|
||
```
|
||
|
||
脚本会自动检查:
|
||
- ✅ 进程状态
|
||
- ✅ 最近日志
|
||
- ✅ 配置项
|
||
- ✅ 市场扫描活动
|
||
- ✅ 风险控制
|
||
- ✅ API连接
|
||
- ✅ 持仓状态
|
||
|
||
---
|
||
|
||
## 🎯 常见问题及解决方案
|
||
|
||
### 问题1:进程运行但没有任何日志输出
|
||
|
||
**可能原因**:
|
||
- 日志文件路径错误
|
||
- 日志级别设置过高(只记录ERROR)
|
||
- 进程卡在某个地方
|
||
|
||
**解决**:
|
||
```bash
|
||
# 检查日志文件是否存在
|
||
ls -lh /www/wwwroot/autosys_new/logs/trading_*.log
|
||
|
||
# 检查进程是否真的在运行
|
||
ps aux | grep trading_system | grep -E "acc3|acc4"
|
||
|
||
# 重启进程
|
||
supervisorctl restart auto_sys_acc3
|
||
supervisorctl restart auto_sys_acc4
|
||
```
|
||
|
||
---
|
||
|
||
### 问题2:有扫描日志但没有交易信号
|
||
|
||
**可能原因**:
|
||
- 市场条件不满足交易策略
|
||
- `MIN_SIGNAL_STRENGTH` 设置过高
|
||
- `AUTO_TRADE_ONLY_TRENDING=True` 且市场趋势不明确
|
||
|
||
**解决**:
|
||
1. 查看信号分析日志,确认是否有交易信号但被过滤
|
||
2. 临时降低 `MIN_SIGNAL_STRENGTH` 测试
|
||
3. 检查 `AUTO_TRADE_ALLOW_4H_NEUTRAL` 配置
|
||
|
||
---
|
||
|
||
### 问题3:有交易信号但被风险控制阻止
|
||
|
||
**可能原因**:
|
||
- 余额不足
|
||
- 已达到最大持仓数
|
||
- 已达到每日开仓限额
|
||
|
||
**解决**:
|
||
1. 检查账户余额
|
||
2. 检查 `MAX_OPEN_POSITIONS` 和当前持仓数
|
||
3. 检查 `MAX_DAILY_ENTRIES` 和今日已开仓次数
|
||
|
||
---
|
||
|
||
### 问题4:配置已修改但未生效
|
||
|
||
**可能原因**:
|
||
- Redis缓存未更新
|
||
- 进程未重启
|
||
- 配置项名称错误
|
||
|
||
**解决**:
|
||
1. 重启交易进程:`supervisorctl restart auto_sys_acc3`
|
||
2. 检查启动日志中的配置输出,确认配置已加载
|
||
3. 确认配置项名称正确(参考 `config.py` 中的定义)
|
||
|
||
---
|
||
|
||
## 📞 进一步排查
|
||
|
||
如果以上步骤都无法解决问题,请提供以下信息:
|
||
|
||
1. **进程状态**:`supervisorctl status auto_sys_acc3 auto_sys_acc4`
|
||
2. **最近100行日志**:`tail -n 100 /www/wwwroot/autosys_new/logs/trading_3.log`
|
||
3. **配置输出**:从启动日志中提取"交易配置(当前策略)"部分
|
||
4. **错误日志**:`grep -i error /www/wwwroot/autosys_new/logs/trading_3.log | tail -n 20`
|
||
|
||
---
|
||
|
||
## ✅ 检查清单
|
||
|
||
- [ ] 进程是否在运行(`supervisorctl status`)
|
||
- [ ] 日志文件是否存在且有新内容
|
||
- [ ] API密钥是否已配置
|
||
- [ ] 账户余额是否充足
|
||
- [ ] 市场扫描是否正常执行
|
||
- [ ] 是否有交易信号生成
|
||
- [ ] 风险控制是否阻止交易
|
||
- [ ] 配置是否正确加载
|
||
- [ ] 是否有错误或警告日志
|