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

PTrade 平台 set_benchmark 函数的正确调用位置及报错原因解析

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

问题描述

PTrade中set_benchmark函数可以在哪里调用?

在handle_data函数中调用set_benchmark报错

解决方案

在 PTrade 量化交易平台中,set_benchmark 函数用于设置策略的比较基准,前端展现的策略评价指标都基于此处设置的基准标的。

为什么在 handle_data 中调用会报错?

根据 PTrade API 文档的明确规定,set_benchmark 函数只能在 initialize 函数中使用

initialize 函数在策略启动时仅运行一次,用于初始化全局变量和策略的基础配置(如股票池、基准、滑点、手续费等)。而 handle_data 函数是按指定的周期频率(如每分钟或每天)重复运行的,用于处理盘中的交易逻辑。如果在 handle_data 中调用 set_benchmark,不仅不符合框架的设计规范,还会导致重复设置基准,从而引发报错。

正确的调用位置及示例

您应该将 set_benchmark 放在 initialize 函数中。如果不做基准设置,系统默认选定沪深300指数(000300.SS)的每日价格作为判断策略好坏和一系列风险值计算的基准。

正确的代码示例:

def initialize(context):
    # 设置我们要操作的股票池
    g.security = '000001.SZ'
    set_universe(g.security)
    
    # 正确位置:在 initialize 中将上证50(000016.SS)设置为参考基准
    set_benchmark('000016.SS')

def handle_data(context, data):
    # 盘中交易逻辑处理
    order('000001.SZ', 100)

总结

  • 可用模块:仅在回测、交易模块可用。
  • 调用位置必须且只能initialize(context) 函数中调用。
  • 参数说明:传入股票、指数或 ETF 的代码(字符串类型),例如 '000016.SS'