🚀 AI 一键生成 qmt 策略代码

QMT 进阶教程:如何通过代码控制回测日志的输出详细程度?

qmt | 发布时间: 2025/12/30
以下内容由 EasyQuant 生成。

问题描述

怎么减少回测时输出的日志信息?

解决方案

在 QMT(Quantitative Master Trading)平台的回测模式中,如果希望减少日志输出的信息量,可以通过设置 ContextInfo.data_info_level 属性来实现。

该属性用于控制回测平台输出日志的显示级别,系统只会显示大于等于该设定级别的日志。

设置方法

在策略的初始化函数 init(ContextInfo) 中进行赋值即可。

日志级别说明

级别值 含义 说明
0 信息 (Info) 默认值。输出最详细的日志,包括普通信息。
1 警告 (Warning) 屏蔽普通信息,仅输出警告、错误和致命错误。
2 错误 (Error) 推荐设置。仅输出错误和致命错误,能大幅减少日志刷屏。
3 致命 (Fatal) 仅输出导致程序崩溃或无法继续运行的致命错误。

代码示例

以下代码展示了如何将日志级别设置为“错误”级别(2),从而屏蔽掉大量的普通信息和警告信息:

# -*- coding: gbk -*-

def init(ContextInfo):
    # 设置回测系统输出日志显示级别
    # 0:信息, 1:警告, 2:错误, 3:致命
    # 设置为 2 代表只显示错误及以上级别的日志,从而减少回测时的日志输出
    ContextInfo.data_info_level = 2
    
    # 其他初始化代码...
    ContextInfo.set_account('6000000000')

def handlebar(ContextInfo):
    # 策略逻辑...
    pass

Q&A

Q: ContextInfo.data_info_level 设置后对实盘运行有影响吗?
A: 根据官方文档说明,此函数主要支持回测模式。在实盘模式下,日志输出通常由客户端的系统设置或策略中的 print 语句控制。

Q: 如果我只想看我自己打印的日志,不想看系统的日志怎么办?
A: 可以将 ContextInfo.data_info_level 设置为 23 来屏蔽系统底层的常规日志,然后在代码中使用 Python 原生的 print() 函数输出您关注的调试信息。

Q: 为什么设置了级别为 2,还是有日志输出?
A: 设置为 2 只会屏蔽 Info (0) 和 Warning (1) 级别的系统日志。如果策略运行过程中存在代码错误(Error)或严重故障(Fatal),或者您在代码中显式调用了 print,这些内容依然会被输出。