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

qmt 平台如何使用 draw_text 与 draw_number 在主图 K 线上标记关键信号?

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

问题描述

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

Title: qmt 图表可视化:使用 draw_text 与 draw_number 在主图标记关键信号

Question: 如何在 qmt 主图 K 线上显示自定义文字和数值提示?

解决方案

qmt 图表可视化:使用 draw_text 与 draw_number 在主图标记关键信号

在 QMT(迅投量化交易系统)中,将交易信号、指标突破点或特定数值直观地标注在 K 线图上,可以极大地方便策略调试与盘中信号观察。QMT 提供了 ContextInfo.draw_text()ContextInfo.draw_number() 两个核心绘图 API,支持在满足指定条件时在图形对应位置画出文字与数字。


1. 函数 API 详细说明

1.1 显示文字提示:ContextInfo.draw_text()

  • 用法ContextInfo.draw_text(condition, position, text)
  • 参数说明
    • condition (bool):触发显示的条件(例如:True 或表达式 close > ma)。
    • position (number):绘制文字的纵坐标位置(通常传入当前 K 线的价格或指标值)。
    • text (string):需要显示的文本内容。

1.2 显示数值提示:ContextInfo.draw_number()

  • 用法ContextInfo.draw_number(cond, height, number, precision)
  • 参数说明
    • cond (bool):触发显示的条件。
    • height (number):显示数字的纵坐标高度位置。
    • number (number/string):显示的数字数值。
    • precision (int):保留的小数位数(取值范围 0 ~ 7)。

2. 经典使用场景与示例代码

以下策略代码展示了如何在 K 线图上:

  1. 当收盘价突破开盘价且幅度较大时标注“买入”文字。
  2. 在对应 K 线的上方标记出当时的收盘价数值。
#encoding:gbk

def init(ContextInfo):
    # 设置运行的默认标的
    ContextInfo.set_universe(['600000.SH'])
    print("绘图策略初始化完成")

def handlebar(ContextInfo):
    # 获取当前 K 线的收盘价与开盘价
    close_list = ContextInfo.get_market_data(['close'], period='1d', count=1)
    open_list = ContextInfo.get_market_data(['open'], period='1d', count=1)
    
    if close_list.empty or open_list.empty:
        return
        
    close_price = close_list['close'].iloc[-1]
    open_price = open_list['open'].iloc[-1]
    
    # 设定买入条件:收盘价高于开盘价 1%
    buy_condition = close_price > open_price * 1.01
    
    # 1. 在满足买入条件时,在最低价下方(价格 * 0.99)绘制文字提示
    low_list = ContextInfo.get_market_data(['low'], period='1d', count=1)
    low_price = low_list['low'].iloc[-1] if not low_list.empty else open_price
    
    ContextInfo.draw_text(buy_condition, low_price * 0.99, '买入信号')
    
    # 2. 在高点位置(高价 * 1.01)绘制当前收盘价数值(保留 2 位小数)
    high_list = ContextInfo.get_market_data(['high'], period='1d', count=1)
    high_price = high_list['high'].iloc[-1] if not high_list.empty else close_price
    
    ContextInfo.draw_number(buy_condition, high_price * 1.01, close_price, 2)

3. 注意事项与使用技巧

  1. 显示位置防重叠
    为了避免文字或数字与 K 线实体重叠,建议将 positionheight 设置在最高价之上(如 high * 1.01)或最低价之下(如 low * 0.99)。
  2. 运行位置配置
    在 QMT 【策略编辑器】的“基本信息”设置中,将位置选择为主图主图叠加,才能在主图 K 线上准确呈现标记效果。
  3. 配合其他绘图函数
    可以结合 ContextInfo.paint() 绘制均线,以及 ContextInfo.draw_icon() 绘制图标,构建完整的图表信号视觉展示系统。