常常会有投资者遇到,用QMT下载了日周期数据以后,如何使用Python调取数据的问题。
这里我用原生python,来解析一下qmt的历史数据(原生python要用到xtquant,所以要下载这个库以后才能使用)
两个最主要的函数,我已经标注出来了,其中
download_history_data这个函数的作用是:用于下载指定证券(如股票、期货等)在指定周期(如日线、分钟线等)和时间范围内的历史行情数据,并保存到本地MiniQMT的数据目录。
主要参数说明:
stock_code:证券代码,例如'000001.SZ'。
period:数据周期,如'1d'(日线)、'1m'(1分钟线)、'tick'(分笔)等。
start_time:开始时间,可以是字符串(如'20230101'或'20230101093000'),也可以是datetime对象,留空表示最早时间。
end_time:结束时间,格式同上,留空表示最新时间。
incrementally:是否增量下载。为True时只下载缺失部分数据,为False时全量覆盖下载。
用法场景:
补全本地MiniQMT行情数据库的历史数据,确保后续用get_market_data等接口获取数据时,本地有完整数据可用。
批量下载或更新某一证券的历史行情,适合策略回测、数据分析等场景。
注意事项
该函数本质上是通过与MiniQMT客户端通信,由MiniQMT负责实际的数据下载和存储。
下载的数据类型和范围,取决于MiniQMT所连接的行情服务器权限和数据完整性。
get_market_data_ex是 xtquant 库中最通用、最强大的行情数据获取函数,用于批量、灵活地获取股票、期货等多市场的历史行情数据。它支持多种数据类型、周期、字段选择,并能自动处理本地和服务器数据的补全。
主要功能:
批量获取行情数据:支持一次获取多个标的、多个字段的数据。
多周期支持:如日线('1d')、分钟线('1m'、'5m')、tick(分笔)、周线、月线等。
多数据类型:支持常规K线、分笔、Level2、特色数据(如港股经纪队列、ETF申赎清单等)。
自动本地/服务器补全:优先读取本地MiniQMT的数据文件,若本地数据不足可自动补全。
灵活字段选择:可自定义需要的行情字段(如open、close、volume等)。
返回结构友好:返回pandas DataFrame 或 dict,便于后续分析和处理。
通过说明我们知道要先通过download_history_data,再通过get_market_data_ex函数才能获取历史数据,如图所示
很好奇download_history_data是怎么获取这个数据的,所以就探究了一下这个函数内部如图所示:
大概的流程就是这个函数去请求服务器的,然后把获取到的数据存放在如图所示的地方
这个.DAT文件是一个二进制文件,需要用get_market_data_ex来把他解码,然后就可以使用,打印出来就是如图,
分钟线('1m'、'5m')、tick(分笔)、周线、月线,这些数据都是如此下载并使用的,只需要修改一下download_history_data和get_market_data_ex函数的period参数即可。