我想实现,加载主连rb888,实现回测期权的目的。
架构优缺点:架构优点是可以拉长测试时间;同时期货价格也比较准确。架构的缺点:主力合约被切换后,还有一段时间可以交易。在这个架构内,只能交易是主力的那个时间段。
实现思路如下:
一、测试环境:交易策略加载主连rb888。
二、策略刚开始运行时,判断当时主力合约,比如rb2505。然后动态加载rb2505相关的期权合约。(多图层运行,一个888合约,带n个call,n个put合约)
三、策略进入交易代码,交易rb2505期权。
四、价格波动大的时候,有新的期权合约出现,则继续加载。
五、判断主力合约是否变换。如果变化了,在没有持仓的情况下,卸载rb2505期权。加载rb2510期权。
六、继续下一阶段交易,交易rb2510期权。
一些涉及的技术点和代码如下:
1、判断主力合约:基础数据 dic> MainContract("TB_ROLLOVER_v2");
2、动态加载期权合约:subscribeBar()-订阅bar行情。
3、动态卸载UnsubscribeBar-取消订阅bar行情
搭建失败的原因:subscribeBar()订阅bar行情,这个函数运行后,会将整个程序重新运行ReRun()。之前时间段的交易数据就全部破坏掉了。无法达到连续回测的目的。
解决方法:还没找到。有实现方法吗?或者更好的方法?
回测数据自然要准备好数据,期权的合约多 自然就是这种结果
你要么一开始就订阅号全部,不存在中途订阅