3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant 聚宽平台中,run_daily 的 time 参数确实不支持直接传入 '5m' 这种格式。time 参数只接受具体的时间字符串(如 '09:30')或者 'every_bar'。
要实现每 5 分钟执行一次操作,你需要将策略的运行频率设置为“分钟”,然后使用 'every_bar' 让函数每分钟触发一次,并在函数内部通过判断当前时间(context.current_dt)的分钟数是否为 5 的倍数来决定是否执行核心逻辑。
以下是具体的代码示例:
# 导入聚宽函数库
import jqdata
def initialize(context):
# 设定基准和真实价格模式
set_benchmark('000300.XSHG')
set_option('use_real_price', True)
# 注册定时运行函数,设置为每分钟触发一次
# 注意:回测界面的运行频率必须选择“分钟”
run_daily(market_open, time='every_bar')
def market_open(context):
# 获取当前时间的分钟数
current_minute = context.current_dt.minute
# 判断分钟数是否为 5 的倍数(即 0, 5, 10, 15...)
if current_minute % 5 == 0:
# 在这里写你每 5 分钟需要执行的操作
log.info("当前时间:%s,执行 5 分钟定时操作", context.current_dt)
# 示例:获取数据或下单
# order('000001.XSHE', 100)
'every_bar' 只会在每天开盘时触发一次。context.current_dt.minute % 5 == 0 确保了只有在分钟数为 0, 5, 10, 15 等时刻,才会进入 if 语句内部执行你的交易逻辑。其余 4 分钟函数虽然被调用,但会直接跳过,不会消耗太多资源。handle_data):你也可以不使用 run_daily,而是直接使用 handle_data(context, data) 函数,并在里面加上同样的 if context.current_dt.minute % 5 == 0: 判断,效果是完全一样的。