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

QMT 策略可视化:如何使用 draw_icon 在 K 线图上标记买卖信号图标?

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

问题描述

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

Title: QMT 策略可视化:使用 draw_icon 在 K 线图标记买卖信号图标

Question: 如何在 QMT 主图 K 线上根据条件绘制矩形或椭圆买卖信号图标?

解决方案

QMT 策略可视化:使用 draw_icon 在 K 线图标记买卖信号图标

在 QMT(迅投量化交易系统)中,为了更直观地复盘策略买卖点,可以使用 ContextInfo.draw_icon() 函数在主图 K 线对应的位置标记图标(矩形或椭圆)。


1. draw_icon 函数 API 说明

用法

ContextInfo.draw_icon(cond, height, type)

参数说明

  • cond (bool): 触发绘制图标的条件。当为 True 时绘制图标。
  • height (number): 图标绘制的高度位置(通常设为对应 K 线的收盘价 close、最高价 high 或最低价 low)。
  • type (number): 图标类型:
    • 0: 矩形图标
    • 1: 椭圆图标

返回值

无返回值。


2. 策略示例代码

以下是一个简单的均线交叉策略示例:当短期均线上穿长期均线(金叉买入)时,在最低价下方绘制矩形图标;当短期均线下穿长期均线(死叉卖出)时,在最高价上方绘制椭圆图标。

#encoding:gbk
import numpy as np

def init(ContextInfo):
    # 设置标的
    ContextInfo.set_universe(['600000.SH'])

def handlebar(ContextInfo):
    # 获取历史收盘价数据
    close_data = ContextInfo.get_market_data(['close'], stock_code=ContextInfo.get_universe(), period='1d', count=30)
    if close_data.empty or len(close_data) < 20:
        return
    
    # 计算 5 日与 20 日均线
    ma5 = close_data['close'].tail(5).mean()
    ma20 = close_data['close'].tail(20).mean()
    
    # 获取前一根 Bar 的均线数据用于判断交叉
    ma5_pre = close_data['close'].iloc[-6:-1].mean()
    ma20_pre = close_data['close'].iloc[-21:-1].mean()
    
    # 当前 K 线的最高价与最低价
    high_price = ContextInfo.get_market_data(['high'], stock_code=ContextInfo.get_universe(), period='1d', count=1)['high'].iloc[-1]
    low_price = ContextInfo.get_market_data(['low'], stock_code=ContextInfo.get_universe(), period='1d', count=1)['low'].iloc[-1]
    
    # 买入条件:5日均线上穿20日均线(金叉)
    buy_condition = (ma5_pre < ma20_pre) and (ma5 > ma20)
    # 卖出条件:5日均线下穿20日均线(死叉)
    sell_condition = (ma5_pre > ma20_pre) and (ma5 < ma20)
    
    # 1. 触发买入条件时,在最低价下方绘制矩形图标 (type=0)
    ContextInfo.draw_icon(buy_condition, low_price * 0.98, 0)
    
    # 2. 触发卖出条件时,在最高价上方绘制椭圆图标 (type=1)
    ContextInfo.draw_icon(sell_condition, high_price * 1.02, 1)

3. 注意事项

  1. 运行位置配置:要使图标在主图中正确显示,请在 QMT 策略编辑器的【基本信息】面板中,将显示位置设置为“主图”或“主图叠加”。
  2. 高度偏移设置:为了避免图标与 K 线实体重叠,建议对 height 参数进行适当偏移(例如买入信号设为 low * 0.98,卖出信号设为 high * 1.02)。
  3. 结合其他绘图函数:如需添加文字标记或数值,可配合使用 ContextInfo.draw_text()ContextInfo.draw_number() 接口。