获取全推数据,获取本地行情数据,获取行情数据 这三个方法有什么区别
请问:
获取全推数据:get_full_tick
获取本地行情数据:get_local_data
获取行情数据:get_market_data
这三个接口有什么区别?
问题描述
解决方案
在 QMT 平台中,get_full_tick、get_local_data 和 get_market_data 都是用于获取行情数据的接口,但它们在数据源、返回格式、支持的周期以及适用场景上有着明显的区别。以下是详细的对比解析:
1. 获取全推数据:get_full_tick
- 核心作用:获取指定股票列表的最新一笔分笔(Tick)快照数据。
- 数据源:内存中的实时行情快照。
- 返回格式:嵌套字典(
dict)。外层 key 是股票代码,内层字典包含最新价、成交额、成交量、买卖五档盘口等详细字段。 - 适用场景:盘中实时监控、高频交易、需要获取最新买卖盘口(Ask/Bid)和最新成交状态的场景。
- 注意:它只能获取“当前最新”的状态,不能获取历史 K 线序列。
2. 获取本地行情数据:get_local_data
- 核心作用:直接从本地硬盘读取已下载的行情数据。
- 数据源:本地数据文件(需要提前在 QMT 客户端的“数据管理”中下载补充)。
- 返回格式:字典(
dict)。外层 key 为时间戳(timetag),value 为包含开高低收、成交量、成交额等字段的字典。 - 适用场景:需要快速读取大量历史数据进行回测或离线分析,且不需要依赖 pandas 复杂数据结构的场景。
- 注意:如果本地没有下载对应时间段的数据,该接口将无法返回数据。
3. 获取行情数据:get_market_data
- 核心作用:获取指定股票、指定周期、指定字段的历史或实时 K 线数据。
- 数据源:综合数据源(优先读取本地,若支持订阅则结合实时数据)。
- 返回格式:根据传入参数的不同,返回
pandas.Series、pandas.DataFrame或pandas.Panel。这种数据结构非常适合直接进行向量化计算和数据分析。 - 适用场景:策略中计算技术指标(如均线、MACD)、多只股票横向对比、需要使用 pandas 库进行复杂数据处理的场景。
- 注意:官方文档提示该接口已不建议使用,推荐使用升级版接口
get_market_data_ex,后者在数据对齐和订阅机制上更加完善。
总结对比表
| 特性 | get_full_tick |
get_local_data |
get_market_data |
|---|---|---|---|
| 数据类型 | 最新 Tick 快照(含盘口) | 历史 K 线 / 历史 Tick | 历史/实时 K 线 / Tick |
| 数据源 | 实时内存快照 | 本地硬盘数据 | 综合(本地+实时) |
| 返回格式 | dict (嵌套字典) |
dict (时间戳为 key) |
pandas 数据结构 (Series/DataFrame) |
| 支持周期 | 仅最新 Tick | 多种周期 (1d, 1m, tick 等) | 多种周期 (1d, 1m, tick 等) |
| 主要优势 | 获取盘口极快,适合高频 | 读取本地数据快,无额外依赖 | 返回 pandas 格式,极度方便指标计算 |
| 适用场景 | 盘中实时监控、盘口分析 | 离线回测、快速读取历史 | 策略逻辑编写、复杂技术指标计算 |
建议:在编写实盘策略时,如果需要计算均线等指标,推荐使用 get_market_data_ex;如果需要根据买一卖一价进行挂单,推荐使用 get_full_tick。