Files
NewStock/qmt/start.bat
2025-12-19 14:11:32 +08:00

75 lines
1.9 KiB
Batchfile
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@echo off
setlocal enabledelayedexpansion
:: ================= 配置区域 =================
:: 工作目录 (请确认路径正确)
set "WORK_DIR=C:\Data\Project\NewStock\qmt"
:: Python脚本名称
set "SCRIPT_NAME=qmt_trader.py"
:: 最大重试次数
set MAX_RETRIES=5
:: 重试计数器
set RETRY_COUNT=0
:: 重试等待时间(秒)
set RETRY_WAIT=10
:: 启动器日志目录
set "LOG_DIR=%WORK_DIR%\logs\launcher"
:: ===========================================
:: 1. 切换工作目录
cd /d "%WORK_DIR%"
title QMT 实盘守护系统 [Port:8001]
:: 2. 创建日志目录
if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
:: 获取日期作为日志文件名 (简单的日期处理适配常见Windows格式)
set "TODAY=%date:~0,4%-%date:~5,2%-%date:~8,2%"
set "LOG_FILE=%LOG_DIR%\%TODAY%.log"
echo ==================================================
echo QMT 实盘交易系统启动
echo 时间: %time%
echo 日志: %LOG_FILE%
echo 管理面板: http://localhost:8001
echo ==================================================
:LOOP
echo.
echo [%time%] 正在启动子进程...
echo [%time%] 正在启动子进程... >> "%LOG_FILE%"
:: 3. 启动 Python 脚本
:: 使用 uv run 启动2>&1 将报错也写入日志
uv run %SCRIPT_NAME% >> "%LOG_FILE%" 2>&1
:: 4. 捕获退出
set EXIT_CODE=%errorlevel%
echo [%time%] 进程异常退出,错误码: %EXIT_CODE% >> "%LOG_FILE%"
echo 警告: 进程已退出 (Code: %EXIT_CODE%)
:: 5. 重试逻辑
if %RETRY_COUNT% GEQ %MAX_RETRIES% (
echo [%time%] 达到最大重试次数,系统停止。 >> "%LOG_FILE%"
:: 弹窗提示
msg * "QMT 交易系统已崩溃且无法自动恢复,请检查日志!"
goto FAIL
)
set /a RETRY_COUNT+=1
echo [%time%] 等待 %RETRY_WAIT% 秒后进行第 %RETRY_COUNT% 次重试... >> "%LOG_FILE%"
echo 正在等待重启 (%RETRY_COUNT%/%MAX_RETRIES%)...
timeout /t %RETRY_WAIT% >nul
goto LOOP
:FAIL
title QMT 实盘守护系统 [已崩溃]
color 4F
echo.
echo ==========================================
echo 系统已停止运行
echo 请检查日志文件: %LOG_FILE%
echo ==========================================
pause
exit /b 1