auto_trade_sys/docs/排查账户未下单问题指南.md
薇薇安 86b85c2609 a
2026-01-25 11:19:39 +08:00

294 lines
9.5 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.

# 排查账户未下单问题指南
## 🔍 问题描述
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密钥是否已配置
- [ ] 账户余额是否充足
- [ ] 市场扫描是否正常执行
- [ ] 是否有交易信号生成
- [ ] 风险控制是否阻止交易
- [ ] 配置是否正确加载
- [ ] 是否有错误或警告日志