问题描述
解决方案
在PTrade量化交易引擎中,一个允许运行的最基础策略结构必须包含两个核心函数:initialize 和 handle_data。这两个函数是策略运行的必选项,缺一不可。
1. initialize(context) - 初始化函数
使用场景:仅在回测、交易模块可用。
接口说明:
用于初始化一些全局变量,是策略运行的唯二必须定义函数之一。
注意事项:
该函数只会在回测和交易启动的时候运行一次。通常在这里设置股票池(set_universe)、基准(set_benchmark)、佣金费率(set_commission)以及定义全局变量(如 g.security)。
参数:
context: Context对象,存放有当前的账户及持仓信息。
2. handle_data(context, data) - 盘中处理函数
使用场景:仅在回测、交易模块可用。
接口说明:
该函数在交易时间内按指定的周期频率运行,是用于处理策略交易的主要模块。根据策略保存时的周期参数,分为每分钟运行和每天运行。
注意事项:
- 该函数每个单位周期执行一次。
- 如果是日线级别策略,每天执行一次(回测中通常在15:00执行)。
- 如果是分钟级别策略,每分钟执行一次。
- 非交易日不会触发。
参数:
context: Context对象,存放有当前的账户及持仓信息。data: 字典(dict),存放当前周期的数据,可通过data[security]获取标的信息。
简单完整的策略示例
以下是一个包含这两个必选函数的极简策略框架:
def initialize(context):
# 初始化全局变量,设置要操作的股票池
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# 盘中逻辑处理,例如买入100股
order(g.security, 100)
除了这两个必选函数外,PTrade还提供了 before_trading_start(盘前事件)、after_trading_end(盘后事件)和 tick_data(Tick级处理)等可选函数,供开发者根据策略需求按需使用。