3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在量化回测中,**滑点(Slippage)**是模拟真实交易中市场冲击成本、流动性损耗及交易延迟的关键参数。如果回测不设置滑点,策略表现往往会过于理想化。
QMT 平台提供了强大的滑点设置接口 ContextInfo.set_slippage(slippageType, slippage)。本文将详细介绍如何通过微调该函数的参数,完美契合不同的市场冲击场景。
ContextInfo.set_slippage(slippageType, slippage)
slippageType (滑点类型):
0:tick跳数设置滑点。即按照标的资产的最小变动价位(Tick Size)的倍数来计算滑点。常用于期货回测。1:按照固定值(价格)设置滑点。无论标的价格是多少,每笔交易扣除固定的价格绝对值(如 0.01 元)。常用于股票回测。2:价格比例设置滑点。按照成交价格的一定比例计算滑点(如 0.02%)。适合价格波动范围大或跨高低价股的策略。slippage (滑点值):对应的数值(跳数、价格绝对值或比例系数)。核心注意点:
- 该函数仅支持回测模式,在实盘/模拟运行模式下无意义。
- 必须在初始化函数
init(ContextInfo)中进行设置才能生效。- 代码中设置的滑点会覆盖策略编辑器回测参数面板中的手动设置。
#coding:gbk
def init(ContextInfo):
# 设置滑点类型为 0(Tick跳数),滑点值为 1 跳
ContextInfo.set_slippage(0, 1.0)
print("已设置回测滑点为:1 Tick")
def handlebar(ContextInfo):
pass
#coding:gbk
def init(ContextInfo):
# 设置滑点类型为 1(固定价格),滑点值为 0.02 元
ContextInfo.set_slippage(1, 0.02)
print("已设置回测滑点为固定价格:0.02 元")
def handlebar(ContextInfo):
pass
#coding:gbk
def init(ContextInfo):
# 设置滑点类型为 2(价格比例),滑点值为 0.001 (0.1%)
ContextInfo.set_slippage(2, 0.001)
print("已设置回测滑点为价格比例:0.1%")
def handlebar(ContextInfo):
pass
在回测运行过程中,如果需要动态检查或记录当前的滑点配置,可以使用 ContextInfo.get_slippage() 接口:
#coding:gbk
def init(ContextInfo):
ContextInfo.set_slippage(1, 0.01) # 设置固定价格滑点 0.01 元
def handlebar(ContextInfo):
# 获取当前策略设定的滑点字典
slippage_dict = ContextInfo.get_slippage()
# 返回格式通常为:{'slippage_type': 1, 'slippage': 0.01}
if ContextInfo.barpos == 0:
print("当前回测滑点配置:", slippage_dict)
通过合理微调 slippageType,您的 QMT 回测结果将更具实战参考价值,有效避免“回测林志玲,实盘罗玉凤”的量化陷阱。