initialize模块的运行逻辑和日期计算问题

由bqvnp8tp创建,最终由hxgre 被浏览 4 用户

我在initialize模块初始化计数器(day_index),initialize模块逻辑如下

该计数器每天增加1,然后根据计数器取之执行不同股票的交易,用于测试平台交易逻辑;同时为了避免每天重复执行,对执行日期进行判断,第一次执行时日期更新为执行当天,然后第二次执行后因执行日期和当天日期相等,所以会跳过执行。代码逻辑如下:

在回测时该逻辑前5天每天都会执行交易,但是到了模拟交易,只会执行第一天交易(每天都执行第一天交易),导致交易计划之生成了第一天的,后续几天交易计划都是空。模拟盘中第二天执行日志如下;

这里有两个问题:

1、从日志看,似乎initialize模块每天都在执行,需要确认一下initialize模块是只在部署时执行一次,还是每天执行。如果是每天执行,类似这种计数器的逻辑该怎么实现

2、每日批量运行优势会到凌晨,比如本该6.17运行的日频任务,因为某些原因到了6.18的0点多或者1点多才运行,这个时候如何计算交易日历和日期判断,如下代码中的current_date取值是6.17还是6.18

if not is_trading_day(current_date, context): return

if context.last_exec_date == current_date_str: return







\

评论
  • 你是模拟交易的话,initialize都会执行。如果在模拟交易中有持久化的需求,可以把这类数据放在 context.user_store 属性,可以认为它是个字典。
{link}