问题描述
/
解决方案
在 ptrade 量化平台中,一个策略里可以多次设定 run_daily 函数,以实现多个定时任务。官方 API 文档并没有对 run_daily 的具体数量设定硬性上限,您可以根据策略的实际需求配置多个不同的定时触发任务。
官方文档说明
根据 ptrade API 文档中关于 run_daily 的接口说明:
该函数可以多次设定,以实现多个定时任务。
示例代码
您可以在 initialize 函数中多次调用 run_daily,为不同的自定义函数指定不同的运行时间:
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
# 设定第一个定时任务:每天 9:31 执行获取财务数据
run_daily(context, get_finance, time='9:31')
# 设定第二个定时任务:每天 14:50 执行尾盘平仓逻辑
run_daily(context, close_position, time='14:50')
# 设定第三个定时任务:每天 10:00 执行特定监控
run_daily(context, monitor_market, time='10:00')
def get_finance(context):
log.info("执行早盘财务数据获取")
def close_position(context):
log.info("执行尾盘平仓逻辑")
def monitor_market(context):
log.info("执行盘中监控")
def handle_data(context, data):
pass
使用注意事项
虽然可以设置多个 run_daily,但在使用时需要注意以下几点:
- 调用位置:
run_daily函数只能在初始化阶段的initialize函数中调用。 - 时间设置限制(回测 vs 交易):
- 股票策略回测中:当回测周期为分钟时,
time的取值必须指定在09:31~11:30与13:00~15:00之间;当回测周期为日线时,无论设定值是多少,都只会在15:00执行。 - 实盘交易中:不受上述回测时间限制,可设置范围为
00:00~23:59。
- 股票策略回测中:当回测周期为分钟时,
- 性能考量:虽然没有明确的数量限制,但设置过多的定时任务可能会增加系统的调度负担,建议根据实际业务逻辑合理规划,避免在同一时间点触发大量耗时操作。