🚀 AI 一键生成 ptrade 策略代码

ptrade 平台 run_daily 定时任务函数怎么用?运行时间如何设置?

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

问题描述

run_daily用法及运行时间

/

解决方案

在 ptrade 量化交易平台中,run_daily 是一个非常重要的定时周期性函数,用于以日为单位周期性地运行指定的自定义函数。以下是关于 run_daily 的详细用法和运行时间说明:

1. 函数原型

run_daily(context, func, time='9:31')

2. 参数说明

  • context: Context 对象,存放有当前的账户及持仓信息,必传参数。
  • func: 自定义函数名称。此函数必须以 context 作为参数(即 def func(context):),必传参数。
  • time: 指定周期运行的具体触发时间点。必传字段。

3. 运行时间详解

run_daily 的运行时间在回测环境和实盘交易环境下有所不同:

回测环境

  • 分钟级别回测time 的取值必须指定在交易时间内,即 09:31~11:3013:00~15:00 之间。
  • 日线级别回测:无论 time 设定值是多少,指定的函数都只会在每天的 15:00 执行。

交易环境(实盘/模拟盘)

  • 不受回测环境的时间限制,time 可设置的范围为全天:00:00~23:59

4. 注意事项

  1. 调用位置:该函数只能在初始化阶段的 initialize 函数中调用。
  2. 多任务支持:该函数可以多次设定,以实现多个不同的定时任务。
  3. 使用场景:仅在回测、交易模块可用,研究模块不可用。

5. 代码示例

以下是一个使用 run_daily 每天定时获取财务数据的策略示例:

# 定义一个财务数据获取函数,每天 9:31 执行一次 
def initialize(context):
    # 设定每天 9:31 运行 get_finance 函数
    run_daily(context, get_finance, time='9:31')
    
    g.security = '600570.SS'
    set_universe(g.security)

# 自定义定时运行的函数,必须包含 context 参数
def get_finance(context):
    # 获取恒生电子的资产总计数据
    re = get_fundamentals(g.security, 'balance_statement', 'total_assets')
    log.info(re)

def handle_data(context, data):
    pass

通过合理使用 run_daily,您可以将一些不需要每分钟或每个 tick 都执行的逻辑(如盘前数据准备、盘后数据统计、定时调仓等)分离出来,从而提高策略的运行效率。