3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)量化平台上,run_daily 函数默认是不能在周末(非交易日)运行的。
JoinQuant 的回测和模拟交易引擎是基于交易日历驱动的。无论是 run_daily、run_weekly、run_monthly 还是 handle_data,它们触发的前提都是“当前日期是一个有效的交易日”。
根据官方 API 文档的说明:
run_daily指定每天要运行的函数,可以在具体每天的某一分钟执行。但这里的“每天”实际上指的是每个交易日。
在周末、法定节假日等非交易日,由于市场休市,没有新的行情数据产生,也无法进行委托下单,因此策略引擎会自动跳过这些日期,不会触发任何定时函数。
如果您的策略逻辑“感觉”需要每天(包括周末)运行,通常可以从以下几个角度进行调整:
数据处理的延后或提前:
如果您需要在周末进行某些数据计算或状态重置,可以将其逻辑转移到周五收盘后(例如使用 run_daily(func, time='15:30') 或 after_trading_end)或者周一开盘前(例如使用 run_daily(func, time='09:00') 或 before_trading_start)来集中处理。
理解量化环境的本质:
在 A 股或国内期货市场,周末没有任何交易活动。即使您的代码在周末运行了,调用 get_price 获取到的也是周五的数据,调用 order 下单也会因为非交易时间而变成挂单(甚至被拒绝)。因此,将逻辑压缩到交易日内执行是完全可行且符合市场规律的。
外部系统辅助(仅限实盘/外部环境):
如果您是在本地使用 JQData 结合自己的任务调度系统(如 Linux 的 crontab 或 Python 的 schedule 库),您可以自由控制代码在周末运行。但这脱离了聚宽官网的回测/模拟交易引擎范畴。
总结:在聚宽官网的策略代码中,请将所有需要执行的逻辑安排在交易日的特定时间点,引擎会自动为您处理好日期的跳跃。