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

如何在PTrade中设置定时任务在指定时间执行?

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

问题描述

PTrade中如何设置定时任务在指定时间执行?

解决方案

在PTrade量化交易平台中,设置定时任务主要依赖于两个核心API函数:run_daily(按日周期指定时间执行)和run_interval(按设定时间间隔周期执行)。这两个函数都必须在策略的initialize(初始化)阶段进行调用。

1. 使用 run_daily 按日指定时间执行

run_daily 用于以日为单位周期性运行指定函数,非常适合需要在每天特定时刻(如开盘、尾盘调仓、盘后数据处理)执行逻辑的策略。

语法与参数

run_daily(context, func, time='9:31')
  • context: Context对象,存放当前的账户及持仓信息。
  • func: 自定义函数名称,该函数必须以context作为参数。
  • time: 指定触发运行的时间点。交易场景可设置范围为 00:00~23:59

代码示例

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)
    # 每天 14:50 执行尾盘买入逻辑
    run_daily(context, tail_trade_logic, time='14:50')

def tail_trade_logic(context):
    log.info("执行尾盘定时任务")
    order(g.security, 100)

def handle_data(context, data):
    pass

2. 使用 run_interval 按固定时间间隔执行(仅限交易环境)

run_interval 用于以设定的时间间隔(单位为秒)周期性运行指定函数,适合高频监控或Tick级别的策略。

语法与参数

run_interval(context, func, seconds=10)
  • context: Context对象。
  • func: 自定义函数名称。
  • seconds: 设定时间间隔(单位为秒),取值为正整数。最小时间间隔为3秒(小于3秒默认设定为3秒)。

代码示例

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)
    # 每隔 10 秒执行一次监控逻辑
    run_interval(context, interval_monitor, seconds=10)

def interval_monitor(context):
    snapshot = get_snapshot(g.security)
    log.info("当前快照数据: %s" % snapshot)

def handle_data(context, data):
    pass

💡 核心注意事项

  1. 调用位置:这两个函数只能在初始化阶段的 initialize 函数中调用。
  2. 多任务支持:可以多次调用这些函数来设定多个不同的定时任务(多线程并行运行,需注意逻辑关联)。
  3. 回测时间限制:在股票策略回测中,如果回测周期为分钟,run_dailytime 取值需在 09:31~11:3013:00~15:00 之间;如果回测周期为日,无论设定多少都只会在 15:00 执行。实盘交易中不受此限制。