MiniQMT、XtQuant与xtdata关系及实时数据获取指南
MiniQMT、XtQuant与xtdata关系及实时数据获取指南
一、基本概念介绍
1.1 miniQMT、XtQuant和xtdata的关系
miniQMT 是一个量化交易终端软件。它作为本地服务器运行,负责与交易所建立连接,接收和存储行情数据,并提供数据下载和交易接口。
XtQuant 是miniQMT的Python接口库,作为Python程序与miniQMT之间的桥梁。它通过TCP连接与本地miniQMT服务通信,包含行情(xtdata)和交易(xttrader)两个主要模块。
xtdata 是XtQuant中专门用于获取行情数据的模块。它提供了获取各类行情数据的API接口,本质是向miniQMT发送数据请求并处理返回结果。它既支持查询历史数据,也支持订阅实时行情。
1.2 xtdata模块主要功能
xtdata模块作为行情数据获取的核心模块,提供全面的数据服务功能:
- 历史数据:支持各种周期(日线、分钟线、周线等)K线数据、分笔成交tick数据,以及前复权、后复权等多种复权方式
- 实时行情:提供两种订阅模式——单只股票特定周期数据订阅和全市场tick数据订阅
- 基本面数据:提供完整财务数据查询功能,包括三大财务报表和主要财务指标
- 基础信息:提供股票列表、交易日历、除权除息等基础信息查询接口
- 指数数据:提供指数成分股、成分股权重、指数行情等数据获取功能
- 板块数据:支持行业分类、概念板块、地域板块等多维度分类数据查询
- ETF基金:提供ETF申赎清单、成分股信息和净值数据
- 衍生品数据:提供期货期权的主力合约、期权链、商品期权等数据查询功能
本文将重点介绍实时行情数据获取功能,其他功能将在后续系列文章中详细介绍。
二、实时数据获取的运行逻辑
xtdata模块中,获取实时数据有三种常用方式:
2.1 先下载再读取的方式
第一步:使用 subscribe_quote()
函数订阅单只股票的实时行情,或使用 subscribe_whole_quote()
函数订阅全市场行情。订阅的数据会下载到本地并自动更新。
第二步:使用 get_market_data
或 get_market_data_ex
函数读取本地数据。
注意事项:实时数据从调用时刻开始存储。如需之前的数据,可先调用
download_history_data
补充数据,再启动订阅。
2.2 回调函数触发方式
第一步:使用 subscribe_quote()
或 subscribe_whole_quote()
函数订阅行情。
第二步:定义回调函数处理数据更新,订阅时设置 callback
参数,使用 xtdata.run()
保持程序运行,在回调函数中使用数据获取函数。
运行机制说明:
- 对于
subscribe_quote
:每当股票有新的成交时就会触发回调,period参数决定返回数据的聚合周期- 对于
subscribe_whole_quote
:每当任何股票有新的tick数据就会触发回调实测结果:对于subscribe_quote订阅的股票,回调触发周期约为3秒
2.3 获取市场快照方式
无需订阅,直接调用 get_full_tick
函数获取当前市场快照。
三、关键函数对比与使用建议
3.1 subscribe_quote 与 subscribe_whole_quote 对比
特性 | subscribe_quote | subscribe_whole_quote |
---|---|---|
订阅范围 | 指定股票 | 全市场 |
数据类型 | 支持K线和tick数据 | 仅支持tick数据 |
使用场景 | 适合跟踪特定股票 | 适合市场扫描、高频交易 |
3.2 get_full_tick 与 subscribe_whole_quote 区别
特性 | get_full_tick | subscribe_whole_quote |
---|---|---|
调用方式 | 主动获取,单次调用返回当前市场快照 | 被动接收,需要设置回调函数 |
使用场景 | 定期获取市场概况(如每分钟扫描) | 实时监控市场变化(如高频交易) |
数据完整性 | 返回股票的最新状态 | 推送有变化的股票数据 |
四、使用注意事项
xtdata提供了unsubscribe_quote函数用于取消订阅
- 每次subscribe都会返回一个订阅号seq
- unsubscribe_quote需要传入对应的订阅号
- 建议在程序结束前主动取消订阅
本文由 海星量化研究所 作者提供,转载请保留链接和署名!网址:https://qmt.hxquant.com/?id=51
1.本站原创文章,转载需注明文章作者来源。 2.如果文章内容涉及版权问题,请联系我们删除,向本站投稿文章可能会经我们编辑修改。 3.本站对信息准确性或完整性不作保证,亦不对因使用该等信息而引发或可能引发的损失承担任何责任。