Files
NewStock/qmt/start.bat

84 lines
2.5 KiB
Batchfile
Raw Normal View History

2025-12-19 14:11:32 +08:00
@echo off
2026-01-04 23:11:15 +08:00
chcp 65001 >nul
2025-12-19 14:11:32 +08:00
setlocal enabledelayedexpansion
2026-01-04 22:43:13 +08:00
:: ================= 配置选项 =================
2026-01-04 23:11:15 +08:00
:: 1. 自动获取当前脚本所在目录
2026-01-04 22:43:13 +08:00
set "WORK_DIR=%~dp0"
2026-01-04 23:11:15 +08:00
:: 2. 设置启动文件
2026-01-04 22:43:13 +08:00
set "SCRIPT_NAME=run.py"
:: 3. 失败重启配置
set MAX_RETRIES=10
2025-12-19 14:11:32 +08:00
set RETRY_COUNT=0
2026-01-04 22:43:13 +08:00
set RETRY_WAIT=15
:: 4. 日志配置
set "LOG_DIR=%WORK_DIR%logs\launcher"
2025-12-19 14:11:32 +08:00
:: ===========================================
cd /d "%WORK_DIR%"
2026-01-04 22:43:13 +08:00
title QMT 自动化交易系统 [监控中]
2025-12-19 14:11:32 +08:00
if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
2026-01-04 23:11:15 +08:00
:: 优化日期获取逻辑,防止由于区域设置导致的非法文件名字符
for /f "tokens=1-3 delims=-/ " %%a in ("%date%") do (
set "Y=%%a"
set "M=%%b"
set "D=%%c"
)
set "TODAY=%Y%-%M%-%D%"
2026-01-04 22:43:13 +08:00
set "LOG_FILE=%LOG_DIR%\launcher_%TODAY%.log"
2025-12-19 14:11:32 +08:00
2026-01-04 22:43:13 +08:00
cls
2025-12-19 14:11:32 +08:00
echo ==================================================
2026-01-04 22:43:13 +08:00
echo QMT 交易系统守护进程启动
echo 工作目录: %WORK_DIR%
echo 启动文件: %SCRIPT_NAME%
echo 监控地址: http://localhost:8001
echo 日志文件: %LOG_FILE%
2025-12-19 14:11:32 +08:00
echo ==================================================
:LOOP
if %RETRY_COUNT% GEQ %MAX_RETRIES% (
2026-01-04 22:43:13 +08:00
echo [%time%] !!! 达到最大重试次数,系统停止重启 !!! >> "%LOG_FILE%"
color 0C
echo 错误: 系统多次崩溃,请检查日志后手动重启。
msg * "QMT 系统异常崩溃且无法自动恢复,请检查日志!"
2025-12-19 14:11:32 +08:00
goto FAIL
)
2026-01-04 22:43:13 +08:00
echo [%time%] 正在启动交易引擎 (第 %RETRY_COUNT% 次重启)...
2026-01-04 23:11:15 +08:00
:: 注意:这里将 >>> 改成了 ^>^>^> 进行转义,或者直接改用 ===
echo [%time%] ^>^>^> 启动子进程: uv run %SCRIPT_NAME% >> "%LOG_FILE%"
2025-12-19 14:11:32 +08:00
2026-01-04 22:43:13 +08:00
:: 启动程序 (使用 -u 参数确保输出实时刷新到日志)
2026-01-04 23:11:15 +08:00
:: 如果你没有安装 uv请将 uv run 改为 python
2026-01-04 22:43:13 +08:00
uv run python -u %SCRIPT_NAME% >> "%LOG_FILE%" 2>&1
2025-12-19 14:11:32 +08:00
2026-01-04 22:43:13 +08:00
set EXIT_CODE=%errorlevel%
if %EXIT_CODE% EQU 0 (
echo [%time%] 程序正常关闭。 >> "%LOG_FILE%"
2026-01-04 23:11:15 +08:00
echo 程序运行结束。
pause
exit /b 0
)
set /a RETRY_COUNT+=1
echo [%time%] 程序异常退出Code: %EXIT_CODE% >> "%LOG_FILE%"
echo --------------------------------------------------
echo [%time%] 警告: 进程意外中断! (退出码: %EXIT_CODE%)
echo [%time%] 将在 %RETRY_WAIT% 秒后尝试第 %RETRY_COUNT% 次重启...
echo --------------------------------------------------
timeout /t %RETRY_WAIT% >nul
goto LOOP
:FAIL
title QMT 系统已停机
echo.
echo ==========================================
echo 守护进程已停止。
echo 请查看日志: %LOG_FILE%
echo ==========================================
pause
exit /b 1