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

QMT 平台如何对最新行情做复权处理?实盘与运行模式复权设置详解

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

问题描述

qmt 实盘复权指南:如何处理实时行情中的除权除息?
qmt 在实盘或运行模式中,怎么对最新行情做复权处理?

解决方案

QMT 实盘复权指南:如何处理实时行情中的除权除息

在量化交易中,股票的除权除息(如送股、分红)会导致股价出现非交易因素的断崖式下跌。如果不对历史和实时行情进行**复权(Adjustment)**处理,技术指标(如均线、MACD)就会产生错误的买卖信号。

QMT 平台提供了完善的复权机制,支持前复权、后复权、等比前复权、等比后复权。本文将详细介绍如何在 QMT 实盘或运行模式中获取并处理复权数据。


1. 获取当前主图的复权方式

在编写策略时,你可以通过 ContextInfo.dividend_type 获取当前运行环境(主图)所设置的复权处理方式:

def handlebar(ContextInfo):
    # 获取当前主图复权方式
    # 返回值可能为: 'none'(不复权), 'front'(前复权), 'back'(后复权), 'front_ratio'(等比前复权), 'back_ratio'(等比后复权)
    div_type = ContextInfo.dividend_type
    print(f"当前主图复权方式为: {div_type}")

2. 在获取行情数据时指定复权方式

在实盘或运行模式中,推荐使用 ContextInfo.get_market_data_ex() 接口获取行情,并通过 dividend_type 参数指定复权方式。若设置为 'follow',则会自动跟随主图的复权设置。

示例:获取前复权的历史日线数据

def handlebar(ContextInfo):
    if not ContextInfo.is_last_bar():
        return
    
    # 获取沪深300成分股的前复权数据
    data = ContextInfo.get_market_data_ex(
        fields=['open', 'high', 'low', 'close'],
        stock_code=['600000.SH'],
        period='1d',
        count=100,
        dividend_type='front', # 可选: 'none', 'front', 'back', 'front_ratio', 'back_ratio', 'follow'
        subscribe=True
    )
    
    df = data['600000.SH']
    print(df.tail())

3. 获取除权除息日和复权因子

如果你需要自主计算复权价格,或者在策略中记录除权除息事件,可以使用 ContextInfo.get_divid_factors() 接口获取指定股票的除权除息日和复权因子映射关系:

def handlebar(ContextInfo):
    if not ContextInfo.is_last_bar():
        return
        
    # 获取浦发银行的除权除息日和复权因子
    factors = ContextInfo.get_divid_factors('600000.SH')
    print("除权除息因子数据:", factors)

4. 经典 API 的复权参数对照

如果你使用的是较早的 get_history_dataget_market_data 接口,其复权参数定义如下:

ContextInfo.get_history_datadividend_type 参数:

  • 0:不复权
  • 1:向前复权
  • 2:向后复权
  • 3:等比向前复权
  • 4:等比向后复权
# 示例:获取2天前复权收盘价
his_dict = ContextInfo.get_history_data(len=2, period='1d', field='close', dividend_type=1)

5. 实盘注意事项

  1. 分笔数据(Tick)不复权:在订阅和获取 tick 级实时分笔数据时,返回的均是不复权的真实成交价。若策略基于 Tick 驱动且需要复权价格,需结合日线复权因子自行换算。
  2. 数据补充:在实盘运行前,请务必通过 QMT 客户端的 “数据管理” -> “补充数据” 功能,完整下载所需品种的历史日线及除权除息数据,否则可能导致复权因子缺失,计算出错误的复权价格。