QMT vs Ptrade 速度对比 (一) 历史行情获取速度

众所周知(狗头),QMT是在你本地电脑运行的,包括行情获取,计算指标,选股选债,下单都在你的本地电脑执行。行情数据通过网络去券商服务器或者迅投(QMT)服务器获取,拿到数据在你的本地电脑处理,比如计算涨速,量比,然后再使用下单接口把下单指令通过网络提交到券商柜台,券商柜台接到QMT的委托指令后,再提交给交易所。

Ptrade(恒生电子)则是在券商部署的服务器上执行,你下载的Ptrade在你的本地电脑,只是负责写代码,把代码部署到券商服务器,然后在券商服务其执行你的策略,当然你的代码在券商服务器运行时是被加密的。行情获取,计算指标,下单委托都在券商机房内部执行,属于云策略的类型,策略部署好了,就不需要开着本地电脑观察它的状态。

对比环境均为同一个券商下的QMT和Ptrade,均为生产环境的实盘版本。(PS:温馨提示,平时少用模拟版本,bug多,交易不准,还浪费时间。我平时调试都直接在实盘上调试的,要对自己的策略有信心哈,至少回测过了的嘛O(∩_∩)O~~)

历史行情数据获取

目标:获取2022年到昨天的沪深300所有股票的日线收盘价数据。

QMT

获取行情数据 使用这个函数:ContextInfo.get_market_data()

用法: ContextInfo.get_market_data(fields, stock_code = [], start_time = '',
end_time = '', skip_paused = True, period = 'follow',
dividend_type = 'follow', count = -1)

返回的字段:

open -- 开盘价(str:numpy.float64);
high -- 最高价(str:numpy.float64);
low --最低价(str:numpy.float64);
close -- 收盘价(str:numpy.float64);
volume -- 交易量(str:numpy.float64);
money -- 交易金额(str:numpy.float64);
price -- 最新价(str:numpy.float64);
preclose -- 昨收盘价(str:numpy.float64)(仅日线返回);
high_limit -- 涨停价(str:numpy.float64)(仅日线返回);
low_limit -- 跌停价(str:numpy.float64)(仅日线返回);
unlimited -- 判断查询日是否无涨跌停限制(1:该日无涨跌停限制;0:该日有涨跌停限制)(str:numpy.float64)(仅日线返回);

在fields里面指定只获取close价格即可。

QMT测试代码如下:(需要的也可以后台留言回复获取)

把代码复制到QMT里面,然后切换到模型交易,在中间切换到实盘模式,就会运行上面代码。

注意,这里需要第一次运行上面的代码来计算时间,因为QMT会有个cache缓存机制,它会把曾经跑过的历史数据自动下载下来,保存到你的电脑硬盘里,从而加快QMT后续的读取速度,同样的数据没有必要每次再去网络上拉。

大部分情况下网络IO都会是任何一个量化交易系通最大的性能瓶颈。

运行得到下面的结果:

上面运行时间是22秒。不要惊讶哦,首次获取历史行情数据都是挺慢的。如果你的电脑网速够快,或者但在阿里云,腾讯云之类的云服务上跑,获取历史行情速度会有所提高。

在你运行了上面的代码之后,QMT会在某个时刻,在后台把数据下载到本地QMT安装目录下。

文件按照股票代码作为文件名存储。当然里面不是txt格式,而是QMT做了相应的封装的。上面按照修改日期排序,4月11日多了很多新的DAT数据文件,显然是刚刚生成的。

QMT在获取历史行情数据后,会有个触发器,在后台一次性保存大量的文件,所以QMT会在某一个瞬间,界面会出现卡顿,甚至无响应,而看任务管理器会看到内存飙升甚至爆满100%,有些新人菜鸟就认为QMT太占内存,太垃圾的结论,这也是片面的。实际上在数据完备的情况下,QMT需要的内存4GB就够的了。如果你经常会有扫描全市场股票代码历史数据的话,内存还是尽量选大一点的。如果无法避免内存突然飙升,可以每次把获取行情的股票代码列表减少,细分多几批获取,用时间换空间。

当然 QMT也提供了一个下载历史数据的一个菜单入口,用于在图形界面下手动下载历史行情,从而加速历史行情读取速度。

等数据下载完成后,

第二次跑上面的同一个代码,运行时间明显快了。

但用时还是要7.9秒,反复测试几次,获取时间依然是在6-8秒之间波动。 因为程序读取历史行情数据的一个个独立的文件,所以这里硬盘的性能因素对获取行情影响还是很大的。

笔者感觉7.9秒这个速度还是很慢的,换了台性能好一点的的windows机子,下载了历史数据后再跑了一次:

但用时依然在6秒左右。

所以个人是不推荐大家在tick策略里面,在盘中去获取历史数据的,这个动作应该在盘前就应该完成,把数据保存到内存列表或者dataframe变量中,盘中用的时候去取就可以了。 当然低频策略就无所谓啦。

Ptrade

操作上ptrade相对而言更加简洁,容易上手。

它的API设计和它对应的API文档更加规范,可读性更好。

直接把代码复制到量化->策略,新建策略,然后在交易里面添加策略,直接启动策略。代码设置定时运行,在启动策略后的一分钟后运行。

同样获取沪深300的日线数据,2022年1月到2023年4月10日。

get_price - 获取历史数据
get_price(security, start_date=None, end_date=None,
frequency='1d', fields=None, fq=None, count=None)

  • 运行

上面的结果显示,Ptrade获取同样的历史数据耗时只有700毫秒,0.7秒左右。测试多几次,获取时间基本每次都比较平稳,在0.6-0.8秒之间。(下面打印的306不是沪深300的个数,而是获取到的日期的天数,它返回的结构虽然都是panel,但和QMT的轴有点不同)。

