更新qmt代码
This commit is contained in:
@@ -1,75 +1,57 @@
|
||||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
:: ================= <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =================
|
||||
:: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼ (<28><>ȷ<EFBFBD><C8B7>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ȷ)
|
||||
set "WORK_DIR=C:\Data\Project\NewStock\qmt"
|
||||
:: Python<EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
set "SCRIPT_NAME=qmt_trader.py"
|
||||
:: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD>
|
||||
set MAX_RETRIES=5
|
||||
:: <20><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
:: ================= 配置选项 =================
|
||||
:: 1. 自动获取当前脚本所在目录作为工作目录
|
||||
set "WORK_DIR=%~dp0"
|
||||
:: 2. 设置启动文件(对应你拆分后的入口文件)
|
||||
set "SCRIPT_NAME=run.py"
|
||||
:: 3. 失败重启配置
|
||||
set MAX_RETRIES=10
|
||||
set RETRY_COUNT=0
|
||||
:: <20><><EFBFBD>Եȴ<D4B5>ʱ<EFBFBD><CAB1>(<28><>)
|
||||
set RETRY_WAIT=10
|
||||
:: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־Ŀ¼
|
||||
set "LOG_DIR=%WORK_DIR%\logs\launcher"
|
||||
set RETRY_WAIT=15
|
||||
:: 4. 日志配置
|
||||
set "LOG_DIR=%WORK_DIR%logs\launcher"
|
||||
:: ===========================================
|
||||
|
||||
:: 1. <20>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>Ŀ¼
|
||||
:: 切换到工作目录
|
||||
cd /d "%WORK_DIR%"
|
||||
title QMT ʵ<EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD>ϵͳ [Port:8001]
|
||||
title QMT 自动化交易系统 [监控中]
|
||||
|
||||
:: 2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־Ŀ¼
|
||||
:: 创建日志目录
|
||||
if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
|
||||
|
||||
:: <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>־<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD> (<28><EFBFBD><F2B5A5B5><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䳣<EFBFBD><E4B3A3>Windows<77><73>ʽ)
|
||||
:: 获取当前日期用于日志命名
|
||||
set "TODAY=%date:~0,4%-%date:~5,2%-%date:~8,2%"
|
||||
set "LOG_FILE=%LOG_DIR%\%TODAY%.log"
|
||||
set "LOG_FILE=%LOG_DIR%\launcher_%TODAY%.log"
|
||||
|
||||
cls
|
||||
echo ==================================================
|
||||
echo QMT ʵ<EFBFBD>̽<EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
echo ʱ<EFBFBD><EFBFBD>: %time%
|
||||
echo <EFBFBD><EFBFBD>־: %LOG_FILE%
|
||||
echo <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: http://localhost:8001
|
||||
echo QMT 交易系统守护进程启动
|
||||
echo 工作目录: %WORK_DIR%
|
||||
echo 启动文件: %SCRIPT_NAME%
|
||||
echo 监控地址: http://localhost:8001
|
||||
echo 日志文件: %LOG_FILE%
|
||||
echo ==================================================
|
||||
|
||||
:LOOP
|
||||
echo.
|
||||
echo [%time%] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD>...
|
||||
echo [%time%] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD>... >> "%LOG_FILE%"
|
||||
|
||||
:: 3. <20><><EFBFBD><EFBFBD> Python <20>ű<EFBFBD>
|
||||
:: ʹ<><CAB9> uv run <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2>&1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳд<D2B2><D0B4><EFBFBD><EFBFBD>־
|
||||
uv run %SCRIPT_NAME% >> "%LOG_FILE%" 2>&1
|
||||
|
||||
:: 4. <20><><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>
|
||||
set EXIT_CODE=%errorlevel%
|
||||
echo [%time%] <20><><EFBFBD><EFBFBD><EFBFBD>쳣<EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: %EXIT_CODE% >> "%LOG_FILE%"
|
||||
echo <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD> (Code: %EXIT_CODE%)
|
||||
|
||||
:: 5. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
:: 检查重试次数
|
||||
if %RETRY_COUNT% GEQ %MAX_RETRIES% (
|
||||
echo [%time%] <EFBFBD>ﵽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳֹͣ<EFBFBD><EFBFBD> >> "%LOG_FILE%"
|
||||
:: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
||||
msg * "QMT <20><><EFBFBD><EFBFBD>ϵͳ<CFB5>ѱ<EFBFBD><D1B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB7>Զ<EFBFBD><D4B6>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>"
|
||||
echo [%time%] !!! 达到最大重试次数,系统停止重启 !!! >> "%LOG_FILE%"
|
||||
color 0C
|
||||
echo 错误: 系统多次崩溃,请检查日志后手动重启。
|
||||
msg * "QMT 系统异常崩溃且无法自动恢复,请检查日志!"
|
||||
goto FAIL
|
||||
)
|
||||
|
||||
set /a RETRY_COUNT+=1
|
||||
echo [%time%] <EFBFBD>ȴ<EFBFBD> %RETRY_WAIT% <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD> %RETRY_COUNT% <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... >> "%LOG_FILE%"
|
||||
echo <20><><EFBFBD>ڵȴ<DAB5><C8B4><EFBFBD><EFBFBD><EFBFBD> (%RETRY_COUNT%/%MAX_RETRIES%)...
|
||||
timeout /t %RETRY_WAIT% >nul
|
||||
echo [%time%] 正在启动交易引擎 (第 %RETRY_COUNT% 次重启)...
|
||||
echo [%time%] >>> 启动子进程: uv run %SCRIPT_NAME% >> "%LOG_FILE%"
|
||||
|
||||
goto LOOP
|
||||
:: 启动程序 (使用 -u 参数确保输出实时刷新到日志)
|
||||
uv run python -u %SCRIPT_NAME% >> "%LOG_FILE%" 2>&1
|
||||
|
||||
:FAIL
|
||||
title QMT ʵ<><CAB5><EFBFBD>ػ<EFBFBD>ϵͳ [<5B>ѱ<EFBFBD><D1B1><EFBFBD>]
|
||||
color 4F
|
||||
echo.
|
||||
echo ==========================================
|
||||
echo ϵͳ<CFB5><CDB3>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
|
||||
echo <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD>ļ<EFBFBD>: %LOG_FILE%
|
||||
echo ==========================================
|
||||
pause
|
||||
exit /b 1
|
||||
:: 程序退出逻辑
|
||||
set EXIT_CODE=%errorlevel%
|
||||
if %EXIT_CODE% EQU 0 (
|
||||
echo [%time%] 程序正常关闭。 >> "%LOG_FILE%"
|
||||
echo 程序运行结束。
|
||||
Reference in New Issue
Block a user