diff --git a/src/config.py b/src/config.py index 0c20e09..1da0660 100644 --- a/src/config.py +++ b/src/config.py @@ -12,8 +12,10 @@ class Config: SIMULATION_MODE = False # Trading hours - MARKET_OPEN_TIME = "09:20" - MARKET_CLOSE_TIME = "15:10" + # MARKET_OPEN_TIME = "09:20" + # MARKET_CLOSE_TIME = "15:10" + MARKET_OPEN_TIME = "21:40" + MARKET_CLOSE_TIME = "21:35" # Logging LOG_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "logs") @@ -32,8 +34,11 @@ 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_LAUNCHER = r'C:\\江海证券QMT实盘_交易\\bin.x64\\XtItClient.exe' + XT_PROCESS1 = r'miniquote.exe' + XT_PROCESS2 = r'XtMiniQmt.exe' + # XT_RESTART_TIME = "09:00" + XT_RESTART_TIME = "09:37" # 重连相关配置 XT_RECONNECT_INTERVAL = 3600 # 重连尝试间隔(秒) diff --git a/src/trade_server.py b/src/trade_server.py index 37a0a53..de0e4f2 100644 --- a/src/trade_server.py +++ b/src/trade_server.py @@ -174,25 +174,25 @@ def logout_on_trading_day(): def restart_qmt(): try: # 检查QMT路径是否存在 - if not os.path.exists(Config.XT_LAUNCHER_PATH): - logger.error(f"QMT启动路径不存在: {Config.XT_LAUNCHER_PATH}") + if not os.path.exists(Config.XT_LAUNCHER): + logger.error(f"QMT启动路径不存在: {Config.XT_LAUNCHER}") 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相关进程 + for proc_name in [Config.XT_PROCESS1, Config.XT_PROCESS2]: + try: + kill_cmd = f'taskkill /F /IM {proc_name}' + result = subprocess.run(kill_cmd, shell=True, capture_output=True, text=True) + if result.returncode == 0: + logger.info(f"已关闭进程: {proc_name}") + else: + logger.warning(f"关闭进程{proc_name}时返回码: {result.returncode}, 输出: {result.stdout}, 错误: {result.stderr}") + except Exception as e: + logger.error(f"关闭进程{proc_name}时发生异常: {str(e)}") # 尝试启动QMT软件 - subprocess.Popen(Config.XT_LAUNCHER_PATH) - logger.info(f"已启动QMT软件: {Config.XT_LAUNCHER_PATH}") + subprocess.Popen(Config.XT_LAUNCHER) + logger.info(f"已启动QMT软件: {Config.XT_LAUNCHER}") except Exception as e: logger.error(f"重启QMT软件时发生错误: {str(e)}") @@ -208,9 +208,13 @@ def restart_qmt_on_trading_day(): 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) + # 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) + + 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)