分享一个自动登录miniQMT的Python方法,建议收藏

用miniQMT自动化交易的时候,如果没有登录miniQMT那后面写的策略都白搭,无法运行。所以今天分享一个花姐写的自动登录miniQMT的脚本。

开始讲怎么使用之前我们先看看效果

这个脚本要怎么使用呢?

首先我们需要手动登录QMT然后用微信或者其它截图软件截取3个图片,并分别保存为"pwd.png、check.png、buy.png",在截取图片②的时候一定要用未勾选状态下的截图,不然到时候脚本就直接登录大QMT了。如下图所示

把3个图片放到项目根目录以后,然后在把脚本放到你的Python项目里,接下来在脚本最上面填写配置信息,把QMT_PATH和Password替换成你自己的QMT目录和帐号密码。

最后通过import就可以使用了,比如

python 复制代码
import start_miniQMT

start_miniQMT.start_miniQMT()

start_miniQMT会返回一个bool值,如果返回True说明miniQMT启动成功了,返回False说明启动失败了需要我们手动操作下(花姐测试了几次返回False的概率基本上为0),为了以防万一大家也可以增加个飞书消息提醒或者邮件提醒之类的功能。

接下来分析下脚本代码:

需要用到的库有:psutil、pyautogui、pillow、opencv-python 其中pillow、opencv-pythonpyautogui依赖库。 可以通过以下脚本安装:

python 复制代码
pip install psutil pyautogui pillow opencv-python

首先我定义了一个is_process_running的方法来判断当前是不是大QMT在运行,如果是就返回True

python 复制代码
def is_process_running(name):
    for proc in psutil.process_iter(['name']):
        try:
            if proc.info['name'] and proc.info['name'].lower() == name.lower():
                return True
        except (psutil.NoSuchProcess, psutil.AccessDenied):
            continue
    return False

如果大QMT在运行就直接用proc.kill()的方法把它关闭

python 复制代码
def close_running_process(name):
    for proc in psutil.process_iter(['name']):
        if proc.info['name'] and proc.info['name'].lower() == name.lower():
                proc.kill()

然后通过subprocess.Popen(QMT_PATH, shell=True)的方法打开QMT的登录界面。 接下来调用pyautogui来模拟登录

python 复制代码
def login_miniQMT():
    # 这里可以添加登录miniQMT的代码
    print("打开miniQMT")
    subprocess.Popen(QMT_PATH, shell=True)
    #  等待密码输入框出现(最多等60秒)
    if not wait_for_image("pwd.png"):
        print("启动 QMT 超时,未检测到密码输入框,请检查软件是否正常启动")
        return False
    print("QMT登录界面已打开")
    
    find_and_click("pwd.png")  # 点击密码输入框
    time.sleep(1)  # 等待1s
    # 输入密码
    pyautogui.write(Password, interval=0.31) 
    time.sleep(1)  # 等待1s
    find_and_click("check.png",confidence=0.9)  # 点击独立交易
    pyautogui.press('enter')  # 模拟按下回车键
    if not wait_for_image("buy.png"):
        print("等待登录超时,未检测到买入按钮,请检查软件是否正常启动")
        # return False
    print("QMT已经登录")
    if test_miniQMT_is_connected():
        return True
    else:
        print("miniQMT登录失败,请手动登录")
        return False

最后通过test_miniQMT_is_connected再次判断下miniQMT是否可用,可用就返回True不可用就告诉用户自己手动登录下

python 复制代码
def test_miniQMT_is_connected():
    try:
        xtdata.connect()
        print("miniQMT连接成功")
        return True
    except Exception as e:
        print(f"miniQMT连接失败: {e}")
        return False

这样,一个 免手动输入密码、免点击、秒开 miniQMT 的自动化方案就搞定了。 以后写策略就不用先去点来点去了,直接 import 一行代码,QMT 乖乖帮你登录好。

相关推荐
techdashen24 分钟前
Go设计取舍之四: map不变时能否并发修改不同value
开发语言·后端·golang
朱容zr3331331 小时前
为什么推荐使用自增主键?使用UUID作为主键的优缺点是什么?
java·运维·数据库·后端·mysql·面试·性能优化
用户608186527901 小时前
一文吃透 Avalonia 布局容器|Grid 到 UniformGrid 核心用法 + 语法糖实战
后端
Ai拆代码的曹操2 小时前
Dubbo 线程池爆满排坑:Linux 用户线程数限制,一个容易被忽略的根因
后端·源码阅读
不吃辣4902 小时前
vibe coding | 如何做一个 AI 音乐生成工具?
java·人工智能·后端·ai·ai编程
坏心思2 小时前
布隆过滤器太难删除?深入理解布谷鸟过滤器:原理、源码、性能对比与工程选型
后端
就改了2 小时前
MyBatis核心类用法详解
java·spring boot·后端·mybatis
城管不管2 小时前
重生——第五次面试2026.8.1一面
java·数据库·后端·ai·面试·职场和发展·agent
SkyStream2 小时前
无人机系列-篇三-AI视频识别接入架构与优化
后端
SkyStream2 小时前
无人机系列-篇二-ZLMediaKit多路流管理与分发
后端