feat: restart mini qmt software on working day
This commit is contained in:
parent
2e094d2776
commit
f76b38d1f5
@ -32,6 +32,8 @@ class Config:
|
||||
# XtQuant 相关配置
|
||||
XT_ACCOUNT = "80391818"
|
||||
XT_PATH = r'C:\\江海证券QMT实盘_交易\\userdata_mini'
|
||||
XT_LAUNCHER_PATH = r'C:\\江海证券QMT实盘_交易\\bin.x64\\XtItClient.exe'
|
||||
XT_RESTART_TIME = "09:00"
|
||||
|
||||
# 重连相关配置
|
||||
XT_RECONNECT_INTERVAL = 3600 # 重连尝试间隔(秒)
|
||||
|
@ -1,6 +1,8 @@
|
||||
import schedule
|
||||
import threading
|
||||
import time
|
||||
import subprocess
|
||||
import os
|
||||
from real.xt_trader import XtTrader
|
||||
from flask import Flask, request, abort, jsonify
|
||||
from config import Config
|
||||
@ -169,10 +171,46 @@ def logout_on_trading_day():
|
||||
logger.info("今天不是交易日,跳过登出操作")
|
||||
|
||||
|
||||
def restart_qmt():
|
||||
try:
|
||||
# 检查QMT路径是否存在
|
||||
if not os.path.exists(Config.XT_LAUNCHER_PATH):
|
||||
logger.error(f"QMT启动路径不存在: {Config.XT_LAUNCHER_PATH}")
|
||||
return
|
||||
|
||||
# 先关闭所有QMT进程(XtItClient.exe)
|
||||
try:
|
||||
# Windows下关闭进程
|
||||
kill_cmd = f'taskkill /F /IM XtItClient.exe'
|
||||
result = subprocess.run(kill_cmd, shell=True, capture_output=True, text=True)
|
||||
if result.returncode == 0:
|
||||
logger.info("已关闭所有XtItClient.exe进程")
|
||||
else:
|
||||
logger.warning(f"关闭XtItClient.exe进程时返回码: {result.returncode}, 输出: {result.stdout}, 错误: {result.stderr}")
|
||||
except Exception as e:
|
||||
logger.error(f"关闭QMT进程时发生异常: {str(e)}")
|
||||
|
||||
# 尝试启动QMT软件
|
||||
subprocess.Popen(Config.XT_LAUNCHER_PATH)
|
||||
logger.info(f"已启动QMT软件: {Config.XT_LAUNCHER_PATH}")
|
||||
except Exception as e:
|
||||
logger.error(f"重启QMT软件时发生错误: {str(e)}")
|
||||
|
||||
# 定时任务:在交易日重启QMT软件
|
||||
def restart_qmt_on_trading_day():
|
||||
"""仅在交易日执行QMT软件重启操作"""
|
||||
if BaseTrader.is_trading_date():
|
||||
logger.info("今天是交易日,执行QMT软件重启操作")
|
||||
restart_qmt()
|
||||
else:
|
||||
logger.info("今天不是交易日,跳过QMT软件重启")
|
||||
|
||||
|
||||
def setup_scheduler():
|
||||
# 设置每日任务,仅在交易日执行
|
||||
schedule.every().day.at(Config.MARKET_OPEN_TIME).do(login_on_trading_day)
|
||||
schedule.every().day.at(Config.MARKET_CLOSE_TIME).do(logout_on_trading_day)
|
||||
schedule.every().day.at(Config.XT_RESTART_TIME).do(restart_qmt_on_trading_day)
|
||||
|
||||
# 启动调度线程
|
||||
scheduler_thread = threading.Thread(target=_run_scheduler, daemon=True)
|
||||
|
Loading…
x
Reference in New Issue
Block a user