【miniQMT实盘量化2】与客户端建立连接 您所在的位置:网站首页 可转债量化交易源代码 【miniQMT实盘量化2】与客户端建立连接

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

2024-07-17 19:50| 来源: 网络整理| 查看: 265

前言

上篇从概念上介绍了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开通规则分享》



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有