3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)量化平台中,针对月度调仓或定期统计的策略,推荐使用 run_monthly 定时运行函数。通过灵活配置 monthday 参数,可以轻松实现基于正向或倒数交易日的定时调度。
在 run_monthly 函数中,monthday 参数支持使用负数来指定从月末倒数计算的交易日。例如:
monthday = -1:表示每月的最后一个交易日(倒数第一个交易日)。monthday = -2:表示每月的倒数第二个交易日。monthday = -N:表示每月的倒数第 N 个交易日。def initialize(context):
# 开启动态复权模式
set_option('use_real_price', True)
# 设置在每月倒数第一个交易日的 09:30 执行 rebalance 函数
run_monthly(rebalance, monthday=-1, time='09:30', reference_security='000300.XSHG')
def rebalance(context):
log.info("今天是本月最后一个交易日,执行调仓逻辑:%s" % context.current_dt)
# 在此处编写买卖逻辑
run_monthly 的完整调用语法如下:
run_monthly(func, monthday, time='9:30', reference_security='000001.XSHG', force=False)
context。1):表示当月第 1 个交易日。-1):表示当月倒数第 1 个交易日。'09:30', '14:50', '15:30' 等。'every_bar':按回测/模拟的频率每 Bar 运行一次(通常在日线或分钟级别使用)。'000001.XSHG'(上证指数)。针对期货等特殊交易时间的品种,建议设置为对应的合约或主向合约(如 'IF9999.CCFX')。False,避免不必要的重复触发。monthday 绝对值超出了当月的实际交易日总数,JoinQuant 默认会取最临近的交易日执行。例如当月只有 20 个交易日而设置了 monthday=22 或 monthday=-22,引擎会自适应匹配。run_daily/run_weekly/run_monthly 系列计划任务函数管理运行时间,避免与 handle_data 混用以提高策略执行效率。