XtQuant.XtData 行情模块
xtdata是xtquant库中提供行情相关数据的模块,本模块旨在提供精简直接的数据满足量化交易者的数据需求,作为python库的形式可以被灵活添加到各种策略脚本中。
主要提供行情数据(历史和实时的K线和分笔)、财务数据、合约基础信息、板块和行业分类信息等通用的行情数据。
接口概述
#运行逻辑
xtdata提供和MiniQmt的交互接口,本质是和MiniQmt建立连接,由MiniQmt处理行情数据请求,再把结果回传返回到python层。使用的行情服务器以及能获取到的行情数据和MiniQmt是一致的,要检查数据或者切换连接时直接操作MiniQmt即可。
对于数据获取接口,使用时需要先确保MiniQmt已有所需要的数据,如果不足可以通过补充数据接口补充,再调用数据获取接口获取。
对于订阅接口,直接设置数据回调,数据到来时会由回调返回。订阅接收到的数据一般会保存下来,同种数据不需要再单独补充。
#接口分类
- 行情数据(K线数据、分笔数据,订阅和主动获取的接口)
- 功能划分(接口前缀)
- subscribe_ / unsubscribe_ 订阅/反订阅
- get_ 获取数据
- download_ 下载数据
- 常见用法
- level1数据的历史部分用
download_history_data
补充,实时部分用subscribe_XXX
订阅,使用get_XXX
获取 - level2数据实时部分用
subscribe_XXX
订阅,用get_l2_XXX
获取。level2函数无历史数据存储,跨交易日后数据清理
- level1数据的历史部分用
- 功能划分(接口前缀)
- 财务数据
- 合约基础信息
- 基础行情数据板块分类信息等基础信息
#常用类型说明
- stock_code - 合约代码
- 格式为
code.market
,例如000001.SZ
600000.SH
000300.SH
- 格式为
- period - 周期,用于表示要获取的周期和具体数据类型
- level1数据
tick
- 分笔数据1m
- 1分钟线5m
- 5分钟线15m
- 15分钟线30m
- 30分钟线1h
- 1小时线1d
- 日线1w
- 周线1mon
- 月线1q
- 季度线1hy
- 半年线1y
- 年线
- level2数据
l2quote
- level2实时行情快照l2order
- level2逐笔委托l2transaction
- level2逐笔成交l2quoteaux
- level2实时行情补充(总买总卖)l2orderqueue
- level2委买委卖一档委托队列l2thousand
- level2千档盘口
- 投研版 - 特色数据
warehousereceipt
- 期货仓单futureholderrank
- 期货席位interactiveqa
- 互动问答- 逐笔成交统计
transactioncount1m
- 逐笔成交统计1分钟级transactioncount1d
- 逐笔成交统计日级
delistchangebond
- 退市可转债信息replacechangebond
- 待发可转债信息specialtreatment
- ST 变更历史- 港股通(深港通、沪港通)资金流向
northfinancechange1m
- 港股通资金流向1分钟级northfinancechange1d
- 港股通资金流向日级
dividendplaninfo
- 红利分配方案信息historycontract
- 过期合约列表optionhistorycontract
- 期权历史信息historymaincontract
- 历史主力合约stoppricedata
- 涨跌停数据snapshotindex
- 快照指标数据
- level1数据
- 时间范围,用于指定数据请求范围,表示的范围是
[start_time, end_time]
区间(包含前后边界)中最后不多于count
个数据- start_time - 起始时间,为空则认为是最早的起始时间
- end_time - 结束时间,为空则认为是最新的结束时间
- count - 数据个数,大于0为正常限制返回个数,等于0为不需要返回,-1为返回全部
- 通常以
[start_time = '', end_time = '', count = -1]
表示完整数据范围,但数据请求范围过大会导致返回时间变长,需要按需裁剪请求范围
- dividend_type - 除权方式,用于K线数据复权计算,对
tick
等其他周期数据无效none
不复权front
前复权back
后复权front_ratio
等比前复权back_ratio
等比后复权
- 其他依赖库 numpy、pandas会在数据返回的过程中使用
- 本模块会尽可能减少对numpy和pandas库的直接依赖,以允许使用者在不同版本的库之间自由切换
- pandas库中旧的三维数据结构Panel没有被使用,而是以dict嵌套DataFrame代替(后续可能会考虑使用xarray等的方案,也欢迎使用者提供改进建议)
- 后文中会按常用规则分别简写为np、pd,如np.ndarray、pd.DataFrame
#请求限制
- 全推数据是市场全部合约的切面数据,是高订阅数场景下的有效解决方案。持续订阅全推数据可以获取到每个合约最新分笔数据的推送,且流量和处理效率都优于单股订阅
- 单股订阅行情是仅返回单股数据的接口,建议单股订阅数量不超过50。如果订阅数较多,建议直接使用全推数据
- 板块分类信息等静态信息更新频率低,无需频繁下载,按周或按日定期下载更新即可