# 排查账户未下单问题指南

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