🚀 AI 一键生成 qmt 策略代码
立即体验

QMT 平台 ContextInfo.get_history_data 复权与停牌处理详解

qmt | 发布时间: 2026/7/27
以下内容由 EasyQuant 生成。

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: QMT 行情数据获取:`get_history_data` 中的复权与停牌处理

Question: 使用 ContextInfo.get_history_data 时,不同复权方式和停牌填充参数有何区别?

解决方案

QMT 平台 ContextInfo.get_history_data 复权与停牌处理详解

在 QMT(迅投量化交易系统)中,ContextInfo.get_history_data 是用于从已设定的股票池中获取历史行情数据的核心接口。为了保证策略回测与实盘信号计算的准确性,理解其**除复权处理(dividend_type)停牌填充(skip_paused)**参数至关重要。


1. 接口基本语法与参数说明

ContextInfo.get_history_data(len, period, field, dividend_type = 0, skip_paused = True)

参数解析:

  • len (int):需要获取的历史 Bar 数量。
  • period (str):数据周期,如 '1d'(日线)、'1m'(1分钟线)、'1w'(周线) 等。
  • field (str):行情字段,可选 'open', 'high', 'low', 'close', 'quoter' 等。
  • dividend_type (int):除复权类型,缺省默认为 0
  • skip_paused (bool):停牌是否填充,缺省默认为 True

2. 复权方式 (dividend_type) 的区别与选择

dividend_type 参数控制股票因分红、送股、配股等除权除息事件对价格序列的调整方式:

参数值 复权模式 适用场景与区别
0 不复权 (默认) 保持历史真实撮合价格。适合计算真实交易成本,但价格序列存在分红断层。
1 向前复权 当前价格为基准平滑调整历史价格。保持最新价格真实,适合日内或近期信号触发计算。
2 向后复权 上市首日价格为基准向后调整。历史价格连续,适合长期策略回测和技术指标(如 MA、MACD)计算。
3 等比向前复权 按比例平滑历史价格,保持收益率不变,避免前复权可能出现的负价格。
4 等比向后复权 按比例向后平滑调整,保持收益率真实性。

3. 停牌填充 (skip_paused) 的区别与影响

skip_paused 参数决定股票在停牌日(或无交易数据日)的数据处理逻辑:

(1) skip_paused = True(默认填充)

  • 逻辑:如果股票在某日停牌,QMT 会自动使用停牌前最新的有效收盘价/行情数据进行填充。
  • 影响:返回的数据列表长度与请求的 len 长度保持一致,数据连续无缺失,便于直接进行多因子矩阵运算或指标计算。

(2) skip_paused = False(不填充)

  • 逻辑:停牌日的数据不进行填充,直接跳过或返回空/NaN 值。
  • 影响:能够真实反映股票的实际交易天数,避免停牌期间产生虚假交易信号。

4. 示例代码

在编写 QMT 策略时,必须先通过 set_universe 设定股票池,随后即可在 handlebar 中获取调整后的历史行情:

#coding:gbk

def init(ContextInfo):
    # 1. 设定股票池
    ContextInfo.set_universe(['000001.SZ', '600000.SH'])

def handlebar(ContextInfo):
    # 2. 获取包含向前复权、停牌自动填充的最近 5 日收盘价
    history_close = ContextInfo.get_history_data(
        len=5, 
        period='1d', 
        field='close', 
        dividend_type=1,   # 向前复权
        skip_paused=True   # 停牌自动填充
    )
    
    # 遍历获取各股票的数据
    for stock, prices in history_close.items():
        if len(prices) >= 2:
            print(f"{stock} 最新收盘价: {prices[-1]}, 前一日收盘价: {prices[-2]}")

5. 总结与最佳实践

  1. 技术分析与指标计算:推荐使用 向前复权 (dividend_type=1)向后复权 (dividend_type=2),避免除权缺口导致 MACD、RSI 等技术指标失真。
  2. 多股对齐计算:推荐设置 skip_paused=True,确保股票池中所有标的获取到相同长度的数据,避免数组对齐异常。
  3. 历史数据准备:使用 get_history_data 前,请确保已通过 QMT 客户端的【数据管理】补充了完整的历史行情数据。