time_rule - 定时间运行

scheduler还可以用来做定时间运行,比如在每天开盘后的一小时后或一分钟后定时运行,这里有很多种组合可以让您达到各种自己想要达到的定时运行的目的。

使用的方法是和上面的 scheduler.run_daily() , scheduler.run_weekly()scheduler.run_monthly() 进行组合加入time_rule来一起使用。

注意:

  • market_open与market_close都跟随中国A股交易时间进行设置,即09:31~15:00。
  • 使用time_rule定时运行只会在分钟级别回测和实时模拟交易中有定义的效果,在日回测中只会默认依然在该天运行,并不能在固定的时间运行。
  • 在分钟回测中如未指定time_rule,则默认在开盘后一分钟运行,即09:31分。
  • 如果两个schedule,分别使用market_open 与market_close规则,但规则触发时间在同一时刻,则market_open的handle一定在market_close的handle前执行。
  • 目前暂不支持开盘交易(即 09:30分交易) ,所以time_rule(minute=0) 和time_rule(hour=0) 将不会触发任何事件。
  • market_open(minute=120)将在11:30执行, market_open(minute=121)在13:01执行,中午休市的区间会被忽略。
  • time_rule=’before_trading’表示在开市交易前运行scheduler函数。该函数运行时间将在before_trading函数运行完毕之后handle_bar运行之前。

time_rule: 定时具体几点几分运行某个函数。time_rule=’before_trading’ 表示开始交易前运行;market_open(hour=x, minute=y)表示A股市场开市后x小时y分钟运行,market_close(hour=x, minute=y)表示A股市场收市前x小时y分钟运行。如果不设置time_rule默认的值是中国A股市场开市后一分钟运行。

market_open, market_close参数如下:

参数 类型 注释
hour int - option [1,4] 具体在market_open/market_close后/前第多少小时执行, 股票的交易时间为[9:31 - 11:30],[13:01 - 15:00]共240分钟,所以hour的范围为 [1,4]
minute int - option [1,240] 具体在market_open/market_close的后/前第多少分钟执行,同上,股票每天交易时间240分钟,所以minute的范围为 [1,240],中午休市的时间区间会被忽略。
example:
  • 每天的开市后10分钟运行:

    1. scheduler.run_daily(function, time_rule=market_open(minute=10))
  • 每周的第t个交易日闭市前1小时运行:

    1. scheduler.run_weekly(function, tradingday=t, time_rule=market_close(hour=1))
  • 每月的第t个交易日开市后1小时运行:

    1. scheduler.run_monthly(function, tradingday=t, time_rule=market_open(hour=1))
  • 每天开始交易前运行:

    1. scheduler.run_daily(function, time_rule='before_trading')