结论

总的来说,获取历史行情数据的速度,Ptrade是秒杀了QMT的,不在一个量级上的。

本来想继续对比实时行情,下单延时对比等等,但开盘时间有限,写了一下时间就不够用了。所以把教程拆分为多个系列,下一篇再对比QMT和PTrade的实时行情数据,下单回调等等啦。

由于公众号推送顺序杂乱,喜欢内容的话请点关注后设置星标哦。

如果想要自己测试文中的数据,可以获取代码,后台回复: 历史行情数据代码

参考API接口文档:

Ptrade: http://ptradeapi.com/

QMT: http://qmt.ptradeapi.com/

原创地址:

QMT vs Ptrade 速度对比 (一) 历史行情获取速度

公众号:

QMT vs Ptrade 速度对比 (一) 历史行情获取速度相关推荐

  1. QMT vs Ptrade 速度对比 (二)实时行情速度对比

    QMT vs Ptrade 速度对比 (二)实时行情速度对比 上一篇文章对了了QMT和Ptrade的获取历史行情速度,本篇文章继续对它俩的实时行情速度. 本文以获取市场所有可转债的实时行情为例子,比较 ...

  2. 专题_数字货币历史行情获取[博]

    原创博客地址:专题_数字货币历史行情获取[博] 1,购买 1.1 淘宝,闲鱼 1.2 matrix 地址:https://jiaozi-matrix.com/ 1.3 cryptocompare有免费 ...

  3. python tus股票数据分析_python 股票量化分析(一)---基于Tushare平台的个股历史行情获取...

    在浩瀚如烟的股票中,如何将好股选择出来?长线.中线.短线个股如何筛选?国内外政治.经济.地缘博弈基本面对股市的影响有多大,怎样将其纳入股票选择买卖的决策因子?公司财报.未来规划.公司所处行业发展前景怎 ...

  4. 迅投QMT行情获取的代码分享

    QMT的实时行情获取主要分为tick分笔数据和kline分钟数据,其中全推tick行情仅支持股票,其他tick/kline行情则需要通过订阅的方式获得. 全推方式获得tick行情 首先订阅全推行情: ...

  5. [QMT]09-下载历史行情数据到本地

    下载历史行情数据 download_history_data(stock_code, period, start_time='', end_time='') 1 释义 补充历史行情数据 参数 stoc ...

  6. tushare获取沪深300指数历史_从Tushare获取历史行情数据

    从Tushare获取历史行情数据,分为两种,一种是后复权(daily_hfq)数据,一种是不复权(daily)数据,获取到的数据存储在MongoDB数据库中,每个集合(collection)中,数据字 ...

  7. Python量化:获取历史行情数据并计算KDJ指标

    KDJ指标又叫随机指标,是一种相当新颖.实用的技术分析指标,它起先用于期货市场的分析,后被广泛用于股市的中短期趋势分析,是期货和股票市场上最常用的技术分析工具. 随机指标KDJ一般是用于股票分析的统计 ...

  8. Tushare取数-历史行情/实时行情

    Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供快速.整洁.和多样的便于分析的数据,为他们在数据获取 ...

  9. 股票历史数据-股票历史行情数据查询

    股票历史数据-股票历史行情数据查询 共享一个股票历史行情数据查询的工具,股票历史行情数据查询的是从股票成立到最近一天的所有历史数据,亲测手机就能查询股票历史行情数据.下载股票历史行情数据 亲测获取步骤 ...

最新文章

  1. 大小端存储模式的理解和判断
  2. 使用c#訪问Access数据库时,提示找不到可安装的 ISAM
  3. 机器学习之sklearn——聚类
  4. python详细基础教程-Python基础教程,Python入门教程(非常详细)
  5. Response.Redirect、 Server.Transfer、Server.Execute三者区别
  6. linux怎么查看fastq格式文件,2020-01-11 了解FASTQ格式并处理FASTQ文件
  7. 流式计算strom,Strom解决的问题,实现实时计算系统要解决那些问题,离线计算是什么,流式计算什么,离线和实时计算区别,strom应用场景,Strorm架构图和编程模型(来自学习资料)
  8. 一些学习cocos2d的网站
  9. layui table工具栏点击时间_layui table表格上添加日期控件laydate
  10. Python协程之greenlet
  11. # 定义四边形_对特殊平行四边形核心梳理,拓展提升思维
  12. Python的条件判断与循环样例
  13. xshell修改服务器登录密码
  14. 基于 软件体系结构(第3版)考试重点和复习指南
  15. 安卓设备投影到电脑PC端的简单实现
  16. Coremail-0day敏感文件泄露漏洞送附批量检测脚本
  17. 操作系统from清华大学向勇,陈渝 笔记(一)绪论
  18. Python基础 Zero to Hero面向对象编程(一)
  19. 随机积分理论中的几何布朗运动——Brown Motion and Stochastic Process
  20. kademlia(卡德米利亚)算法原理介绍

热门文章

  1. Web3专属的流支付协议,Zebec把它玩出了新的花样
  2. Xilinx Virtex-5 FPGA CLB资源学习笔记
  3. 腾讯云函数 python_腾讯云函数添加依赖方法之官方方案
  4. 编程到底难在哪里?学编程真的很难吗?
  5. php 实现查询百度排名,查询百度关键词排名代码 php
  6. 没有选择的选择才能坚持和专注
  7. python数据分析比较好的书籍_python数据分析比较好的书籍推荐|陇川制作项目盈利能力分析...
  8. volice java_Volice~亡者之声~
  9. 【附源码】Python计算机毕业设计手游账号交易系统
  10. add p4 多个文件_在P4存储库中查找add/delete/checkout/checkin文件中的p4perl示例代码