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

QMT 平台如何在 K 线图上显示自定义文字?(附 Python 源码)

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

问题描述

qmt 策略可视化:利用 ContextInfo.draw_text 在 K 线图指定位置绘制文字
怎么在 qmt 的主图 K 线图上显示自定义的文字内容?

解决方案

QMT 策略可视化:利用 ContextInfo.draw_text 在 K 线图指定位置绘制文字

在 QMT 量化交易平台中,为了直观地观察策略的买卖信号或特定指标状态,我们经常需要在 K 线图(主图或副图)上绘制自定义的文字内容。QMT 提供了丰富的绘图 API,其中 ContextInfo.draw_text() 就是专门用于在图形上显示文字的函数。


1. ContextInfo.draw_text() 函数介绍

1.1 函数用法

ContextInfo.draw_text(condition, position, text)

1.2 参数释义

  • condition (bool/int):触发绘制文字的条件。当条件为 True 或非 0 值时,才会在当前 Bar 上绘制文字。如果想每根 K 线都绘制,可以直接传入 1True
  • position (number):文字显示的高度位置(纵坐标)。通常传入某个价格数值,例如当前 K 线的最高价 high、最低价 low 或收盘价 close
  • text (string):需要显示的自定义文字内容。

2. 核心示例:在主图 K 线图上标注买卖文字

以下是一个完整的 QMT 策略示例。该策略在 handlebar 中获取当前 K 线的开盘价和收盘价,当**收盘价大于开盘价(阳线)时,在 K 线最高价上方绘制“阳线”字样;当收盘价小于开盘价(阴线)**时,在 K 线最低价下方绘制“阴线”字样。

#encoding:gbk

def init(ContextInfo):
    # 初始化设置默认股票池
    ContextInfo.set_universe(['600000.SH'])

def handlebar(ContextInfo):
    # 获取当前主图的开盘价和收盘价
    open_price = ContextInfo.get_market_data(['open'])
    close_price = ContextInfo.get_market_data(['close'])
    high_price = ContextInfo.get_market_data(['high'])
    low_price = ContextInfo.get_market_data(['low'])
    
    # 确保获取到了有效的数据
    if open_price is None or close_price is None:
        return
        
    # 条件1:如果是阳线,在最高价位置绘制“阳线”
    is_yang = close_price > open_price
    ContextInfo.draw_text(is_yang, high_price, '阳线')
    
    # 条件2:如果是阴线,在最低价位置绘制“阴线”
    is_yin = close_price < open_price
    ContextInfo.draw_text(is_yin, low_price, '阴线')

3. 实用技巧与注意事项

  1. 文字重叠问题:如果直接将 position 设置为 high_pricelow_price,文字可能会与 K 线的实体或影线重合。建议在传入高度时进行微调,例如:
    • 向上偏移:high_price * 1.01(在最高价上方 1% 处显示)
    • 向下偏移:low_price * 0.99(在最低价下方 1% 处显示)
  2. 运行位置设置:在【策略编辑器】的【基本信息】中,将“位置”设置为 主图主图叠加,编译并运行策略后,文字即可完美呈现在主图 K 线图上。
  3. 编码格式:QMT 策略文件头部必须声明 #coding:gbk#encoding:gbk,否则代码中的中文文字可能会出现乱码。