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

QMT平台如何用柱状图(paint样式42)直观呈现策略每日动态回撤?

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

问题描述

QMT 策略可视化:利用 paint 函数的柱状线样式(42)直观呈现回测回撤
QMT 如何在副图上用柱状图(类似于成交量柱子)绘制策略的每日动态回撤?

解决方案

QMT 策略可视化:利用 paint 函数的柱状线样式(42)直观呈现回测回撤

在量化交易中,最大回撤(Drawdown)是衡量策略风险的核心指标。除了回测结束时输出的静态绩效指标外,在回测过程中动态、直观地观察每日回撤的变化趋势,能帮助我们更好地理解策略在极端行情下的抗风险能力。

QMT 平台提供了强大的绘图接口 ContextInfo.paint()。通过将线型参数设置为 42(柱状线),我们可以在副图上绘制出类似于成交量柱子的“回撤柱”,直观呈现策略的每日动态回撤。


一、 核心 API 介绍

1. 获取当前净值

  • 接口ContextInfo.get_net_value(index)
  • 释义:获取策略回测在当前 K 线(Bar)位置的资金净值(仅在回测模式下有效)。

2. 界面画图函数

  • 接口ContextInfo.paint(name, value, index, line_style, color = 'white', limit = '')
  • 关键参数
    • name (string):指标名称,如 'DynamicDrawdown'
    • value (number):要显示的数值(即计算出的回撤百分比)。
    • index (number):显示索引位置,填 -1 表示按当前主图 K 线索引显示。
    • line_style (number):线型。42 代表柱状线0 代表普通曲线)。
    • color (string):支持 'red'(红)、'green'(绿)、'blue'(蓝)、'yellow'(黄)等常用颜色。

二、 策略源码实现

请在 QMT 策略编辑器中新建 Python 策略,并写入以下代码:

#coding:gbk

def init(ContextInfo):
    # 设定基础股票池
    ContextInfo.set_universe(['000300.SH'])
    # 初始化历史最高净值
    ContextInfo.max_net_value = 1.0

def handlebar(ContextInfo):
    index = ContextInfo.barpos
    if index < 0:
        return
    
    # 1. 获取当前回测净值
    current_net_value = ContextInfo.get_net_value(index)
    
    # 2. 更新历史最高净值
    if current_net_value > ContextInfo.max_net_value:
        ContextInfo.max_net_value = current_net_value
        
    # 3. 计算当前动态回撤百分比 (例如: -5.2 表示回撤 5.2%)
    if ContextInfo.max_net_value > 0:
        drawdown = (current_net_value - ContextInfo.max_net_value) / ContextInfo.max_net_value * 100
    else:
        drawdown = 0.0
        
    # 4. 设定柱状图颜色:无回撤时显示为绿色,有回撤时显示为红色
    color = 'green' if drawdown == 0 else 'red'
    
    # 5. 调用 paint 函数,使用 42 样式绘制副图柱状线
    ContextInfo.paint('DailyDrawdown', drawdown, -1, 42, color, 'noaxis')

三、 如何在 QMT 界面中查看效果?

  1. 设置基本信息:在策略编辑器的“基本信息”中,将位置设置为**“副图”**。
  2. 补充数据:确保您已通过 QMT 的“数据管理”下载了回测标的及对应时间段的历史行情数据。
  3. 运行回测:点击“回测”按钮。回测完成后,主界面下方副图区域将出现名为 DailyDrawdown 的指标窗口。
  4. 效果呈现
    • 当策略净值创历史新高时,回撤为 0,副图上会显示绿色的极短柱子或不显示。
    • 当策略处于亏损或回调期时,副图会向下延伸出红色的柱状线,柱子越长代表当日回撤幅度越大,非常直观。