3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 PTrade 量化交易平台中,initialize(context) 是一个必选的基础结构函数,它是策略运行的唯二必须定义的函数之一(另一个是 handle_data)。
initialize 函数只会在回测和交易启动的时候运行一次。
无论你的策略是日线级别、分钟级别还是 tick 级别,该函数都仅在策略最开始启动时被触发一次,用于完成所有的前期准备工作。
initialize 函数的主要作用是初始化策略的全局配置和全局变量。具体包括但不限于以下几个方面:
set_universe() 设定策略需要操作的股票或合约。set_benchmark() 设定策略评价指标的基准标的(如沪深300指数)。set_commission()、滑点 set_slippage()、成交比例 set_volume_ratio() 等。run_daily() 或 run_interval() 设定周期性运行的自定义函数。g 定义策略中需要在不同函数间共享的变量(例如 g.security = '600570.SS')。在 initialize 函数中,你只能使用特定的 API 接口。常用的包括:
set_universe, set_benchmark, set_commission, set_slippage, set_parameters, run_daily, run_interval, get_trading_day, get_user_name, is_trade 等。
以下是一个典型的 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") 来避免变量被意外重置。