MiniQMT 量化教程:历史数据下载全解析(上):核心概念与基础用法

在使用 MiniQMT 做量化策略开发时,历史行情数据是回测与分析的基础。很多刚接触 MiniQMT 的朋友经常会混淆miniQMTxtquantxtdata三者的关系,也搞不清下载数据和查询数据的区别。本文就带大家系统梳理 MiniQMT 中历史数据的下载方法,讲透核心概念与基础实操。

一、先理清关系:MiniQMT、XtQuant 与 xtdata

很多新手入门的第一个困惑,就是这三个名词到底是什么关系,其实它们是层层嵌套的「终端 - 接口 - 模块」关系:

  1. miniQMT:量化交易终端软件,运行在本地作为服务端,负责对接交易所、接收并存储行情数据,同时提供数据下载与交易接口能力。
  2. XtQuant:miniQMT 的 Python 接口库,是 Python 程序和 miniQMT 本地服务之间的通信桥梁,通过 TCP 连接交互,内部包含两大核心模块:行情模块xtdata和交易模块xttrader
  3. xtdata:XtQuant 中专职行情数据的模块,提供各类行情数据的 API 接口,本质是向 miniQMT 发送数据请求并处理返回结果,同时支持历史数据查询和实时行情订阅。

简单理解:miniQMT 是后台数据源,XtQuant 是 Python 对接工具,xtdata 是工具里专门拿行情数据的功能包。

二、xtdata 模块核心功能全景

xtdata 是 MiniQMT 体系里的行情数据核心,覆盖了从行情到基本面、从股票到衍生品的全品类数据能力:

  • 历史行情数据:支持日线、分钟线、周线等多周期 K 线,以及分笔成交 Tick 数据,同时提供前复权、后复权等多种复权方式。
  • 实时行情订阅:支持单标的单周期订阅、全市场 Tick 订阅两种模式;额外支持 Level2 深度行情获取(需单独开通权限),满足高频交易数据需求。
  • 基本面与基础数据:提供资产负债表、利润表、现金流量表等完整财务报表及核心财务指标,同时支持股票列表、交易日历、除权除息等基础信息查询。
  • 指数与板块数据:支持指数成分股、成分股权重、指数行情获取,覆盖行业分类、概念板块、地域板块等多维度板块数据。
  • 基金与衍生品数据:支持 ETF 申赎清单、成分股、净值数据;同时提供期货主力合约、期权链、商品期权等衍生品数据查询。

三、历史数据获取的底层逻辑:缓存 + 查询两步走

xtdata 获取历史数据的核心逻辑分为两步,这是很多新手容易踩坑的地方:

  1. 第一步:缓存历史数据 调用下载函数从服务器拉取数据,缓存到 miniQMT 安装目录下的userdata_mini文件夹中,数据为二进制格式,无法直接读取和处理。
  2. 第二步:查询历史数据 调用查询函数从本地缓存中读取数据,转化为可处理的格式(如 DataFrame),支持多标的、多字段、多周期读取,也可设置复权方式。

注意:必须先执行下载缓存,才能成功查询到历史数据;同时由于接口迭代,目前存在多组功能相近但细节有别的下载 / 查询函数,需要根据需求选择。

四、步骤一:缓存历史数据(下载到本地)

数据缓存阶段,核心有两个函数:download_history_data()download_history_data2(),执行完成后数据就会持久化存储到本地。

两者的核心差异如下:

函数支持标的数量执行方式核心特点
download_history_data单只股票 / 标的同步执行用法简单,适合单标的少量数据下载
download_history_data2批量多标的异步执行可监控下载进度,适合多标的、长周期批量下载

两个函数均支持增量下载(设置incrementally=True)和全量下载,日常维护数据时用增量下载可以大幅提升效率。

五、步骤二:查询历史数据(读取本地数据)

数据缓存到本地后,需要通过查询函数读取为可分析的数据,常用的查询函数有三个:

  • get_market_data():基础查询函数,支持指定标的、周期、时间范围、字段和复权方式。
  • get_market_data_ex():增强版查询函数,返回格式更丰富,适配更多进阶参数。
  • get_local_data():纯本地数据读取,直接从本地缓存拉取,不触发服务器请求。

六、实操案例:单只股票日线数据下载与读取

下面以平安银行(000001.SZ)为例,演示「下载 - 查询」的完整基础流程,代码可直接复制运行(需先启动 MiniQMT 并安装 xtquant)。

from xtquant import xtdata

# ======================
# 1. 下载并缓存历史数据
# ======================
xtdata.download_history_data(
    stock_code="000001.SZ",  # 股票代码,格式:代码.交易所
    period="1d",             # 数据周期:1d=日线
    start_time="20240101",   # 起始日期
    end_time="20240301"      # 结束日期
)

# ======================
# 2. 查询本地已缓存的数据
# ======================
data = xtdata.get_market_data(
    field_list=["time", "close"],   # 需要获取的字段:时间、收盘价
    stock_list=["000001.SZ"],       # 股票代码列表
    period="1d",                    # 数据周期,与下载保持一致
    start_time="20240101",          # 起始日期
    end_time="20240301"             # 结束日期
)

# ======================
# 3. 打印结果
# ======================
print("平安银行日线收盘价数据:")
print(data["close"])

七、总结与下篇预告

本文梳理了 MiniQMT 中历史数据获取的核心体系,重点讲解了「下载缓存 + 本地查询」的两步逻辑,以及基础函数的用法和单标的实操。

在下篇内容中,我会继续讲解批量下载函数download_history_data2的用法、多标的批量数据获取实操,以及不同查询函数的适用场景和进阶参数,帮助大家高效搭建本地行情数据库。


本文为「MiniQMT 量化入门」系列文章,后续会持续更新数据处理、策略回测、实盘交易相关内容,欢迎关注专栏一起交流。投资有风险入市需谨慎,本文只做教学不做投资建议。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值