【miniQMT实盘量化2】与客户端建立连接

  • Post author:
  • Post category:其他




前言

上篇从概念上介绍了miniQMT和它的优势,本篇开始实操的第一步:连接客户端,让你知其然,也只其所以然,话不多说,开干!



登录客户端

一切的开始,我们要首先保证QMT极简版客户端的登录,原理也很简单,真正提供行情和交易接口的服务,在客户端中,xtquant包只是与客户端建立通信。

一定要保证客户端成功登录!!!不要犯低级错误!!!然后去问别人为什么不好用!

在这里插入图片描述

如上图,一定要勾选【极简模式】选项,然后输入账号密码登录。

需要说明一下,QMT客户端在

非交易时间

,特别是

周末

,很可能无法登录,这是正常现象,无需大惊小怪,所以,一些重要的测试,最好在交易时段进行。



通信设置

可以看到,登录界面左下角有个【通信设置】按钮,我们点开看一下。

在这里插入图片描述

这里默认是不需要我们修改的,

默认即可

,但我们可以通过这里理解一下,QMT与云端连接的有两部分:【行情主站】和【交易中心】

  • 行情主站:提供行情数据,在miniQMT模式下,通过

    xtdata

    模块调用
  • 交易中心:提供交易接口,在miniQMT模式下,通过

    xttrader

    模块调用

至于

xtdata



xttrade

分别是什么,我后面会详细介绍。



下载XtQuant

下载地址:

http://docs.thinktrader.net/vip/pages/633b48/

在这里插入图片描述

好,现在我们聚焦到

xtquant

这个东西,它是一个Python包,可以下载下来使用。

需要说明的是,迅投并没有把包发布到PyPi,所以我们不能使用

pip install

来安装,只能手动下载,放到我们Python项目的根目录下,作为本地包,引入使用。

关于Python包和模块的概念,不是本系列文章的解释重点,属于Python基础部分,若这方面知识体系有缺失的朋友,建议找渠道学习一下,最简单快速的方式,就是让ChatGPT教你,它这方面贼6。

那,

xtquant

是做什么的呢?可以将

xtquant

理解为操作miniQMT的一组API方法,通过调用xtquant中的方法,我们可以实现行情获取、下单指令等操作,以实现我们的策略。


xtquant

的调用,并不需要编写在QMT软件内部,只需要保证QMT极简模式已登录,在任何可以执行Python的环境里,都可以调用

xtquant

但,需要保证的是,

xtquant

的调用程序,与QMT软件在同一个操作系统中,目前官方提供的接口,不支持RPC远程调用。



构建本地项目

不管你用什么工具,Python的项目应该会搭建吧,为了写这个系列文章,我再Github上建一个。

在这里插入图片描述

可以看到,把下载下来的

xtquant

放到我们项目的根文件夹,这样就可以引用到了。

注意,因为xtquant中用到了

pandas

作为数据的描述结构,所以我们这里要安装一下

pandas

poetry add pandas

或者

pip install pandas

这里取决于你用了什么包管理器作为工具,对这方面缺乏了解的话,就默认用

pip

下面,我们开始实战代码,创建一个jupter notebook文件,在其中编写我们的程序。上面提到过,

xtquant

中最重要两个模块,就是

xtdata



xttrader

,下面分别实战这两部分。



xtdata


xtdata

是数据获取接口,我们可以实现数据的获取,下载,订阅等功能。

下面是一个简单的例子,保证我们的QMT客户端成功登录后,下面这个接口即可调通。

from xtquant import xtdata

xtdata.download_history_data2(stock_list=['600519.SH'], period='1d')
res = xtdata.get_market_data(stock_list=['600519.SH'], period='1d')
print(res)

获取回来的数据是一个字典,每个key对应的值,是一个

pandas.DataFrame

对象,我们可以根据我们的需要,处理数据结果。

在这里插入图片描述

对于

xtdata

更详细的介绍,以后我们再说,这里先有个简单的印象,可以理解为,所有跟数据获取相关的API都在这个模块里。



xttrader


xttrader

是交易相关的模块,我们可以用它来下单,撤单等。

下面是个简单的例子,一个链接客户端并下单的例子

import random

from xtquant.xttype import StockAccount
from xtquant.xttrader import XtQuantTrader
from xtquant import xtconstant

# miniQMT安装路径
mini_qmt_path = r'D:\国金证券QMT交易端\userdata_mini'
# QMT账号
account = 'xxxx'
# 创建session_id
session_id = int(random.randint(100000, 999999))
# 创建交易对象
xt_trader = XtQuantTrader(mini_qmt_path, session_id)
# 启动交易对象
xt_trader.start()
# 连接客户端
connect_result = xt_trader.connect()

if connect_result == 0:
    print('连接成功')
# 创建账号对象
acc = StockAccount(account)
# 订阅账号
xt_trader.subscribe(acc)
# 下单
res = xt_trader.order_stock(acc, stock_code='600000.SH', order_type=xtconstant.STOCK_BUY, order_volume=100, price_type=xtconstant.FIX_PRICE, price=7.44)

res

这里有几个关键对象

  • mini_qmt_path :这是QMT的安装路径,需要选到

    userdata_mini

    这个文件夹
  • account:你的QMT账号
  • xt_trader:被创建的交易对象

连接成功后,就可以愉快的下单了。

注意:在非交易时间,很可能会委托失败,请及时查看客户端中的信息,失败会在消息中显示。

在这里插入图片描述



总结

本篇我们通过

xtquant

连接了QMT客户端,并通过

xtdata

获取了股票交易数据,通过

xttrader

连接你的资金账号下单,执行下单操作。

在之后的文章中,会逐个介绍

xtquant

的每个重要API,必要的时候,会做源码解析。

本文实例代码可以在这里获取:

https://github.com/zsrl/miniqmt-demo

目前,QMT需要找券商公司开通,具体开通方法及要求,可以参看

《QMT开通规则分享》



版权声明:本文为u010214511原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。