75 lines
1.9 KiB
Batchfile
75 lines
1.9 KiB
Batchfile
@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 |