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

qmt 平台如何动态获取回测滑点参数?ContextInfo.get_slippage() 使用详解

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

问题描述

qmt 动态成本计算:如何在 handlebar 中使用 get_slippage 获取回测滑点?
如何在qmt策略运行中获取当前设置的滑点参数?

解决方案

qmt 动态成本计算:如何在 handlebar 中使用 get_slippage 获取回测滑点?

在量化回测中,**滑点(Slippage)**是模拟真实交易中冲击成本的重要参数。为了在策略运行(handlebar)过程中动态获取当前设置的滑点,并进行更精确的交易成本或净值估算,QMT 提供了 ContextInfo.get_slippage() 接口。

本文将详细介绍该接口的使用方法、返回格式及代码示例。


1. 接口介绍

ContextInfo.get_slippage() 用于获取当前策略回测所设定的滑点参数。

  • 使用限制:此函数仅支持回测模式。在实盘或模拟运行模式下无意义。
  • 参数:无。
  • 返回值:返回一个字典(dict),包含以下键值对:
    • slippage_type:滑点类型(0 代表 tick 跳数设置,1 代表固定值价格设置,2 代表价格比例设置)。
    • slippage:具体的滑点数值。

2. 代码示例

以下是一个完整的 QMT 策略示例。我们在 init 中设置滑点,并在 handlebar 中通过 ContextInfo.get_slippage() 动态获取并打印该滑点参数:

#coding:gbk

def init(ContextInfo):
    # 设定基础股票池
    ContextInfo.set_universe(['000001.SZ'])
    
    # 设定策略回测滑点:按照固定值(价格)设置滑点值为 0.01
    # set_slippage 参数:(slippageType, slippage)
    ContextInfo.set_slippage(1, 0.01)

def handlebar(ContextInfo):
    # 仅在最后一根 Bar 打印滑点信息,避免日志过多
    if ContextInfo.is_last_bar():
        # 获取当前设置的滑点参数
        slippage_info = ContextInfo.get_slippage()
        
        print("当前回测滑点配置:", slippage_info)
        # 输出示例: {'slippage_type': 1, 'slippage': 0.01}
        
        # 提取具体的滑点值
        current_slippage = slippage_info.get('slippage', 0.0)
        print(f"当前滑点数值为: {current_slippage}")

3. 注意事项

  1. 双重设置优先级:回测滑点既可以在 QMT 策略编辑器的“回测参数”面板中手动设置,也可以在代码中通过 ContextInfo.set_slippage() 设置。若两处同时设置,以代码中设置的值为准
  2. 实盘模式兼容:由于该函数仅在回测时有效,若您的策略需要兼容回测与实盘,建议在使用前通过 ContextInfo.do_back_test 进行模式判断,避免实盘运行时报错。