9.5 KiB
9.5 KiB
排查账户未下单问题指南
🔍 问题描述
account3 和 account4 今天一直没有下单,没有看到明显的报错日志。
📋 排查步骤
1. 检查进程是否在运行
# 检查 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表示进程异常
如果进程未运行:
# 查看启动错误
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. 检查日志文件
# 查看最近的日志(最后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. 检查市场扫描是否正常
# 查看最近的扫描活动
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. 检查交易信号生成
# 查看技术指标分析
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
常见跳过原因:
-
趋势过滤:
❌ 4H趋势中性(为提升胜率:仅生成推荐,不自动交易)- 原因:
AUTO_TRADE_ONLY_TRENDING=True且 4H 趋势不是明确上涨/下跌 - 解决:检查
AUTO_TRADE_ALLOW_4H_NEUTRAL配置,或降低MIN_SIGNAL_STRENGTH
- 原因:
-
信号强度不足:
信号强度: X < MIN_SIGNAL_STRENGTH- 原因:交易信号强度低于
MIN_SIGNAL_STRENGTH(默认7) - 解决:降低
MIN_SIGNAL_STRENGTH或提高信号质量
- 原因:交易信号强度低于
-
成交量不足:
成交量确认失败- 原因:24小时成交量低于
MIN_VOLUME_24H或MIN_VOLUME_24H_STRICT - 解决:检查成交量配置是否过严格
- 原因:24小时成交量低于
5. 检查风险控制是否阻止交易
# 查看风险检查结果
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
常见阻止原因:
-
余额不足:
余额不足,无法开仓、可用余额: X USDT < 最小保证金- 解决:检查账户余额,确保有足够的保证金
-
持仓数量限制:
已达到最大持仓数量、当前持仓: X >= MAX_OPEN_POSITIONS- 解决:检查
MAX_OPEN_POSITIONS配置,或平掉部分持仓
- 解决:检查
-
每日限额:
今日已开仓 X 次,达到每日限额- 解决:检查
MAX_DAILY_ENTRIES配置
- 解决:检查
-
总仓位限制:
总仓位已超过上限- 解决:检查
MAX_TOTAL_POSITION_PERCENT配置
- 解决:检查
6. 检查配置是否正确
前端检查:
- 登录前端,进入 account3 和 account4 的配置页面
- 检查以下关键配置项:
- ✅
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秒)
- ✅
日志检查:
# 查看启动时的配置输出
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连接和权限
# 查看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问题:
-
API密钥未配置:
API密钥未配置、API密钥未正确加载- 解决:在前端配置页面设置 API 密钥
-
API权限不足:
API权限验证失败、API密钥权限不足- 解决:检查币安API密钥是否启用了"合约交易"权限
-
IP白名单:
IP地址不在白名单中- 解决:在币安API设置中添加服务器IP到白名单
8. 使用自动化排查脚本
# 运行自动化排查脚本
chmod +x check_accounts_no_trades.sh
./check_accounts_no_trades.sh
脚本会自动检查:
- ✅ 进程状态
- ✅ 最近日志
- ✅ 配置项
- ✅ 市场扫描活动
- ✅ 风险控制
- ✅ API连接
- ✅ 持仓状态
🎯 常见问题及解决方案
问题1:进程运行但没有任何日志输出
可能原因:
- 日志文件路径错误
- 日志级别设置过高(只记录ERROR)
- 进程卡在某个地方
解决:
# 检查日志文件是否存在
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且市场趋势不明确
解决:
- 查看信号分析日志,确认是否有交易信号但被过滤
- 临时降低
MIN_SIGNAL_STRENGTH测试 - 检查
AUTO_TRADE_ALLOW_4H_NEUTRAL配置
问题3:有交易信号但被风险控制阻止
可能原因:
- 余额不足
- 已达到最大持仓数
- 已达到每日开仓限额
解决:
- 检查账户余额
- 检查
MAX_OPEN_POSITIONS和当前持仓数 - 检查
MAX_DAILY_ENTRIES和今日已开仓次数
问题4:配置已修改但未生效
可能原因:
- Redis缓存未更新
- 进程未重启
- 配置项名称错误
解决:
- 重启交易进程:
supervisorctl restart auto_sys_acc3 - 检查启动日志中的配置输出,确认配置已加载
- 确认配置项名称正确(参考
config.py中的定义)
📞 进一步排查
如果以上步骤都无法解决问题,请提供以下信息:
- 进程状态:
supervisorctl status auto_sys_acc3 auto_sys_acc4 - 最近100行日志:
tail -n 100 /www/wwwroot/autosys_new/logs/trading_3.log - 配置输出:从启动日志中提取"交易配置(当前策略)"部分
- 错误日志:
grep -i error /www/wwwroot/autosys_new/logs/trading_3.log | tail -n 20
✅ 检查清单
- 进程是否在运行(
supervisorctl status) - 日志文件是否存在且有新内容
- API密钥是否已配置
- 账户余额是否充足
- 市场扫描是否正常执行
- 是否有交易信号生成
- 风险控制是否阻止交易
- 配置是否正确加载
- 是否有错误或警告日志