3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
您好!导致您的 run_daily 函数在模拟环境下没有运行的核心原因在于时间字符串的格式错误。
在您的代码中:
run_daily(after_market_open, time='15:30',reference_security='000300.XSHG')
time='15:30' 里面的冒号 : 是中文全角冒号。Python 和 JoinQuant API 无法识别这种格式的时间字符串。您必须将其修改为英文半角冒号 :。
正确的代码应为:
run_daily(after_market_open, time='15:30', reference_security='000300.XSHG')
如果修改为半角冒号后仍然不运行,请检查以下几点:
after_market_open 这个函数,并且它接收 context 作为唯一参数。例如:def after_market_open(context):
log.info("收盘后函数运行,当前时间:" + str(context.current_dt))
# 您的逻辑代码
(注:通常 15:30 运行的函数习惯命名为 after_market_close 或 after_trading_end,不过函数名本身不影响运行,只要对应上即可。)initialize 中调用:run_daily 必须在 initialize(context) 初始化函数中进行注册调用,否则引擎无法识别您的定时任务。def initialize(context):
# 设定沪深300作为基准
set_benchmark('000300.XSHG')
# 开启动态复权模式(真实价格)
set_option('use_real_price', True)
# 注册定时运行函数,注意使用英文半角冒号
run_daily(after_market_open, time='15:30', reference_security='000300.XSHG')
def after_market_open(context):
# 这里的代码将在每个交易日的 15:30 执行
log.info("定时任务执行成功,当前时间:%s" % context.current_dt)
总结:写代码时请务必注意中英文符号的切换,尤其是标点符号(引号、括号、冒号、逗号等)必须使用英文半角状态输入法。修改冒号后,您的策略应该就能在模拟盘中按时运行了。