Files
NewStock/qmt/start.bat
2026-01-04 22:43:13 +08:00

57 lines
1.8 KiB
Batchfile

@echo off
setlocal enabledelayedexpansion
:: ================= 配置选项 =================
:: 1. 自动获取当前脚本所在目录作为工作目录
set "WORK_DIR=%~dp0"
:: 2. 设置启动文件(对应你拆分后的入口文件)
set "SCRIPT_NAME=run.py"
:: 3. 失败重启配置
set MAX_RETRIES=10
set RETRY_COUNT=0
set RETRY_WAIT=15
:: 4. 日志配置
set "LOG_DIR=%WORK_DIR%logs\launcher"
:: ===========================================
:: 切换到工作目录
cd /d "%WORK_DIR%"
title QMT 自动化交易系统 [监控中]
:: 创建日志目录
if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
:: 获取当前日期用于日志命名
set "TODAY=%date:~0,4%-%date:~5,2%-%date:~8,2%"
set "LOG_FILE=%LOG_DIR%\launcher_%TODAY%.log"
cls
echo ==================================================
echo QMT 交易系统守护进程启动
echo 工作目录: %WORK_DIR%
echo 启动文件: %SCRIPT_NAME%
echo 监控地址: http://localhost:8001
echo 日志文件: %LOG_FILE%
echo ==================================================
:LOOP
:: 检查重试次数
if %RETRY_COUNT% GEQ %MAX_RETRIES% (
echo [%time%] !!! 达到最大重试次数,系统停止重启 !!! >> "%LOG_FILE%"
color 0C
echo 错误: 系统多次崩溃,请检查日志后手动重启。
msg * "QMT 系统异常崩溃且无法自动恢复,请检查日志!"
goto FAIL
)
echo [%time%] 正在启动交易引擎 (第 %RETRY_COUNT% 次重启)...
echo [%time%] >>> 启动子进程: uv run %SCRIPT_NAME% >> "%LOG_FILE%"
:: 启动程序 (使用 -u 参数确保输出实时刷新到日志)
uv run python -u %SCRIPT_NAME% >> "%LOG_FILE%" 2>&1
:: 程序退出逻辑
set EXIT_CODE=%errorlevel%
if %EXIT_CODE% EQU 0 (
echo [%time%] 程序正常关闭。 >> "%LOG_FILE%"
echo 程序运行结束。