3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化平台中,如果在回测模块调用 get_cb_list 函数遇到报错或没有数据返回,根本原因在于该函数的使用场景限制。
根据 ptrade API 文档的明确规定:
get_cb_list 函数仅在交易模块可用。由于回测环境(Backtest)和实盘交易环境(Trade)在底层数据支持和接口开放权限上存在差异,get_cb_list 被设计为仅在实盘交易环境中提供实时或当天的可转债市场代码表。因此,当您在回测模块(如 initialize, handle_data 等回测上下文中)强行调用该接口时,系统无法提供对应的数据,从而导致报错或返回空数据。
is_trade() 函数来判断当前运行环境,从而避免在回测中执行仅限交易模块的函数。def handle_data(context, data):
if is_trade():
# 仅在交易环境中执行
cb_list = get_cb_list()
log.info(cb_list)
else:
# 回测环境的替代逻辑
log.info("当前为回测环境,跳过 get_cb_list 调用")
总结来说,请勿在回测模块中使用 get_cb_list,将其严格保留在实盘交易策略中使用即可解决此报错的关键。