Closed weiguang-zz closed 3 years ago
@weiguang-zz 整个回测其实是轮询的方式,时间间隔可以足够低,即IntervalLevel的设置,可以支持tick 1.订单其实也是时间事件,因为一切的事件驱动,本质还是“轮询”,做过嵌入式驱动的“看门狗”都知道。 目前流行的事件驱动不过是把那一层屏蔽了。
2.收盘后5分钟执行操作,可以在on_trading_close之后设置一个timer来做。 大部分跟时间相关的操作都可以在on_xxx的回调里面来自定义。
3.嗯,级别越低,各方面要求越高,目前zvt定位是分钟级别的。
你的抽象很棒!可以通过扩展相应的回调函数来满足你的要求。 纯事件驱动最主要的问题是做多级别同步时很麻烦,而"区间套"之类的策略用轮询的方式会比较自然。 这跟个人的交易理念有关,相比精度,交易延时,个人更看重“全市场”的大局。
关于第二个问题,我其实是想说用户期待一个更简单的方式来处理时间事件,虽然你提供的分钟级别的回调能满足要求,但是用户需要在回调逻辑中进行各种判断。可以参考zipline的回测引擎,它提供对时间事件的建模,比如用户的策略如果想在收盘前5分钟做一些事情,只需要这么做
algo.schedule_function(func, date=every_day(), time=market_close(offset=5))
Thanks,不错。“某个时间点用户自定义函数“” 可以提供插入接口。 目前最原始的就是on_timestamp里面自由发挥了。 类似的常用的通用一些的功能,可以抽象出专门的插入接口,欢迎多提意见,一起完善。
不客气,加油加油
非常欣赏你对数据的抽象部分,非常赞,我本人对抽象也非常感兴趣,想就你对于回测的抽象跟你探讨下,从readme中看到的你对于回测的抽象是: 在某时间点,找到符合条件的标的,对其进行买卖,看其表现。 这种抽象有如下几种局限性:
鉴于此: 我觉得对于回测的抽象应该是: 当发生某个事件时(这个事件可以是时间事件、tick事件、订单事件、账户事件),对账户的投资组合进行调整,看其表现