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

PTrade量化平台 initialize 函数的作用是什么?执行几次?

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

问题描述

PTrade中initialize函数的作用是什么,执行几次?

解决方案

PTrade 中 initialize 函数的作用与执行次数

在 PTrade 量化交易平台中,initialize(context) 是一个必选的基础结构函数,它是策略运行的唯二必须定义的函数之一(另一个是 handle_data)。

1. 执行次数

initialize 函数只会在回测和交易启动的时候运行一次。
无论你的策略是日线级别、分钟级别还是 tick 级别,该函数都仅在策略最开始启动时被触发一次,用于完成所有的前期准备工作。

2. 主要作用

initialize 函数的主要作用是初始化策略的全局配置和全局变量。具体包括但不限于以下几个方面:

  • 设置交易标的(股票池):使用 set_universe() 设定策略需要操作的股票或合约。
  • 设置比较基准:使用 set_benchmark() 设定策略评价指标的基准标的(如沪深300指数)。
  • 设置交易环境参数(主要用于回测):如设置佣金费率 set_commission()、滑点 set_slippage()、成交比例 set_volume_ratio() 等。
  • 设置定时任务:使用 run_daily()run_interval() 设定周期性运行的自定义函数。
  • 初始化全局变量:通过全局对象 g 定义策略中需要在不同函数间共享的变量(例如 g.security = '600570.SS')。

3. 可调用的 API 接口

initialize 函数中,你只能使用特定的 API 接口。常用的包括:
set_universe, set_benchmark, set_commission, set_slippage, set_parameters, run_daily, run_interval, get_trading_day, get_user_name, is_trade 等。

4. 代码示例

以下是一个典型的 initialize 函数配置示例:

def initialize(context):
    # 1. 初始化全局变量
    g.security = '600570.SS'
    
    # 2. 设置我们要操作的股票池
    set_universe(g.security)
    
    # 3. 设置参考基准为上证50
    set_benchmark('000016.SS')
    
    # 4. 设置回测佣金费率(万分之三,最低5元)
    set_commission(commission_ratio=0.0003, min_commission=5.0)
    
    # 5. 设置每天 9:31 定时运行自定义函数
    run_daily(context, my_custom_function, time='9:31')

def my_custom_function(context):
    log.info("定时任务执行")

def handle_data(context, data):
    # 策略主逻辑
    pass

注意事项
在实盘交易环境中,如果服务器环境重启拉起交易,initialize 函数会被重新调用。因此,在设置全局变量 g 时,需注意配合持久化处理(如 pickle)或使用 set_parameters(not_restart_trade="1") 来避免变量被意外重置。