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

news2024/11/18 5:46:56

前言

上篇从概念上介绍了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

或者

pip install pandas

这里取决于你用了什么包管理器作为工具,对这方面缺乏了解的话,就默认用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)

获取回来的数据是一个字典,每个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开通规则分享》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/756717.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

deeplabv3+源码之慢慢解析 第二章datasets文件夹(2)voc.py--VOCSegmentation类

系列文章目录 第一章deeplabv3源码之慢慢解析 根目录(1)main.py–get_argparser函数 第一章deeplabv3源码之慢慢解析 根目录(2)main.py–get_dataset函数 第一章deeplabv3源码之慢慢解析 根目录(3)main.py–validate函数 第一章deeplabv3源码之慢慢解析 根目录(4)main.py–mai…

MySQl数据库第八课-------SQL命令查询-------主要命脉

作者前言 欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com —————————————————————————————— 目录 查询数据 条件 逻辑运算符 模糊查询 范围查询 in 判断空 UNION 排序 聚合 分组:group by —————————…

安卓进度条:ProgressBar和Seekbar

一、ProgressBar进度条介绍 ProgressBar 是 Android 中的一个进度条控件,用于显示正在进行的任务的进度。它可以以水平或圆形的形式展示进度,并提供了多种样式和属性来满足不同的需求。 相关属性: android:progress:设置进度条的…

LangChain大型语言模型(LLM)应用开发(六):Agents

LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互&#x…

【Linux指令集】---zip指令(超详细)

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【Linux专栏】🎈 本专栏旨在分享学习Linux的一点学习心得,欢迎大家在评论区讨论💌 演示环境&#xff1…

DevOps系列文章 之 pipeline 流水线:企业微信群通知消息

部署流程 开发环境Jenkins的job进行编译-打包-build成镜像-推送到镜像私有仓库-部署开发环境-(开发自测)-自测通过-提测。 版本管理: 构建的过程: 开发环境通过验证,则点击“Yes”,没有则Abort。点击Yes后…

在Linux系统中,如何搭建DNS服务

如何搭建DNS服务 要在Linux系统上搭建DNS服务,你可以按照以下步骤进行操作: 1.安装BIND软件包: sudo yum install bind bind-utils2.配置主DNS服务器: 打开/etc/named.conf文件,编辑DNS服务器的配置。根据你的域名和…

122、仿真-基于51单片机的电量监测电压电流和温度报警系统设计(Proteus仿真+程序+流程图+配套资料等)

方案选择 单片机的选择 方案一:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源足够用于本次设计。STM32F103系列芯片最高工作频率可达72MHZ,在存储器的01等等待周期仿真时可达到1.25Mip/MHZ(Dhrystone2.1)。内部128k字节…

自然语言处理(扩展学习1):Scheduled Sampling(计划采样)与2. Teacher forcing(教师强制)

自然语言处理(扩展学习1):Scheduled Sampling(计划采样)与2. Teacher forcing(教师强制) 作者:安静到无声 个人主页 作者简介:人工智能和硬件设计博士生、CSDN与阿里云开发者博客专家&#xff0…

C/C++动态内存开辟(详解)

目录 一,mallloc 函数参数: 函数原理: 二,calloc 函数参数: 函数原理: 三,realloc 函数参数: 函数原理: 五,小结 2)对开辟空间的越界访问 3&#x…

cnn分类图像cifar10

使用CNN模型来分类图像,数据集采用的cifar10,cifar10共有6万张,这些图像共分为10类。 命名的格式大概是这样的:0_19761.jpg,它的第一个数字表示的就是图像所属的类,分成清楚的就知道了,第0类就是…

Flutter:EasyLoading(loading加载、消息提示)

前言 官方虽然提供了内置的加载指示器和提示信息,但是功能比较简陋,这里推荐:flutter_easyloading CircularProgressIndicator CircularProgressIndicator()加粗样式 ScaffoldMessenger.of(context).showSnackBar(const SnackBar(// 提示…

MySQL(三)SQL优化、Buffer pool、Change buffer

MySQL系列文章 MySQL(一)基本架构、SQL语句操作、试图 MySQL(二)索引原理以及优化 MySQL(三)SQL优化、Buffer pool、Change buffer MySQL(四)事务原理及分析 MySQL(五&a…

泛积木-低代码 搭建 增删改查

文章首发于 增删改查 。 这里我们以增删改查作为示例,演示下从页面创建到各个功能齐全。创建页面的时候,建议接口先写好,当然也可以一边联调一边写接口,当前对增删改查提供以下测试接口: 测试接口 /contactsList 列…

【数据结构】非线性结构之树结构(含堆)

前言 前面的三篇文章已经将线性结构讲述完毕了,下面的文章将会为大家将讲点新东西:非线性结构中的树结构。萌新对这里的知识点相对陌生,建议反复观看!! 关于线性结构的三篇文章放在下面: 线性表之顺序表 线…

数组与指针

博客内容:数组与指针 文章目录 一、 数组?指针?1.区别与联系大小赋值存储位置 二、指针数组、数组指针?二维数组和二级指针&数组名与数组的区别总结 一、 数组?指针? 数组 相同类型数据的集合 指针 指…

谷歌Bard更新:支持中文提问和语音朗读

ChatGPT不断更新功能,从GPT-3到3.5,再到GPT-4,甚至最新的plus版已经支持图像处理和图表生成,而谷歌Bard却自从推出后就一直很安静,没有什么大动作。眼见被ChatGPT、Claude甚至是文心一言抢去了风头,自然心有…

springcache的使用(小白也看得懂)

简介 SpringCache整合Redis可以使用Spring提供的Cacheable注解来实现对Redis的缓存操作。使用这种方式可以轻松地在应用程序中启用缓存,并且不需要手动编写访问Redis的代码。在配置文件中需要配置Redis的连接信息以及缓存管理器。使用这种方式可以做到轻松配置&…

C++报错:二进制“心<“没有找到接受“std:string“类型的右操作数的运算符(或没有可接受的转换)

1、问题&#xff1a;在进行二维数组的相关计算时报错&#xff1a; 二进制"心<"没有找到接受"std:string"类型的右操作数的运算符(或没有可接受的转换) 2、原因&#xff1a;没有加入头文件——String; 3、解决办法&#xff1a;加上头文件——String; 4、…

GNN学习笔记:A Gentle Introduction to Graph Neural Networks

原文地址&#xff1a; https://distill.pub/2021/gnn-intro/ 不同形式来源的图 Images as graphs 论文中提到将图像建模为一张拓扑图的方法是将图像的每一个像素看作图的一个结点&#xff0c;并将单个像素结点与其相邻的所有像素之间建立一条边。 每一个非边缘的像素结点具…