3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化平台中,遇到**“函数只能在初始化阶段调用”的报错,通常是因为您将仅限在 initialize 函数中使用的 API**,错误地写在了 handle_data、before_trading_start 或其他自定义函数中。
initialize 中调用的函数根据 ptrade API 文档,以下函数必须且只能在 initialize(context) 中调用:
run_daily()、run_interval()set_universe()(设置股票池)、set_benchmark()(设置基准)、set_parameters()(设置策略配置参数)set_commission()(设置佣金)、set_slippage()(设置滑点)、set_fixed_slippage()、set_volume_ratio()、set_limit_mode()、set_yesterday_position()❌ 错误示例(会导致报错):
def initialize(context):
g.security = '600570.SS'
def handle_data(context, data):
# 错误:set_universe 不能在 handle_data 中调用
set_universe(g.security)
# 错误:run_daily 不能在 handle_data 中调用
run_daily(context, my_func, time='14:30')
✅ 正确示例(修复报错):
def initialize(context):
g.security = '600570.SS'
# 正确:在 initialize 中调用
set_universe(g.security)
# 正确:在 initialize 中设置定时任务
run_daily(context, my_func, time='14:30')
def my_func(context):
log.info("执行定时任务")
def handle_data(context, data):
# 盘中处理逻辑
pass
def initialize(context): 函数的代码块内部。g.xxx 来在 initialize 和其他函数之间共享数据。