更新qmt代码
This commit is contained in:
@@ -28,19 +28,19 @@ def main():
|
|||||||
try:
|
try:
|
||||||
# 初始化引擎
|
# 初始化引擎
|
||||||
engine.initialize('config.json')
|
engine.initialize('config.json')
|
||||||
print("✅ QMT引擎初始化成功")
|
print("QMT引擎初始化成功")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"❌ QMT引擎初始化失败: {e}")
|
print(f"QMT引擎初始化失败: {e}")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# 启动交易线程
|
# 启动交易线程
|
||||||
trading_thread = threading.Thread(target=engine.run_trading_loop, daemon=True)
|
trading_thread = threading.Thread(target=engine.run_trading_loop, daemon=True)
|
||||||
trading_thread.start()
|
trading_thread.start()
|
||||||
print("✅ 交易线程启动成功")
|
print("交易线程启动成功")
|
||||||
|
|
||||||
# 创建API服务器
|
# 创建API服务器
|
||||||
app = create_api_server(engine)
|
app = create_api_server(engine)
|
||||||
print("✅ API服务器创建成功")
|
print("API服务器创建成功")
|
||||||
|
|
||||||
# 启动Web服务
|
# 启动Web服务
|
||||||
print(">>> Web服务启动: http://localhost:8001")
|
print(">>> Web服务启动: http://localhost:8001")
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
chcp 65001 >nul
|
||||||
setlocal enabledelayedexpansion
|
setlocal enabledelayedexpansion
|
||||||
|
|
||||||
:: ================= 配置选项 =================
|
:: ================= 配置选项 =================
|
||||||
:: 1. 自动获取当前脚本所在目录作为工作目录
|
:: 1. 自动获取当前脚本所在目录
|
||||||
set "WORK_DIR=%~dp0"
|
set "WORK_DIR=%~dp0"
|
||||||
:: 2. 设置启动文件(对应你拆分后的入口文件)
|
:: 2. 设置启动文件
|
||||||
set "SCRIPT_NAME=run.py"
|
set "SCRIPT_NAME=run.py"
|
||||||
:: 3. 失败重启配置
|
:: 3. 失败重启配置
|
||||||
set MAX_RETRIES=10
|
set MAX_RETRIES=10
|
||||||
@@ -14,15 +15,18 @@ set RETRY_WAIT=15
|
|||||||
set "LOG_DIR=%WORK_DIR%logs\launcher"
|
set "LOG_DIR=%WORK_DIR%logs\launcher"
|
||||||
:: ===========================================
|
:: ===========================================
|
||||||
|
|
||||||
:: 切换到工作目录
|
|
||||||
cd /d "%WORK_DIR%"
|
cd /d "%WORK_DIR%"
|
||||||
title QMT 自动化交易系统 [监控中]
|
title QMT 自动化交易系统 [监控中]
|
||||||
|
|
||||||
:: 创建日志目录
|
|
||||||
if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
|
if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
|
||||||
|
|
||||||
:: 获取当前日期用于日志命名
|
:: 优化日期获取逻辑,防止由于区域设置导致的非法文件名字符
|
||||||
set "TODAY=%date:~0,4%-%date:~5,2%-%date:~8,2%"
|
for /f "tokens=1-3 delims=-/ " %%a in ("%date%") do (
|
||||||
|
set "Y=%%a"
|
||||||
|
set "M=%%b"
|
||||||
|
set "D=%%c"
|
||||||
|
)
|
||||||
|
set "TODAY=%Y%-%M%-%D%"
|
||||||
set "LOG_FILE=%LOG_DIR%\launcher_%TODAY%.log"
|
set "LOG_FILE=%LOG_DIR%\launcher_%TODAY%.log"
|
||||||
|
|
||||||
cls
|
cls
|
||||||
@@ -35,7 +39,6 @@ echo 日志文件: %LOG_FILE%
|
|||||||
echo ==================================================
|
echo ==================================================
|
||||||
|
|
||||||
:LOOP
|
:LOOP
|
||||||
:: 检查重试次数
|
|
||||||
if %RETRY_COUNT% GEQ %MAX_RETRIES% (
|
if %RETRY_COUNT% GEQ %MAX_RETRIES% (
|
||||||
echo [%time%] !!! 达到最大重试次数,系统停止重启 !!! >> "%LOG_FILE%"
|
echo [%time%] !!! 达到最大重试次数,系统停止重启 !!! >> "%LOG_FILE%"
|
||||||
color 0C
|
color 0C
|
||||||
@@ -45,13 +48,37 @@ if %RETRY_COUNT% GEQ %MAX_RETRIES% (
|
|||||||
)
|
)
|
||||||
|
|
||||||
echo [%time%] 正在启动交易引擎 (第 %RETRY_COUNT% 次重启)...
|
echo [%time%] 正在启动交易引擎 (第 %RETRY_COUNT% 次重启)...
|
||||||
echo [%time%] >>> 启动子进程: uv run %SCRIPT_NAME% >> "%LOG_FILE%"
|
:: 注意:这里将 >>> 改成了 ^>^>^> 进行转义,或者直接改用 ===
|
||||||
|
echo [%time%] ^>^>^> 启动子进程: uv run %SCRIPT_NAME% >> "%LOG_FILE%"
|
||||||
|
|
||||||
:: 启动程序 (使用 -u 参数确保输出实时刷新到日志)
|
:: 启动程序 (使用 -u 参数确保输出实时刷新到日志)
|
||||||
|
:: 如果你没有安装 uv,请将 uv run 改为 python
|
||||||
uv run python -u %SCRIPT_NAME% >> "%LOG_FILE%" 2>&1
|
uv run python -u %SCRIPT_NAME% >> "%LOG_FILE%" 2>&1
|
||||||
|
|
||||||
:: 程序退出逻辑
|
|
||||||
set EXIT_CODE=%errorlevel%
|
set EXIT_CODE=%errorlevel%
|
||||||
if %EXIT_CODE% EQU 0 (
|
if %EXIT_CODE% EQU 0 (
|
||||||
echo [%time%] 程序正常关闭。 >> "%LOG_FILE%"
|
echo [%time%] 程序正常关闭。 >> "%LOG_FILE%"
|
||||||
echo 程序运行结束。
|
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
|
||||||
Reference in New Issue
Block a user