3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 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) 函数中调用。'000016.SS'。