🚀 AI 一键生成 qmt 策略代码

miniQMT全推行情隔日收不到数据怎么办?如何实现自动重启免密登录?

qmt | 发布时间: 2026/5/27
以下内容由 EasyQuant 生成。

问题描述

subscribe_whole_quote 隔天收不到数据,必须重启 miniQMT 才能解决

【国金证券 QMT】

使用原生 python 时,我发现在开着 miniQMT 不关的情况下,第二天即使先 xtdata.unsubscribe_quote 取消所有当前订阅再 xtdata.subscribe_whole_quote 重新订阅,也收不到任何数据。这个时候如果重启 miniQMT 客户端才可以恢复正常,重新收到数据。

原先的 xtdata.subscribe_quote 订阅单个行情的时候,好像保持 miniQMT 一直开着就可以每天都正常收到数据。
所以我现在有以下几个疑问:

(1)正常使用 miniQMT 时,可以长期开着不关吗?如果可以的话,那为啥第二天 xtdata.subscribe_whole_quote 就收不到数据了呢?

(2)如果日常使用就是要每天重启 miniQMT 的话,官方有没有推荐的脚本可以实现免密码登录呢?

希望能有 QMT PM 或其他大佬解答下,谢谢

解决方案

针对您在使用 miniQMT 时遇到的 subscribe_whole_quote 隔日断流问题,以下是详细的解答和解决方案:

1. 正常使用 miniQMT 时,可以长期开着不关吗?

强烈建议每天定时重启,不要长期开着不关。

原因分析:

  • 券商服务器夜间清算: 券商柜台和行情服务器在夜间(通常是晚上到凌晨)会进行日终清算和系统维护。在这个过程中,服务器会主动断开所有的客户端连接。
  • 全推行情的特殊性: subscribe_whole_quote(全市场行情推送)占用极大的内存和网络带宽。当夜间连接断开后,虽然底层的 xtdata 可能会尝试重连,但全推行情的底层状态机、内存缓存往往无法完美恢复,导致第二天即使重新调用订阅接口,也无法正常接收数据。而单只股票的订阅(subscribe_quote)由于数据量小、状态简单,重连恢复的成功率较高。
  • 内存泄漏风险: 长期运行全推行情容易在本地积累大量缓存,导致 miniQMT 客户端内存占用过高甚至卡死。

最佳实践: 每天早上(如 8:30 左右)通过脚本自动关闭并重新启动 miniQMT 客户端,以确保获取到最新、最稳定的行情和交易连接。

2. 官方有没有推荐的脚本可以实现免密码登录?

出于资金安全和合规的考虑,官方没有提供直接绕过密码登录的 API 接口。但是,量化开发者通常会使用 Python 的 UI 自动化库(如 pyautoguipywinauto)配合 Windows 任务计划程序来实现自动登录。

以下是一个基于 pyautogui 的自动化登录脚本示例思路:

自动化登录脚本示例 (Python)

首先,需要安装依赖库:

pip install pyautogui

然后编写自动启动并登录的脚本 auto_login.py

import os
import time
import pyautogui
import subprocess

def restart_miniqmt():
    # 1. 杀掉旧的 miniQMT 进程
    print("正在关闭旧的 miniQMT 进程...")
    os.system("taskkill /F /IM XtQuantClient.exe")  # 请根据实际进程名修改
    time.sleep(3)

    # 2. 启动 miniQMT 客户端
    qmt_path = r"D:\国金证券QMT交易端\XtQuantClient.exe"  # 替换为你的实际路径
    print("正在启动 miniQMT...")
    subprocess.Popen(qmt_path)
    
    # 3. 等待登录界面加载 (根据电脑性能调整等待时间)
    time.sleep(15)
    
    # 4. 模拟输入密码并登录
    # 假设启动后焦点默认在密码输入框
    password = "YourPassword123"  # 替换为你的实际密码
    print("正在输入密码...")
    pyautogui.typewrite(password, interval=0.1)
    time.sleep(1)
    
    # 模拟按下回车键登录
    pyautogui.press('enter')
    print("登录指令已发送!")

if __name__ == "__main__":
    restart_miniqmt()

部署建议:

  1. 保存密码: 大部分券商的 QMT 客户端登录界面有“记住账号”的选项,请勾选该选项,这样脚本启动时只需要输入密码即可。
  2. Windows 任务计划程序: 打开 Windows 的“任务计划程序”,创建一个基本任务,设置为每天早上(例如 08:40)执行上述 Python 脚本。
  3. 焦点问题: 使用 pyautogui 时,请确保脚本运行时电脑没有被其他全屏程序占用焦点,否则密码可能会输入到错误的地方。如果需要更稳定的后台点击,可以学习使用 pywinauto 库通过窗口句柄(Handle)来发送文本。

通过每天盘前自动重启 miniQMT,可以彻底解决 subscribe_whole_quote 隔日断流的问题,同时保证交易系统的稳定性。