周末群里有同学在问关于 miniqmt 的tick数据存储, 反馈找不到本地存储数据在哪。 这里写一篇文章 详细介绍下 关于迅投miniqmt数据存储的科普文章。
对于量化交易者而言,行情数据就是策略的“粮食”。如何高效、可靠地获取和管理这些数据,直接关系到策略回测的效率和实盘交易的稳定性。迅投(迅投)MiniQMT作为一款广受欢迎的本地化量化交易系统,其独特的数据存储机制是必须掌握的核心知识点。
MiniQMT的所有本地数据都存储在软件安装目录下的 userdata_mini 文件夹中,而其中最关键的当属 userdata_mini\datadir 目录。这里是所有下载的历史行情数据的“家”。
当你打开datadir,会看到类似下图的树状结构:
userdata_mini\
└── datadir\
├── SH\ # 上海证券交易所
│ ├── 0\ # Tick级分笔数据
│ ├── 60\ # 1分钟K线数据
│ ├── 300\ # 5分钟K线数据
│ └── 86400\ # 日线数据
├── SZ\ # 深圳证券交易所
│ └── ... # 类似SH目录的结构
├── SZO\ # 深圳期权
└── ... # 其他市场
SH(上海证券交易所)、SZ(深圳证券交易所)、SZO(深圳期权)等,代表不同交易市场。股票代码.DAT的形式命名(例如000001.SZ.DAT)。
数字含义:86400秒 = 24小时 × 60分钟 × 60秒,即一日的总秒数。此文件夹存储的是日线数据。
内容
:每个文件包含对应股票或指数的日K线数据,通常包括每日的开盘价、最高价、最低价、收盘价、成交量、成交额等关键数据。
用途:日线数据是进行中长期策略回测和分析市场大趋势的基础,因其数据量小,容易处理,常用于初步的策略验证和宏观分析。
数字含义:60秒 = 1分钟。此文件夹存储的是1分钟K线数据。
内容
:以一分钟为间隔的K线数据序列。
用途:分钟线数据是进行中短期策略回测(特别是日内交易策略)的核心。它提供了比日线更细致的价格波动信息,又比Tick数据更规整,计算负荷相对可控。
0文件夹 - Tick数据/分笔数据:这是最细粒度的数据,记录的是每一笔成交的详细信息,包括时间、价格、成交量、买卖盘挂单情况等。对于需要精确分析订单簿动态的高频策略至关重要。
300文件夹 - 5分钟K线数据(300秒)。
此外,系统还支持更多周期,如15m(15分钟)、30m(30分钟)、1h(1小时)等,这些数据通常也通过API获取,但在本地datadir中的存储可能仍沿用秒数或特定的命名规则。
需要注意的是,datadir目录下的.DAT文件是QMT系统的专用二进制格式,并且通常经过加密或压缩处理。你无法直接用文本编辑器(如记事本)打开查看其明文内容,这样做只会看到乱码。这种设计一方面是为了提高存储效率,另一方面也是为了保护数据的安全性。
要读取这些数据,必须通过MiniQMT提供的官方API接口,主要是xtdata模块下的函数:
xtdata.get_local_data:直接从本地数据文件获取历史行情数据。
xtdata.get_market_data_ex:功能更强的接口,既能读取本地数据,也能在订阅模式下获取实时或历史数据。
调用download_history_data或download_history_data2函数,其核心作用是“补充”数据到本地的datadir目录。新下载的数据会智能地合并到现有数据文件中,避免重复。这保证了本地数据仓库的连续性和完整性。
datadir,但你可以通过创建符号链接(Symbolic Link)的方式,将其实际位置指向一块拥有更大空间的硬盘,从而避免系统盘被撑满。
虽然原生.DAT文件最适合QMT系统内部调用,但如果你需要结合Pandas进行大量复杂的数据分析,可以先将数据读出,转换为更高效率的通用文件格式进行存储,如Feather或Parquet。
Feather:读写速度极快,但不压缩文件,适合作为临时高速缓存。当你要对某个数据集进行反复、密集的回测时,可以先将数据转为Feather格式以提升加载速度。
Parquet:具有高效的列式存储和压缩能力,文件体积小,适合作为长期数据仓库。当需要归档历史数据以节省空间时,Parquet是更佳选择。 你学废了么? 如果我的分享对你投资有所帮助,不吝啬给个点赞关注呗。 这个号主要分享AI量化技术相关, 当天的灵感相关记录,相对比较杂。