🚀 AI 一键生成 joinquant 策略代码
立即体验
👉 AI 生成代码 👈

JoinQuant聚宽回测:使用record函数绘制自定义指标曲线(如RSI)

joinquant | 发布时间: 2026/6/1
以下内容由 EasyQuant 生成。

问题描述

请问如何在回测结果中打印一个自定义指标的曲线?

之前看到别人在回测结果的页面上,收益曲线下方,打印了一个自定义指标的曲线,比如 rsi 曲线,请问调用哪个接口可以实现呢

解决方案

在 JoinQuant(聚宽)量化平台上,要在回测结果页面的收益曲线下方绘制自定义指标的曲线(例如 RSI、均线等),你需要调用专门的画图函数:record()

record() 函数详解

record() 是聚宽提供的回测环境/模拟专用 API,用于在图表上描画额外的自定义曲线。

调用格式:

record(**kwargs)

参数说明:

  • 接受一个或多个 key=value 形式的参数。
  • key:作为图表上显示的曲线名称(图例)。
  • value:当前时间点该指标的具体数值。注意:值必须是标量(如整数、浮点数),不能是列表(list)。

代码示例

以下是一个简单的策略示例,展示了如何在 handle_data 中计算指标并使用 record() 绘制出来:

# 导入聚宽函数库
import jqdata

def initialize(context):
    # 设定要操作的股票:平安银行
    g.security = '000001.XSHE'
    # 设定沪深300作为基准
    set_benchmark('000300.XSHG')
    # 开启动态复权模式(真实价格)
    set_option('use_real_price', True)

def handle_data(context, data):
    security = g.security
    
    # 获取股票的收盘价数据
    close_data = attribute_history(security, 5, '1d', ['close'])
    
    # 计算自定义指标:例如过去五天的平均价格 (MA5)
    MA5 = close_data['close'].mean()
    
    # 获取当前价格
    current_price = data[security].close
    
    # ---------------------------------------------------------
    # 核心步骤:使用 record 函数绘制曲线
    # 这里我们同时绘制两条曲线:当前价格 和 5日均线
    # ---------------------------------------------------------
    record(Price=current_price, MA5=MA5)
    
    # 也可以画一条固定值的参考线,例如 RSI 的超买超卖线
    # record(Overbought=70, Oversold=30)

💡 使用 record() 的重要注意事项

  1. 调用时机:如需调用该函数,需要从回测开始时就调用,不支持在回测周期中间时段突然开始调用,否则可能会导致图表绘制异常。
  2. 数据频率展示:聚宽的图表是按天展现的。如果您使用的是“按分钟回测”,图表上画出的点是您当天最后一次调用 record 传入的值(而不是每分钟都画一个点)。
  3. 时间界限:以 16:00 为界限,16:00 之后绘制的数据会归属于第二天。
  4. 数据类型:传入的 value 必须是单个数值,如果你计算出的指标是一个 Pandas Series 或 List,请提取出当天的具体数值(例如 rsi_value[-1])后再传入 record()

通过合理使用 record() 函数,你可以非常直观地在回测结果中观察你的自定义指标(如 RSI、MACD、布林带等)与策略收益、标的价格之间的关系,极大地提升策略分析的效率。