QMT 量化入门:Bar (K 线) 数据结构、周期规则与数据获取完全指南

前言

在量化交易体系中,K 线(Bar)数据是技术指标计算、量价策略搭建的核心底层数据。迅投 QMT 平台提供了从 tick 级到年级的全周期 Bar 行情数据,能够覆盖高频、中频、低频等不同交易频率的策略开发需求。本文将系统梳理 QMT 中 Bar 数据的定义、字段结构、周期合成规则与数据获取方式,帮助量化开发者快速掌握 QMT 行情数据的调用方法。


一、Bar 数据概述

我们常说的蜡烛图 K 线,在 QMT 中被定义为 Bar 数据。每一根 Bar 都对应一个时间周期内的行情快照,封装了该周期内的价格、成交量等核心交易信息,是量价交易、技术指标分析的数据基础。

QMT 支持的 Bar 数据周期覆盖全面,包含以下主流频率:

  • 高频:tick(3 秒级)
  • 分钟级:1 分钟、5 分钟、15 分钟、30 分钟、60 分钟
  • 长周期:日线、周线、月线、年线

二、标准 Bar 数据核心字段

单根标准 Bar 数据以 OHLCV 为核心字段,完整字段信息如下表:

字段名 数据类型 字段含义
time int 周期时间戳
open float 周期开盘价
high float 周期最高价
low float 周期最低价
close float 周期收盘价
volume float 周期成交量
amount float 周期成交额
settlementPrice float 今结算价(股票品种无有效值)
openInterest float 持仓量(股票品种对应证券状态)
preClose float 前一周期收盘价

三、基础周期与合成周期规则

QMT 的 Bar 数据分为原生存储的基础周期基于基础周期计算的合成周期,二者生成逻辑与使用方式存在明确差异。

3.1 基础周期

QMT 底层实际持久化存储的原生数据周期共 4 类,是所有行情数据的数据源:

  • tick
  • 1 分钟(1m)
  • 5 分钟(5m)
  • 日线(1d)

3.2 合成周期规则

其余周期均通过基础周期自动合成得到,合成规则如下:

  • 15m、30m、60 分钟线:由 5 分钟线合成
  • 周线 (1w)、月线 (1mon)、年线 (1y):由日线数据合成

3.3 使用注意事项

  1. 历史数据获取:调取合成周期的历史数据前,需要先下载对应的基础周期历史数据。例如获取 15 分钟历史数据,需提前下载 5 分钟历史数据。
  2. 实时数据订阅:实时行情可以直接订阅合成周期,无需手动进行合成计算。
  3. 数据复用规则:同时使用基础周期和其对应的合成周期时,仅需下载一次基础周期数据即可。例如同时使用 5m 和 15m 数据,只需下载 5m 数据,15m 数据会自动合成,无需重复下载。

四、不同周期数据详解与代码示例

QMT 通过download_history_data接口下载历史数据,通过get_market_data_ex接口获取行情数据,不同周期的字段丰富度和适用场景有差异。

4.1 Tick 级数据

Tick 是 QMT 中精度最高的行情数据,相比普通 K 线额外包含五档买卖盘口数据,主要用于高频策略、盘口策略开发。

Tick 数据完整字段表
字段名 数据类型 字段含义
time int 时间戳
stime string 时间戳字符串格式
lastPrice float 最新成交价
open float 当日开盘价
high float 当日最高价
low float 当日最低价
lastClose float 前收盘价
amount float 成交总额
volume int 成交总量(单位:手)
pvolume int 原始成交总量(未做股手转换,不推荐使用)
stockStatus int 证券状态
openInt int 股票场景为股票状态,期货等品种为持仓量
transactionNum float 成交笔数(期货品种无,需单独计算)
lastSettlementPrice float 前结算价(股票品种无有效值)
settlementPrice float 今结算价(股票品种无有效值)
askPrice listfloat 多档委卖价格
askVol listint 多档委卖挂单量
bidPrice listfloat 多档委买价格
bidVol listint 多档委买挂单量
Tick 数据获取代码
复制代码
# 下载指定标的、指定时间段的tick历史数据
download_history_data('159919.SZ', 'tick', '20240701', '20240701')

# 获取最新1条tick数据
data_tick = C.get_market_data_ex([], ['159919.SZ'], 'tick', count=1)
print("tick数据详情:\n", data_tick['159919.SZ'])

4.2 分钟线与日线数据

1 分钟、5 分钟、日线等标准 K 线周期为标准 OHLCV 结构,是技术类、量价类策略最常用的数据。

数据获取代码示例
复制代码
# 下载历史数据
download_history_data('159919.SZ', '1m', '20240701', '20240701')
download_history_data('159919.SZ', '1d', '20240701', '20240701')

# 获取1分钟行情数据
data_1m = C.get_market_data_ex([], ['159919.SZ'], '1m', count=1)
print("1分钟数据:\n", data_1m['159919.SZ'])

# 获取日线行情数据
data_1d = C.get_market_data_ex([], ['159919.SZ'], '1d', count=1)
print("日线数据:\n", data_1d['159919.SZ'])

五、QMT 历史数据覆盖范围

迅投 QMT 的历史数据储备充足,能够满足绝大多数量化策略的回测需求:

  • tick 数据:覆盖 2018 年至今
  • 1 分钟、5 分钟、日线数据:全量历史数据

结语

Bar 数据是 QMT 量化开发的核心基石,理解其字段结构、周期合成逻辑与获取方式,是搭建稳定量化策略的前提。开发者可以根据自身策略的交易频率,选择对应周期的行情数据进行开发与回测。


风险提示:本文仅为量化工具功能介绍,不构成任何投资建议。市场有风险,投资需谨慎。