vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 3
声望: 2

在cta engine初始化策略的_init_strategy中,先调用策略的on_init,再恢复策略的variables数据。
然而在on_init中,已经会调用on_bar来根据最新的数据计算variables数据了,那还有没有必要强行再恢复之前保存的数据?
一种特殊情况是,如果variables数据的保存时间点距离现在不是最新的,比如周一关了系统,周三开盘前再打开,这时候其实on_init算出来的variables是基于最新到周三前的数据来计算的,是正确的;但是会被强行恢复为之前保存的周一数据,缺失了周二的,反倒是错误的。
所以建议既然在on_init中会基于最新的数据来计算variables,那就没有必要在之前再去恢复旧数据,那也就没有必要保存了。

Administrator
avatar
加入于:
帖子: 3902
声望: 208

对持仓状态有路径依赖的variables数据,只有通过保存才能恢复,比如移动止损中用到的intra_trade_high/long_stop等

Member
avatar
加入于:
帖子: 3
声望: 2

移动止损的这些数据,应该是只有在有持仓的时候才有值,我认为这些应该是属于持仓数据,持仓数据要和策略变量分开保存。
这样初始化的时候只需要恢复持仓数据,而策略变量则重新计算。

另外,在重启前后合约发生变化(如主力切换)的情况,这时候旧的变量是不能用的,但是目前版本里面没有做这块的校验而是直接加载旧变量值,会容易导致策略变量跳变,导致策略逻辑异常。

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3