🚀 AI 一键生成 ptrade 策略代码

ptrade 平台 run_interval 函数如何使用?运行时间是什么时候?

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

问题描述

run_interval用法及运行时间

/

解决方案

ptrade 中 run_interval 函数详解

在 ptrade 量化交易平台中,run_interval 是一个非常重要的定时周期性函数,主要用于实现高频的定时任务。它可以让策略以设定的时间间隔(精确到秒)周期性地执行指定的自定义函数。

1. 函数简介与使用场景

  • 函数定义run_interval(context, func, seconds=10)
  • 使用场景仅在交易模块可用(回测模块不支持)。
  • 接口说明:用于以设定时间间隔(单位为秒)周期性运行指定函数,可对运行触发时间间隔进行指定。

2. 运行时间规则

run_interval 设定的任务主要在盘中交易时间运行(通常为 9:30~11:30 和 13:00~15:00,具体以券商实际配置为准)。

3. 参数说明

  • context: Context 对象,存放有当前的账户及持仓信息。
  • func: 自定义函数名称。此函数必须以 context 作为唯一参数(例如 def my_func(context):)。
  • seconds: 设定时间间隔(单位为秒),取值为正整数(int)。

4. 重要注意事项

  1. 调用位置:该函数只能在初始化阶段的 initialize 函数中调用。
  2. 最小时间间隔seconds 设置的最小时间间隔为 3秒。如果传入的值小于 3 秒,系统会默认将其设定为 3 秒。
  3. 多线程并行:该函数可以多次设定,以实现多个不同的定时任务。这些任务会以多个线程并行运行,因此在编写策略时,务必小心处理不同线程之间的逻辑关联和变量共享问题,避免出现竞态条件。

5. 代码示例

以下是一个完整的策略示例,展示了如何使用 run_interval 每隔 10 秒获取一次指定股票的行情快照:

# 定义一个周期处理函数,每10秒执行一次 
def initialize(context):
    # 设定每 10 秒运行一次 interval_handle 函数
    run_interval(context, interval_handle, seconds=10)
    
    # 设置全局变量和股票池
    g.security = '600570.SS'
    set_universe(g.security)

# 自定义周期运行函数,必须包含 context 参数
def interval_handle(context):
    # 获取股票的实时行情快照
    snapshot = get_snapshot(g.security)
    # 打印快照信息到日志
    log.info("每10秒获取的行情快照: %s" % snapshot)

# 盘中处理函数(必选结构,即使为空也需要保留)
def handle_data(context, data):
    pass

通过合理使用 run_interval,您可以轻松实现如高频监控、动态撤单、盘口数据抓取等复杂的交易逻辑。