当前位置:   article > 正文

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

qmt

一、什么是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(100000, 999999))
xt_trader = XtQuantTrader(path, session_id)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

创建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('连接成功')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

订阅账户

from xtquant.xttype import StockAccount

acc = StockAccount('xxxxx')
subscribe_result = xt_trader.subscribe(acc)
print(subscribe_result)
  • 1
  • 2
  • 3
  • 4
  • 5

这一步是用来订阅资金账户的,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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

在这里插入图片描述

撤单

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

xt_trader.cancel_order_stock(acc, 1082130954)
  • 1

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

四、如何开通

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

五、总结

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/330798
推荐阅读
相关标签
  

闽ICP备14008679号