当前位置:   article > 正文

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

miniqmt

前言

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

登录客户端

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

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

在这里插入图片描述

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

需要说明一下,QMT客户端在非交易时间,特别是周末,很可能无法登录,这是正常现象,无需大惊小怪,所以,一些重要的测试,最好在交易时段进行。

通信设置

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

在这里插入图片描述

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

  • 行情主站:提供行情数据,在miniQMT模式下,通过xtdata模块调用
  • 交易中心:提供交易接口,在miniQMT模式下,通过xttrader模块调用

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

下载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
  • 1

或者

pip install pandas
  • 1

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

下面,我们开始实战代码,创建一个jupter notebook文件,在其中编写我们的程序。上面提到过,xtquant中最重要两个模块,就是xtdataxttrader,下面分别实战这两部分。

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)
  • 1
  • 2
  • 3
  • 4
  • 5

获取回来的数据是一个字典,每个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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

这里有几个关键对象

  • mini_qmt_path :这是QMT的安装路径,需要选到userdata_mini这个文件夹
  • account:你的QMT账号
  • xt_trader:被创建的交易对象

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

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

在这里插入图片描述

总结

本篇我们通过xtquant连接了QMT客户端,并通过xtdata获取了股票交易数据,通过xttrader连接你的资金账号下单,执行下单操作。

在之后的文章中,会逐个介绍xtquant的每个重要API,必要的时候,会做源码解析。

本文实例代码可以在这里获取:https://github.com/zsrl/miniqmt-demo

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

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

闽ICP备14008679号