3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 量化交易平台上,策略的可视化对于回测分析和实盘监控非常重要。通过 ContextInfo.paint() 函数,用户可以将策略计算出的自定义指标(如均线、动量指标、自定义信号等)实时绘制在副图上。本文将详细介绍 paint 函数的用法,并给出一个完整的副图指标绘制示例。
ContextInfo.paint() 是 QMT 中用于在图表上画线或柱状图的核心函数。
ContextInfo.paint(name, value, index, line_style, color = 'white', limit = '')
name (string): 需显示的指标名称(如 'Close', 'MyIndicator')。value (number): 当前 Bar 对应需要显示的数值。index (number): 显示的索引位置,填 -1 表示按主图 K 线索引(当前 Bar 索引)自动对齐显示。line_style (number): 线型。可选值:
0: 曲线42: 柱状线color (string): 颜色(不填默认为白色)。目前支持的颜色有:blue(蓝)、brown(棕)、cyan(蓝绿)、green(绿)、magenta(品红)、red(红)、white(白)、yellow(黄)。limit (string): 画线控制。可选值:
'noaxis': 不影响坐标画线'nodraw': 不画线以下是一个简单的 Python 策略示例。该策略获取当前 K 线的收盘价,并计算 5 日简单均线(MA5),然后使用 paint 函数将它们以不同颜色绘制在副图上。
#encoding:gbk
import numpy as np
def init(ContextInfo):
# 设定基础股票池
ContextInfo.set_universe([ContextInfo.stockcode])
print("初始化完成,开始运行策略...")
def handlebar(ContextInfo):
# 获取当前 K 线的索引位置
bar_index = ContextInfo.barpos
# 1. 获取当前 Bar 的收盘价
close_data = ContextInfo.get_market_data(['close'], stock_code=[ContextInfo.stockcode], count=5)
if close_data.empty:
return
current_close = close_data['close'].iloc[-1]
# 2. 计算 5 日均线 (MA5)
if len(close_data) >= 5:
ma5 = np.mean(close_data['close'].values)
else:
ma5 = current_close # 数据不足时用当前收盘价代替
# 3. 使用 paint 函数绘制指标
# 绘制收盘价曲线(白色,曲线)
ContextInfo.paint('ClosePrice', current_close, -1, 0, 'white', 'noaxis')
# 绘制 MA5 均线(黄色,曲线)
ContextInfo.paint('MA5', ma5, -1, 0, 'yellow', 'noaxis')
编写完上述代码后,为了让指标正确显示在副图上,您需要在 QMT 的【策略编辑器】中进行如下设置:
ClosePrice(白色)和 MA5(黄色)指标。