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

qmt 策略图表可视化:如何使用 ContextInfo.paint 绘制主副图指标

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

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: qmt 策略图表可视化:ContextInfo.paint 主副图指标绘制

Question: 如何在 qmt 的 K 线图界面上输出自定义的技术指标曲线和柱状图?

解决方案

QMT 策略图表可视化:使用 ContextInfo.paint 绘制主副图指标

在 QMT(迅投量化交易系统)中,用户可以通过内置的绘图 API 将策略运算结果、自定义技术指标或交易信号直接渲染在客户端的 K 线界面上(主图或副图)。


1. 核心绘图函数 ContextInfo.paint()

ContextInfo.paint() 是 QMT 中最主要的画线函数,可以在每个 bar 驱动时输出对应的数值。

函数语法

ContextInfo.paint(name, value, index, line_style, color='white', limit='')

参数说明

  • name (string): 显示在指标输出窗口中的名称。
  • value (number): 当前 bar 需要输出的数值。
  • index (number): 绘制索引位置,通常填 -1,表示随主图时间轴/K 线位置逐 bar 绘制。
  • line_style (number): 线型样式:
    • 0: 曲线(Line)
    • 42: 柱状线(Histogram / Bar)
  • color (string): 颜色名称,默认 'white'。支持:'red', 'green', 'blue', 'yellow', 'white', 'cyan', 'magenta', 'brown'
  • limit (string): 画线控制参数:
    • 'noaxis': 不影响纵坐标轴缩放
    • 'nodraw': 只计算数值,不画出线条

2. 示例:绘制双均线(曲线)与 MACD 柱状图

handlebar 函数中,随着行情逐 K 线运行,调用 paint() 函数输出指标:

#coding:gbk
import numpy as np

def init(ContextInfo):
    ContextInfo.set_universe(['600000.SH'])

def handlebar(ContextInfo):
    # 获取收盘价
    close_prices = ContextInfo.get_market_data(['close'], count=30)
    if len(close_prices) < 20:
        return
    
    current_close = close_prices['close'][-1]
    ma5 = np.mean(close_prices['close'][-5:])
    ma20 = np.mean(close_prices['close'][-20:])
    
    # 1. 绘制 MA5 和 MA20 曲线 (线型 0)
    ContextInfo.paint('MA5', ma5, -1, 0, 'yellow')
    ContextInfo.paint('MA20', ma20, -1, 0, 'magenta')
    
    # 2. 绘制均线差值柱状图 (线型 42)
    diff = ma5 - ma20
    color = 'red' if diff >= 0 else 'green'
    ContextInfo.paint('MA_Diff', diff, -1, 42, color)

3. 其他辅助图形与文字绘制函数

除了 paint() 外,QMT 还提供了以下图形标记接口:

  1. 显示文字ContextInfo.draw_text(condition, position, text)
    • condition 为 True 时,在指定高度 position 标出 text 文字。
  2. 显示数字ContextInfo.draw_number(cond, height, number, precision)
    • 在高度 height 处绘制指定保留位数的数字。
  3. 绘制垂直线ContextInfo.draw_vertline(cond, number1, number2, color='', limit='')
    • number1number2 的纵向区间内画垂直线。
  4. 绘制小图标ContextInfo.draw_icon(cond, height, type)
    • type: 1 为椭圆,0 为矩形。

4. 主图与副图位置设置

绘图函数输出到主图还是副图,取决于策略在客户端的运行设置:

  • 在策略编辑器的**【基本信息】**设置项中,将【位置】选择为:
    • 主图主图叠加:指标直接绘制在 K 线主图上。
    • 副图:指标单独显示在主图下方的副图窗口中。