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