🚀 AI 一键生成 joinquant 策略代码

JoinQuant 聚宽平台 run_daily 函数周末运行机制详解

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

问题描述

run_daily可以周末运行吗?

我的策略需要每天都运行,包括周末

解决方案

在 JoinQuant(聚宽)量化平台上,run_daily 函数默认是不能在周末(非交易日)运行的

为什么不能在周末运行?

JoinQuant 的回测和模拟交易引擎是基于交易日历驱动的。无论是 run_dailyrun_weeklyrun_monthly 还是 handle_data,它们触发的前提都是“当前日期是一个有效的交易日”。

根据官方 API 文档的说明:

run_daily 指定每天要运行的函数,可以在具体每天的某一分钟执行。但这里的“每天”实际上指的是每个交易日

在周末、法定节假日等非交易日,由于市场休市,没有新的行情数据产生,也无法进行委托下单,因此策略引擎会自动跳过这些日期,不会触发任何定时函数。

应对策略与建议

如果您的策略逻辑“感觉”需要每天(包括周末)运行,通常可以从以下几个角度进行调整:

  1. 数据处理的延后或提前
    如果您需要在周末进行某些数据计算或状态重置,可以将其逻辑转移到周五收盘后(例如使用 run_daily(func, time='15:30')after_trading_end)或者周一开盘前(例如使用 run_daily(func, time='09:00')before_trading_start)来集中处理。

  2. 理解量化环境的本质
    在 A 股或国内期货市场,周末没有任何交易活动。即使您的代码在周末运行了,调用 get_price 获取到的也是周五的数据,调用 order 下单也会因为非交易时间而变成挂单(甚至被拒绝)。因此,将逻辑压缩到交易日内执行是完全可行且符合市场规律的。

  3. 外部系统辅助(仅限实盘/外部环境)
    如果您是在本地使用 JQData 结合自己的任务调度系统(如 Linux 的 crontab 或 Python 的 schedule 库),您可以自由控制代码在周末运行。但这脱离了聚宽官网的回测/模拟交易引擎范畴。

总结:在聚宽官网的策略代码中,请将所有需要执行的逻辑安排在交易日的特定时间点,引擎会自动为您处理好日期的跳跃。