【无标题】

QMT是一个集行情显示、投资研究和交易于一体的量化平台,支持Python和VBA策略。文章详细介绍了Python运行机制、策略运行机制和交易函数运行,展示了QMT如何利用Python进行量化交易和自动化的信号处理。
摘要由CSDN通过智能技术生成

QMT的全称是QuantitativeMulti-marketTradingSystem,即量化多市场交易系统。QMT是一款专门针对券商、期货公司、信托等机构的高净值客户开发设计的集行情显示、投资研究、产品交易于一身,并自备完整风控系统的综合性平台。

QMT支持股票、期货、期权、ETF等多种市场和交易类型,支持Python和VBA两种语言编写策略,并提供多种算法交易、组合交易、网格交易等功能。QMT还支持全内存极速交易,超高速行情服务,增强型个性化交易,实盘级量化交易,多维度风控管理等优势服务。

QMT系统与其他普通股票软件最大的不同点就是其提供历史数据下载、模型编辑、模型回测、模型交易、算法交易及交易风控等完整量化交易功能。通过QMT系统,投资者可以快速的将自己的转化为计算机代码,形成自己的交易策略,让计算机帮助投资者实现策略的回测检验并实现无人值守自动化交易。

在量化策略编写语言的支持上,QMT系统目前支持两种:VBA和Python。现在很多券商都在逐步布局QMT、 mini、Ptrade这样的量化金融工具。比如我比较熟悉的国J、国X、银H、国S、国Y等,都是可以给投资者免费提供QMT权限,只不过各家的开通门槛存在差异,如果大家有这方面的需求,可以随时和小叮当沟通。

随着量化在国内的深入发展以及大量专业编程人员进入量化这个领域,市场上的量化投资者对Python的需求越来越大,QMT系统的PythonAPI就是为了满足这部分投资者而量身打造。QMT系统的PythonAPI既可以高效使用QMT系统底层的数据接口及交易接口,也可以方便地引入Python支持的第三方库,极大地便利了量化投资者的模型策略需求。

QMT的运行机制还是比较简单的,下面小叮当就举一个栗子阐释Python运行机制、Python策略运行机制、Python交易函数运行机制

一、Python运行机制

上图为QMT系统Python模型运行流程图。当投资者在Python平台编写好自己的策略后,可以点击【运行】按钮来运行脚本。界面层在向下层请求数据的过程中,会首先创建一个Python模型,这个模型关联当前界面运行的产品。模型创建完毕后,加载投资者编写的Python脚本,并调用init()初始化函数。模型运行所需的数据也在此时向下层发出请求。下层在接收到请求后,会向服务器请求行情数据,并组织好数据格式。Python模型根据返回的数据,运行handlebar(),投资者可以用paint()方法将希望显示的计算结果输出到界面上,界面会将输出结果展示出来。

二、Python策略运行机制

投资者在界面上提交请求后,在最终看到结果前会经历两步:

(1)创建模型,初始化环境,发送数据请求;

(2)数据到达后,调用Python的init函数进行Python初始化,然后运行handlebar方法;

ContextInfo是Python模型中的全局对象,其中封装了benchmark,universe等变量,也封装了get_history_data等重要函数,是init与handlebar之间,以及各个handlebar之间进行信息传递的重要载体。投资者也可以在其中封装自己想要定义的全局变量或函数,但注意不要与原有的重名。

init和handlebar是Python模型中最重要的方法,也是唯二由C++直接调用的方法,所有的执行代码都尽量写在这两个方法中或由其中的函数调用。

init是Python的初始化方法,负责初始化模型运行所需的初始变量,如对于基准benchmark和股票池universe的初始化。

handlebar是Python的核心执行函数。在K线图上运行时会根据主图的时间轴,每个时间点会进入相应的handlebar方法,可在handlebar中使用ContextInfo.barpos来获取当前的bar索引位置。

三、Python交易函数运行机制

QMT系统模型是根据行情驱动,逐K线运行的。即点击运行模型时,模型是从第0根K线开始运行到最后一根K线(如想加快模型运行速度,可以策略编辑器-基本信息中设置快速计算,限制计算范围,只计算最新的指定数量的K线范围),每根K线调用一次Python模型中的handlebar(ContextInfo)函数。

(逐K线运行:从第0根K线一直调用handlebar(ContextInfo)运行到最后一根)

在盘中,最后一根K线每变动一次,handlebar(ContextInfo)函数被执行一次。这根K线的最后一个tick判定模型信号是否成立,如果模型信号成立,交易函数被调用,则在下一根K线的第一个tick发出下单信号,生成下单任务。

每个tick数据来时,最后一根K线会随着变动)

一个模型判定:当收盘价>开盘价时产生模型信号触发下单。

如上图,当盘中运行到最后一根K线的时候,每个tick数据来时都会判定一下这个条件是否成立,当不是这根K线的最后一个tick,之前的所有的tick成立的产生的信号就是虚的信号。只有当这个K线确定时,产生的信号才是有效信号,才会触发下单。

模型运行在日K线周期及日K线以上周期时,因为是在下一根K线的第一个tick(最新行情tick)发出下单信号,而下一个K线就是第二日了。所以模型运行当日无法下单,除非:

(1)设置passorder函数中的quickTrade参数为1,立即下单;

(2)使用do_order(ContextInfo)函数。

quickTrade参数设置为1可实现最后一根K线没有走完生成的模型信号也发出下单信号。

do_order(ContextInfo)函数被调用后会把上一根K线生成的模型信号立刻发出,且只发一次,解决交易函数必须是在下一根K线的第一个tick数据时发信号的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值