问题描述
解决方案
在 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 设置为 2 或 3 来屏蔽系统底层的常规日志,然后在代码中使用 Python 原生的 print() 函数输出您关注的调试信息。
Q: 为什么设置了级别为 2,还是有日志输出?
A: 设置为 2 只会屏蔽 Info (0) 和 Warning (1) 级别的系统日志。如果策略运行过程中存在代码错误(Error)或严重故障(Fatal),或者您在代码中显式调用了 print,这些内容依然会被输出。