问题描述
解决方案
在PTrade量化交易平台中,handle_data(context, data) 是处理策略交易逻辑的核心盘中事件函数。它的执行频率并不是在代码内部直接通过函数参数设置的,而是由您在创建回测任务或实盘交易时,在平台界面上选择的“策略运行周期(频率)”来决定的。
根据PTrade API文档,handle_data 的执行频率主要分为以下两种级别:
1. 日线级别(Daily)
当您在回测配置中选择日线频率时:
- 执行频率:每天执行一次。
- 回测环境运行时间:每个交易日的 15:00 触发执行。
- 交易环境运行时间:尾盘固定时间(允许券商可配),默认为 14:50 分。
2. 分钟级别(Minute)
当您在回测配置中选择分钟频率时:
- 执行频率:每分钟执行一次。
- 回测环境运行时间:每个交易日的 9:31 到 15:00,在每根分钟K线结束时触发。
- 交易环境运行时间:每个交易日的 9:30 到 14:59。
💡 补充说明:Tick级别策略
需要注意的是,handle_data 函数仅满足日线和分钟级别的盘中处理。如果您需要运行Tick级别(如每3秒执行一次)的高频策略,不能依赖 handle_data,而应该使用 tick_data(context, data) 函数或者通过 run_interval 定时任务来实现。
代码示例
无论您在界面上选择的是日线还是分钟线,代码的基础结构是一致的:
def initialize(context):
# 初始化,设置股票池
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# 这里的代码将根据您在界面设置的频率(日线或分钟线)被周期性调用
# 获取当前价格
current_price = data[g.security]['close']
log.info('当前价格为: %s' % current_price)
# 简单的买入逻辑
if context.portfolio.cash > current_price * 100:
order(g.security, 100)
总结:要设置 handle_data 的执行频率,请在PTrade平台的回测参数设置页面,找到“运行频率”或“回测周期”选项,将其设置为“日线”或“分钟”即可。框架会自动按照对应的频率在交易时间内回调该函数。