# 按周、按月定时运行函数

run_weekly(func, date_rule=1, reference_security=None, time_rule="open", hours=None, minutes=None, weekday=None)
run_monthly(func, date_rule=1, reference_security=None, time_rule="open", hours=None, minutes=None, tradingday=None)
1
2

参数:

参数 说明
func 要运行的函数
date_rule 交易日位置规则;正数表示第 N 个交易日,负数表示倒数第 N 个交易日,不能为 0
weekday 【迁移兼容】run_weeklydate_rule 别名
tradingday 【迁移兼容】run_monthlydate_rule 别名
time_rule run_daily 相同,默认 "open"
hours / minutes 配合 after_open / before_close 使用的偏移
reference_security 【迁移兼容】参数,当前只保留签名

示例:

def init(context):
    run_weekly(rebalance_week_start, date_rule=1)
    run_weekly(rebalance_week_end, date_rule=-1)
    run_monthly(rebalance_month_start, date_rule=1)
    run_monthly(rebalance_month_end, tradingday=-1)

1
2
3
4
5
6

说明:run_weekly / run_monthly 基于完整交易日历判断周/月第 N 个交易日,不把回测窗口起止日误认为周初、月初、周末或月末;不按自然日触发。若完整交易日历不可读取,runner 会抛出 RuntimeError,避免错误触发周/月调度。run_daily / run_weekly / run_monthly 都在 handle_bar 前执行。