问题描述
请问关于获取context的current_dt 中 09:30:00的时间知识点在哪里找到?
解决方案
在 JoinQuant 聚宽量化平台的 API 文档中,关于 context.current_dt 获取到 09:30:00 的知识点主要分布在以下几个部分:
1. handle_data 运行策略(可选)
在 handle_data 函数的说明中,明确指出了日级模拟盘的实际运行时间与逻辑时间的差异:
对于使用当日开盘价撮合的日级模拟盘,在9:25集合竞价完成时就可以获取到开盘价,出于减少并发运行模拟盘数量的目的,我们会提前到 9:27~9:30之间运行,策略内获取到逻辑时间(context.current_dt)仍然是 9:30。
2. run_daily 定时运行策略
在 run_daily 等定时运行函数的说明中,也有类似的描述:
在日级模拟中使用时,如果设置
time='9:30',策略的实际运行时间是 9:27~9:30之间。策略内获取到逻辑时间(context.current_dt)仍然是 9:30。
3. 模拟盘注意事项
在“模拟盘注意事项”章节中,也提到了这一点:
在日级模拟中使用时,使用
handle_data或者run_daily中time='9:30',策略的实际运行时间是 9:27~9:30之间;股指期货在9:27~9:30之间有可能没有产生集合竞价,会出现9:30下单提示该标的截至到目前成交量为0 ,可以忽略或者在9:31及之后运行。
4. Context 对象说明
在 Context 对象的属性列表中,对 current_dt 的基本定义是:
current_dt: 当前单位时间的开始时间,[datetime.datetime]对象。
总结
当您在日频策略(无论是使用 handle_data 还是 run_daily(..., time='9:30'))中打印或获取 context.current_dt 时,系统返回的时间是 09:30:00。这是一个逻辑时间,代表策略在开盘时触发。但在真实的模拟交易环境中,为了系统性能和获取开盘价,底层引擎实际上是在 9:27 到 9:30 之间执行您的代码的。这种设计既保证了您能以开盘价进行撮合,又维持了时间戳的一致性。