2025年【从零开始玩量化17】如何python+QMT完成自动化交易?(全网最详细入门教程)

【从零开始玩量化17】如何python+QMT完成自动化交易?(全网最详细入门教程)一 什么是 QMT 此部分为扫盲内容 有一定了解者可以跳过 概念 它是一款量化交易客户端软件 由一家叫做迅**司出品 可以直接登录你的券商账号进行股票交易 但与同花顺 通信达不同的是 它暴露了基于 python 的交易 API 可以执行程序化交易

大家好,我是讯享网,很高兴认识大家。

一、什么是QMT

此部分为扫盲内容,有一定了解者可以跳过。


讯享网

概念

它是一款量化交易客户端软件,由一家叫做迅**司出品,可以直接登录你的券商账号进行股票交易,但与同花顺/通信达不同的是,它暴露了基于python的交易API,可以执行程序化交易

顺便查了一下迅投这个公司的背景,21年冲击过创业板,后来放弃了。招股说明书链接

界面

以国金版为例,其登录界面如下,不同券商登录界面略有区别(不一定有极简模式

进入软件以后的界面如下,主要分为行情、交易、模型研究、模型交易几个模块,各个券商的QMT界面大同小异。

在这里插入图片描述

二、为什么使用QMT

以前,自动化交易一直是散户的痛,大部分的自动化接口,都只针对机构,散户可以使用的方法很少,虽然有类似easyTrader的开源库解决过类似的问题,但是通过模拟按键的方式,我也尝试改造过,但不是很稳定。

而QMT,是直接调用券商接口,这就打通了量化交易最后这一环,暴露python API,可以用程序直接调用,这就很大程度上提升了自动化交易的稳定性,可编程性也很高。

三、QMT vs miniQMT(极简模式)

miniQMT是QMT的极简模式,这个模式一些券商有,一些券商没有。如何分辨有没有,就是看登录界面上有没有极简模式这个选项,当客户端以极简模式启动时,界面如下:
在这里插入图片描述

miniQMT与QMT最大的不同就是:

QMT模式需要将程序写在QMT客户端软件里运行;

而miniQMT模式,直接可以使用xtquant这个python包,在软件之外,写python程序与QMT客户端连接,进行程序化下单。聪明的朋友们应该看懂了,这样QMT客户端就完全变成一个交易终端了,我们的量化程序,完全可以独立于QMT运行,只要保证极简客户端运行着就好了。这就很大的释放了变成能力。

三、代码实战

多说无益,上代码,这里以miniQMT(极简模式)进行演示

下载xtquant

首先我们需要下载xtquant这个python包,我推荐从迅投官网下载,下面是下载链接

xtquant下载:http://docs.thinktrader.net/vip/pages/633b48/

在这里插入图片描述
下载最新版本即可,下载之后,将这个包放在你自己的python项目里,保证使用import可以引到。

官网的例子还是相对复杂,这里还是从最简单的示例开始,抽丝剥茧

创建交易对象

import random from xtquant.xttrader import XtQuantTrader path = r'D:\国金证券QMT交易端\userdata_mini' session_id = int(random.randint(, )) xt_trader = XtQuantTrader(path, session_id) 

讯享网

创建xt_trader对象需要两个参数:
path:路径,就是安装QMT软件的文件下下的/userdata_mini文件夹。
session_id : 回话id,当创建多个xt_trader对象时,需要不同,这里我们用6位随机数字生成。

连接QMT客户端

讯享网xt_trader.start() connect_result = xt_trader.connect() print(connect_result) if connect_result == 0: print('连接成功') 

执行xt_trader.connect(),需要保证已登录QMT极简模式并保持客户端运行状态,即可连接成功。非极简模式进入客户端,是连接不成功了,亲测。

订阅账户

from xtquant.xttype import StockAccount acc = StockAccount('xxxxx') subscribe_result = xt_trader.subscribe(acc) print(subscribe_result) 

这一步是用来订阅资金账户的,xxxxx替换成你正在登录的资金账户号,订阅成功subscribe_result会是0,不成功是-1

下单

讯享网from xtquant import xtconstant stock_code = '000429.SZ' order_id = xt_trader.order_stock(acc, stock_code, xtconstant.STOCK_BUY, 100, xtconstant.FIX_PRICE, 7.5) print(order_id) 

xtconstant.STOCK_BUY表单下单类型是买入,xtconstant.FIX_PRICE代表报价类型是限价,执行成功后,在miniQMT终端里,就直接可以看到委托记录,这就可以确认,我们的委托成功了。方法会返回订单变化,即下图中的订单编号。

在这里插入图片描述

撤单

可直接用订单编号撤单,执行以下方法,注意订单编号是数字格式

xt_trader.cancel_order_stock(acc, ) 

这样,刚才下的单就撤掉了
在这里插入图片描述

四、如何开通

目前,QMT需要找券商公司开通,具体开通方法及要求,可以参看《QMT开通规则分享》

五、总结

本文介绍了QMT的基本概念和使用方法,并用miniQMT模式进行了实战,感觉相当好用,程序化交易不再是瓶颈了。后面会持续使用分享用法。

小讯
上一篇 2025-03-15 09:54
下一篇 2025-03-16 23:16

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/57301.html