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

这篇具有很好参考价值的文章主要介绍了【从零开始玩量化17】如何python+QMT完成自动化交易?(全网最详细入门教程)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是QMT

此部分为扫盲内容,有一定了解者可以跳过。

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

概念

它是一款量化交易客户端软件,由一家叫做迅投公司出品,可以直接登录你的券商账号进行股票交易,但与同花顺/通信达不同的是,它暴露了基于python的交易API,可以执行程序化交易

顺便查了一下迅投这个公司的背景,21年冲击过创业板,后来放弃了。招股说明书链接

界面

以国金版为例,其登录界面如下,不同券商登录界面略有区别(不一定有极简模式

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

进入软件以后的界面如下,主要分为行情、交易、模型研究、模型交易几个模块,各个券商的QMT界面大同小异。

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

二、为什么使用QMT

以前,自动化交易一直是散户的痛,大部分的自动化接口,都只针对机构,散户可以使用的方法很少,虽然有类似easyTrader的开源库解决过类似的问题,但是通过模拟按键的方式,我也尝试改造过,但不是很稳定。

而QMT,是直接调用券商接口,这就打通了量化交易最后这一环,暴露python API,可以用程序直接调用,这就很大程度上提升了自动化交易的稳定性,可编程性也很高。

三、QMT vs miniQMT(极简模式)

miniQMT是QMT的极简模式,这个模式一些券商有,一些券商没有。如何分辨有没有,就是看登录界面上有没有极简模式这个选项,当客户端以极简模式启动时,界面如下:
【从零开始玩量化17】如何python+QMT完成自动化交易?(全网最详细入门教程)

miniQMT与QMT最大的不同就是:

QMT模式需要将程序写在QMT客户端软件里运行;

而miniQMT模式,直接可以使用xtquant这个python包,在软件之外,写python程序与QMT客户端连接,进行程序化下单。聪明的朋友们应该看懂了,这样QMT客户端就完全变成一个交易终端了,我们的量化程序,完全可以独立于QMT运行,只要保证极简客户端运行着就好了。这就很大的释放了变成能力。

三、代码实战

多说无益,上代码,这里以miniQMT(极简模式)进行演示

下载xtquant

首先我们需要下载xtquant这个python包,我推荐从迅投官网下载,下面是下载链接

xtquant下载:http://docs.thinktrader.net/vip/pages/633b48/

【从零开始玩量化17】如何python+QMT完成自动化交易?(全网最详细入门教程)
下载最新版本即可,下载之后,将这个包放在你自己的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终端里,就直接可以看到委托记录,这就可以确认,我们的委托成功了。方法会返回订单变化,即下图中的订单编号。

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

撤单

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

xt_trader.cancel_order_stock(acc, 1082130954)

这样,刚才下的单就撤掉了
【从零开始玩量化17】如何python+QMT完成自动化交易?(全网最详细入门教程)

四、如何开通

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

五、总结

本文介绍了QMT的基本概念和使用方法,并用miniQMT模式进行了实战,感觉相当好用,程序化交易不再是瓶颈了。后面会持续使用分享用法。文章来源地址https://www.toymoban.com/news/detail-478702.html

到了这里,关于【从零开始玩量化17】如何python+QMT完成自动化交易?(全网最详细入门教程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何从零开始搭建自动化测试框架?详细步骤给到你

    目录 前言 1、确定需求 2、选择测试工具 3、选择编程语言 4、设计测试框架结构 5、编写测试用例 6、编写测试脚本 7、执行自动化测试 8、分析测试结果 9、设计测试用例 10、组织测试数据 11、选择开发工具 12、安排测试计划 13、提高测试覆盖率 总结 搭建自动化测试框架是一

    2023年04月09日
    浏览(68)
  • 从零开始学python(十三)爬虫工程师自动化和抓包

    回顾之前讲述了python语法编程 必修入门基础和网络编程,多线程/多进程/协程等方面的内容,后续讲到了数据库编程篇MySQL,Redis,MongoDB篇,和机器学习,全栈开发,数据分析,爬虫数据采集前面没看的也不用往前翻,系列文已经整理好了: 1.跟我一起从零开始学python(一)

    2024年02月14日
    浏览(47)
  • 如何高效的学习接口自动化测试?从零开始学习接口自动化测试:选择合适的学习资源和编程语言

    目录 引言: 一、学习前的准备 二、选择合适的学习资源 三、实践中学习 四、总结 在日常的软件开发过程中,接口自动化测试是一个非常重要的环节。接口自动化测试可以帮助我们快速准确地检测出软件中的缺陷,提高软件的质量和稳定性。但是,要学习接口自动化测试并

    2024年02月06日
    浏览(68)
  • 【Web项目实战】从零开始学习Web自动化测试:用Python和Selenium实现网站登录功能

    B站首推!2023最详细自动化测试合集,小白皆可掌握,让测试变得简单、快捷、可靠 https://www.bilibili.com/video/BV1ua4y1V7Db 目录 1.环境搭建

    2024年02月06日
    浏览(70)
  • 从零开始学习Python控制开源Selenium库自动化浏览器操作,实现爬虫,自动化测试等功能(一)

    介绍Selenium : Selenium是一个用于自动化浏览器操作的开源工具和库。它最初是为Web应用测试而创建的,但随着时间的推移,它被广泛用于Web数据抓取和网页自动化操作。Selenium 支持多种编程语言,包括Python,Java,C#等。 这里我们主要实现采用Python的方式 Selenium 的主要特点和

    2024年01月22日
    浏览(76)
  • 【从零开始玩量化11】夏普比率(与信息比率的区别)

    上篇文章写了信息比率,这篇文章解释下夏普比率。 这次不用聚宽的定义了,用维基百科的更加精准。 先回顾一下,信息比率的定义: 在看一下夏普比率的定义: 细心的朋友们可能已经发现了,感觉没啥区别啊!对,计算方法其实没区别,那区别是啥,区别就是 Rb 。 我们

    2024年02月16日
    浏览(45)
  • 【从零开始vnpy量化投资】十. 使用simnow进行模拟盘交易

    【从零开始vnpy量化投资】十. 使用simnow进行模拟盘交易 在正式开始实盘交易之前,我们如何验证策略是否真的如回测表现的一样。这时我们就需要使用与实盘一致的方式进行测试。模拟盘服务器的主要用途就是提供一个与正式交易服务器完全一致的交互方式。通过从服务器订

    2024年02月11日
    浏览(45)
  • QMT量化交易网格交易 源码

    想必大家在炒股的过程中都会遇到以下三个问题,第一个是股市大部分时间都是震荡的。 我们都知道,A股市场由于自身的特点,用通俗的话讲就是牛市来的比较快,熊市走的相对比较慢,盘整的时间占大多数,统计数字表明震荡的行情大概占A股市场80%的时间, 对于我们普通

    2024年02月02日
    浏览(57)
  • 【从零开始vnpy量化投资】十一. 实盘接入测试与正式实盘

    【从零开始vnpy量化投资】十一. 实盘接入测试与正式实盘 本篇主要讲解如何使用vnpy进行实盘交易,由于上一节我们已经学习了模拟盘运行,如果一切顺利的话,只需要通过穿透测试,就可以正式部署实盘了。 这里笔者推荐读者尽量多联系不同期货公司的业务员或者居间人,

    2024年02月07日
    浏览(36)
  • Pytorch从零开始实战17

    本系列来源于365天深度学习训练营 原作者K同学 本文基于Jupyter notebook,使用Python3.8,Pytorch1.8+cpu,本次实验目的是了解生成对抗网络。 生成对抗网络(GAN)是一种深度学习模型。GAN由两个主要组成部分组成:生成器和判别器。这两个部分通过对抗的方式共同学习,使得生成器

    2024年01月20日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包