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

news2024/12/23 10:32:42

一、什么是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)

创建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('连接成功')

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

订阅账户

from xtquant.xttype import StockAccount

acc = StockAccount('xxxxx')
subscribe_result = xt_trader.subscribe(acc)
print(subscribe_result)

这一步是用来订阅资金账户的,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)

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

在这里插入图片描述

撤单

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

xt_trader.cancel_order_stock(acc, 1082130954)

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

四、如何开通

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

五、总结

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

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

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

相关文章

【人生苦短,我学 Python】进阶篇——异常处理(Day16)

写在前面:大家好!我是【AI 菌】。我热爱AI、热爱分享、热爱开源! 这博客是我对学习的一点总结与记录。如果您也对 深度学习、机器视觉、算法、Python、C 感兴趣,可以关注我的动态,我们一起学习,一起进步~ 我…

Python小姿势 - 可选知识点:

可选知识点: 列表推导式 列表和字典推导式 字典推导式 生成器表达式 带条件的生成器表达式 解析XML 解析JSON 使用Requests和BeautifulSoup爬虫 Python并发编程 Python多线程编程 Python多进程编程 Python异步编程 Python装饰器 Python闭包 Python模块化 Python类和…

PM510V16 3BSE008358R1嵌入式卡件用于励磁系统多用于工业发电

​ PM510V16 3BSE008358R1嵌入式卡件用于励磁系统多用于工业发电 物联网与工业自动化控制系统的联系 当今,物联网可谓是在各大媒体出镜率最高、而且与“智能”联系密切的名词之一。从“管理、控制、智能”的角度来看,其实物联网与工业自动化是一脉相承的…

Kafka技术基础

Apache Kafka发源于LinkedIn,于2011年成为Apache的孵化项目,随后于2012年成为Apache的主要项目之一,是消息队列的一种实现方式,提供消息的持久化。Kafka使用Scala和Java进行编写。Apache Kafka是一个快速、可扩展的、高吞吐、可容…

IEEE-TMI:张孝勇团队开发小鼠精细脑结构自动分割的深度学习算法

近日,复旦大学类脑智能科学与技术研究院青年研究员张孝勇课题组联合德国亥姆霍兹慕尼黑研究中心,在医学图像处理领域顶尖期刊《IEEE医学影像汇刊》(IEEE Transactions on Medical Imaging,TMI) 发表了题为《MouseGAN:用于小鼠大脑…

OpenCV 模板匹配 matchTemplate

一、模板匹配概念 模板匹配是一项在一副图像中寻找与另一幅模板图像最匹配(相似)部分的技术。模板匹配不是基于直方图的,而是通过在输入图像上滑动图像块(模板)同时对比相似度,来对模板和输入图像进行匹配的…

【IoT】如何使用软件加密(文件夹加密工具.exe),并破解工具

目录 第一步:显示隐藏的文件。 第二步:将隐藏文件变成文件夹。 第三步:解密文件。 有时候出差或者有些商务场合,需要对一些敏感文件做一下简单的加密,这样在分享内容的时候,可以起到初步的保护作用。 当…

Windows利用easyBCD装Ubuntu双系统

一、准备材料: 1、easyBCD软件(我用V2.3版本) 2、Ubuntu系统(我用的12.04版本ubuntu-12.04-desktop-i386.iso) 二、配置空闲分区 1、右击“计算机”--->管理--->右击某个自己分配的分区--->选择“压缩卷”…

Deep Bidirectional Language-Knowledge Graph Pretraining论文阅读

Deep Bidirectional Language-Knowledge Graph Pretraining github代码 摘要 最近的工作表明,知识图(KG)可以补充文本数据,提供结构化的背景知识, 为推理提供有用的支架。然而,这些作品并没有经过预先的训练来学习大规模的两种…

央视推荐的护眼灯是哪款?盘点央视推荐的护眼灯排名

护眼灯是生活中最常见的照明工具,许多人担心品质不过关 不合格的护眼灯会造成视损害 建议在选购护眼灯时: 首先看清楚产品的具体标识,其中就包括有产品的生产厂家,生产地址以及他们的产品型号 看产品规格和是否获得了国家的相关…

博睿数据蝉联中国APM市场份额第一,Bonree ONE春季正式版重磅发布

日前,IDC发布《中国IT统一运维软件产品市场跟踪报告,2022H2》,2022下半年中国APM市场环比增长近10%。博睿数据以市场份额达18.28%蝉联APM应用性能监控市场份额第一。 追求卓越,顺势而为 博睿数据作为中国领先的一体化智能可观测平台&#xf…

今天主要谈谈关于申请美国专利的一些问题

进入2021年,国家更多的开始鼓励在国外开展业务的企业去布局国外专利,提升企业海外竞争力。无他,着实是我们在知识产权保护方面起步太晚,已经吃亏了太久,专利掣肘,技术卡脖子,勤勉的为别人打工。…

Domino自带的JSON校验工具

大家好,才是真的好。 JSON数据在Notes/Domino已经变得非常重要。从Domino 10开始,在LotusScript语言中就加入了对JSON数据处理功能。在管理中,我们知道,从Domino 12版本开始就支持Domino自动化配置,也是使用JSON数据作…

利用ESP32-C3实现一个风扇PWM控制器,可网页操作

1简介 这段代码是一个基于ESP32开发板的PWM控制器,可以通过网页输入控制参数并显示在屏幕上,通过PWM输出引脚控制风扇的转速,还可以测量风扇的转速并在屏幕上显示。此外,代码还具备显示当前时间、显示Wi-Fi连接信息等功能。 2函数…

【Git基础】常用git命令(三)

文章目录 1.版本回退1.1 没有commit的情况1.2 已经commit但没有push的情况1.3 已经push到远端仓库的情况 2. 删除文件2.1 从工作区删除文件2.2 使用git rm命令删除文件2.3 永久删除文件2.4 永久删除文件的步骤拆解 3. 查看指定文件的修改3.1 查看文件的所有commit3.2 查看所有c…

亚控组态王与EXCEL通信

先创建一个IO设备:DDE类型 创建一个变量: 创建一个窗口,建立一个文本显示并关联前面建立的变量 先打开一个EXCEL文件(注意:WPS是不兼容的,必须先打开EXCEL文件,否则会报错) …

云原生|kubernetes|rancher-2.6.4安装部署简明手册

前言: rancher是一个比较特殊的开源的kubernetes管理工具,特殊在它是一个名称为k3s的简单kubernetes集群,而该集群是在kubernetes集群内的。 OK,本文将讲述如何在centos7服务器上,在已有的kubernetes-1.23.15集群内,…

基于STM32的电阻、电容测量(NE555芯片RC振荡法)

文章目录 前言一、电路图1.电阻测量公式2.电容测量公式 二、代码实现1.外部中断代码2.定时器中断处理数据 总结 前言 做的一个关于电阻和电容的测量电路,都是比较通用的。经过实际测试,电容测量电路还是可以的,电阻测量电路有一个缺点就是&a…

Prometheus/Metrics监控dubbo线程池状态

网上找了些文章,发现挺少的,下面一些文章有些帮助 https://cloud.tencent.com/developer/article/1800906 https://github.com/apache/dubbo/issues/6625 其中第二篇文有写到,通过dubbo的spi获取DataStore,然后再拿到dubbo的线程…

关于jvm-sandbox-repeater dubbo回放异常的问题处理

还是引流回放的问题,今天测试的同学反馈说他做了流量回放,但是回放的好几个接口报错了,都是抛出来的服务器错误,请联系管理员,与预期的结果不符,但是实际这块的逻辑是没有改动的,所以也只能是du…