fix: restart mini qmt
This commit is contained in:
parent
f76b38d1f5
commit
1d4d52c053
@ -12,8 +12,10 @@ class Config:
|
|||||||
SIMULATION_MODE = False
|
SIMULATION_MODE = False
|
||||||
|
|
||||||
# Trading hours
|
# Trading hours
|
||||||
MARKET_OPEN_TIME = "09:20"
|
# MARKET_OPEN_TIME = "09:20"
|
||||||
MARKET_CLOSE_TIME = "15:10"
|
# MARKET_CLOSE_TIME = "15:10"
|
||||||
|
MARKET_OPEN_TIME = "21:40"
|
||||||
|
MARKET_CLOSE_TIME = "21:35"
|
||||||
|
|
||||||
# Logging
|
# Logging
|
||||||
LOG_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "logs")
|
LOG_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "logs")
|
||||||
@ -32,8 +34,11 @@ class Config:
|
|||||||
# XtQuant 相关配置
|
# XtQuant 相关配置
|
||||||
XT_ACCOUNT = "80391818"
|
XT_ACCOUNT = "80391818"
|
||||||
XT_PATH = r'C:\\江海证券QMT实盘_交易\\userdata_mini'
|
XT_PATH = r'C:\\江海证券QMT实盘_交易\\userdata_mini'
|
||||||
XT_LAUNCHER_PATH = r'C:\\江海证券QMT实盘_交易\\bin.x64\\XtItClient.exe'
|
XT_LAUNCHER = r'C:\\江海证券QMT实盘_交易\\bin.x64\\XtItClient.exe'
|
||||||
XT_RESTART_TIME = "09:00"
|
XT_PROCESS1 = r'miniquote.exe'
|
||||||
|
XT_PROCESS2 = r'XtMiniQmt.exe'
|
||||||
|
# XT_RESTART_TIME = "09:00"
|
||||||
|
XT_RESTART_TIME = "09:37"
|
||||||
|
|
||||||
# 重连相关配置
|
# 重连相关配置
|
||||||
XT_RECONNECT_INTERVAL = 3600 # 重连尝试间隔(秒)
|
XT_RECONNECT_INTERVAL = 3600 # 重连尝试间隔(秒)
|
||||||
|
@ -174,25 +174,25 @@ def logout_on_trading_day():
|
|||||||
def restart_qmt():
|
def restart_qmt():
|
||||||
try:
|
try:
|
||||||
# 检查QMT路径是否存在
|
# 检查QMT路径是否存在
|
||||||
if not os.path.exists(Config.XT_LAUNCHER_PATH):
|
if not os.path.exists(Config.XT_LAUNCHER):
|
||||||
logger.error(f"QMT启动路径不存在: {Config.XT_LAUNCHER_PATH}")
|
logger.error(f"QMT启动路径不存在: {Config.XT_LAUNCHER}")
|
||||||
return
|
return
|
||||||
|
|
||||||
# 先关闭所有QMT进程(XtItClient.exe)
|
# 先关闭所有QMT相关进程
|
||||||
try:
|
for proc_name in [Config.XT_PROCESS1, Config.XT_PROCESS2]:
|
||||||
# Windows下关闭进程
|
try:
|
||||||
kill_cmd = f'taskkill /F /IM XtItClient.exe'
|
kill_cmd = f'taskkill /F /IM {proc_name}'
|
||||||
result = subprocess.run(kill_cmd, shell=True, capture_output=True, text=True)
|
result = subprocess.run(kill_cmd, shell=True, capture_output=True, text=True)
|
||||||
if result.returncode == 0:
|
if result.returncode == 0:
|
||||||
logger.info("已关闭所有XtItClient.exe进程")
|
logger.info(f"已关闭进程: {proc_name}")
|
||||||
else:
|
else:
|
||||||
logger.warning(f"关闭XtItClient.exe进程时返回码: {result.returncode}, 输出: {result.stdout}, 错误: {result.stderr}")
|
logger.warning(f"关闭进程{proc_name}时返回码: {result.returncode}, 输出: {result.stdout}, 错误: {result.stderr}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"关闭QMT进程时发生异常: {str(e)}")
|
logger.error(f"关闭进程{proc_name}时发生异常: {str(e)}")
|
||||||
|
|
||||||
# 尝试启动QMT软件
|
# 尝试启动QMT软件
|
||||||
subprocess.Popen(Config.XT_LAUNCHER_PATH)
|
subprocess.Popen(Config.XT_LAUNCHER)
|
||||||
logger.info(f"已启动QMT软件: {Config.XT_LAUNCHER_PATH}")
|
logger.info(f"已启动QMT软件: {Config.XT_LAUNCHER}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"重启QMT软件时发生错误: {str(e)}")
|
logger.error(f"重启QMT软件时发生错误: {str(e)}")
|
||||||
|
|
||||||
@ -208,9 +208,13 @@ def restart_qmt_on_trading_day():
|
|||||||
|
|
||||||
def setup_scheduler():
|
def setup_scheduler():
|
||||||
# 设置每日任务,仅在交易日执行
|
# 设置每日任务,仅在交易日执行
|
||||||
schedule.every().day.at(Config.MARKET_OPEN_TIME).do(login_on_trading_day)
|
# 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.MARKET_CLOSE_TIME).do(logout_on_trading_day)
|
||||||
schedule.every().day.at(Config.XT_RESTART_TIME).do(restart_qmt_on_trading_day)
|
# schedule.every().day.at(Config.XT_RESTART_TIME).do(restart_qmt_on_trading_day)
|
||||||
|
|
||||||
|
schedule.every().day.at(Config.MARKET_OPEN_TIME).do(login)
|
||||||
|
schedule.every().day.at(Config.MARKET_CLOSE_TIME).do(logout)
|
||||||
|
schedule.every().day.at(Config.XT_RESTART_TIME).do(restart_qmt)
|
||||||
|
|
||||||
# 启动调度线程
|
# 启动调度线程
|
||||||
scheduler_thread = threading.Thread(target=_run_scheduler, daemon=True)
|
scheduler_thread = threading.Thread(target=_run_scheduler, daemon=True)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user