#!/bin/bash # ============================================================ # 异常订单快速检查脚本 # 用法: ./check_orders.sh [database_path] # ============================================================ DB_PATH="${1:-/path/to/your/database.db}" echo "==========================================" echo "异常订单检查报告" echo "==========================================" echo "数据库: $DB_PATH" echo "检查时间: $(date '+%Y-%m-%d %H:%M:%S')" echo "" if [ ! -f "$DB_PATH" ]; then echo "错误: 找不到数据库文件 $DB_PATH" echo "请指定正确的数据库路径" exit 1 fi # 1. 检查 OPEN 状态但成交价无效的订单 echo "【1】OPEN 状态但成交价无效的订单:" echo "----------------------------------------" sqlite3 "$DB_PATH" " SELECT ' ' || substr(order_id, 1, 8) || '...' || ' | ' || symbol || ' | ' || side || ' | 成交价:' || COALESCE(CAST(filled_price AS TEXT), 'NULL') FROM paper_orders WHERE status = 'OPEN' AND (filled_price IS NULL OR filled_price = 0) LIMIT 10; " || echo " ✅ 无异常订单" echo "" # 2. 检查 PENDING 状态但有成交价的订单 echo "【2】PENDING 状态但有成交价的订单:" echo "----------------------------------------" sqlite3 "$DB_PATH" " SELECT ' ' || substr(order_id, 1, 8) || '...' || ' | ' || symbol || ' | 状态应该是OPEN' FROM paper_orders WHERE status = 'PENDING' AND filled_price IS NOT NULL AND filled_price > 0 LIMIT 10; " || echo " ✅ 无异常订单" echo "" # 3. 活跃订单统计 echo "【3】活跃订单统计:" echo "----------------------------------------" sqlite3 "$DB_PATH" " SELECT ' ' || status || ': ' || COUNT(*) || ' 个' FROM paper_orders WHERE status IN ('PENDING', 'OPEN') GROUP BY status; " echo "" # 4. 最近异常平仓记录 echo "【4】最近1小时内价格异常的平仓记录:" echo "----------------------------------------" sqlite3 "$DB_PATH" " SELECT ' ' || substr(order_id, 1, 8) || '...' || ' | ' || symbol || ' | 成交:' || COALESCE(CAST(filled_price AS TEXT), 'NULL') || ' | 出场:' || COALESCE(CAST(exit_price AS TEXT), 'NULL') FROM paper_orders WHERE status IN ('CLOSED', 'CLOSED_TP', 'CLOSED_SL', 'CLOSED_BE') AND closed_at >= datetime('now', '-1 hour') AND ( filled_price IS NULL OR filled_price = 0 OR exit_price IS NULL OR exit_price = 0 ) LIMIT 10; " || echo " ✅ 无异常记录" echo "" echo "==========================================" echo "检查完成" echo "=========================================="