🚀 AI 一键生成 qmt 策略代码

QMT量化平台:使用新版Tick数据与ContextInfo.paint画图指南

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

问题描述

新版tick数据,怎么采用contextinfo.paint画图

新版tick数据,怎么采用contextinfo.paint画图

解决方案

在QMT(迅投QMT量化交易平台)中,想要使用新版Tick数据(分笔数据)并通过 ContextInfo.paint 函数在图表上画图,主要分为两个步骤:首先获取最新的Tick数据,然后提取需要的数值并调用画图接口。

核心API介绍

  1. 获取Tick数据:推荐使用 ContextInfo.get_full_tick(stock_code=[]),它会返回一个包含最新分笔数据的字典,包含 lastPrice(最新价)、volume(成交量)等字段。
  2. 画图函数ContextInfo.paint(name, value, index, line_style, color, limit)。其中 index-1 表示按主图当前索引显示。

完整Python策略示例

以下是一个完整的策略代码,演示如何在实时行情到来时,获取最新Tick的最新价,并将其绘制在图表上:

#coding:gbk
def init(ContextInfo):
    # 初始化时可以设置股票池,或者直接依赖主图品种
    pass

def handlebar(ContextInfo):
    # 1. 确保只在最新的一根K线(实时行情)上进行Tick级别的处理
    # 历史K线回测阶段不处理Tick画图
    if not ContextInfo.is_last_bar():
        return

    # 2. 获取当前主图的股票代码
    stock_code = ContextInfo.stockcode
    if not stock_code:
        return

    # 3. 获取最新分笔数据 (Tick数据)
    # 传入当前股票代码列表
    tick_data = ContextInfo.get_full_tick([stock_code])

    # 4. 解析数据并画图
    if stock_code in tick_data:
        # 提取最新价 (lastPrice)
        last_price = tick_data[stock_code]['lastPrice']
        
        # 如果价格有效,则进行绘制
        if last_price > 0:
            # 使用 paint 函数画图
            # 参数说明:
            # 'Tick_Price': 指标名称
            # last_price: 需要绘制的数值
            # -1: 显示索引位置,-1表示当前主图最新K线索引
            # 0: 线型,0表示曲线
            # 'red': 颜色
            # 'noaxis': 画线控制,不影响坐标画线
            ContextInfo.paint('Tick_Price', last_price, -1, 0, 'red', 'noaxis')
            
            # 你也可以打印出来用于调试
            # print(f"当前Tick最新价: {last_price}")

代码逻辑解析

  1. ContextInfo.is_last_bar():在盘中,最后一根K线每变动一次(即每个Tick到来时),handlebar 都会被执行一次。加上这个判断可以过滤掉历史K线的计算,只在实时Tick驱动时执行画图逻辑。
  2. ContextInfo.get_full_tick():传入主图代码,获取最新的盘口快照。返回的字典中 lastPrice 即为最新成交价。
  3. ContextInfo.paint():将提取到的 last_price 绘制到界面上。由于是在同一个K线(Bar)上不断接收Tick,paint 函数会不断更新当前K线位置上的这个指标点。

注意事项

  • paint 函数绘制的图形是依附于K线(Bar)的。如果你在日线周期下运行该策略,Tick数据的变动只会导致当前这根日线上的指标点上下跳动,而不会形成一条连续的Tick级别曲线。如果需要看连续的线,建议将主图周期切换为更小的周期(如1分钟线或Tick图)。
  • 确保策略运行模式为实盘/模拟运行模式,因为Tick驱动和 get_full_tick 在实时行情下才有意义。