stock-ai-agent/backend/check_orders.sh
2026-02-21 19:40:29 +08:00

89 lines
2.5 KiB
Bash
Executable File

#!/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_TP', 'CLOSED_SL', 'CLOSED_BE', 'CLOSED_MANUAL')
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 "=========================================="