只有日K数据可以进行CTA策略回测吗?
- 首先vnpy的回测是基于tick数据或者1分钟K线数据的。通常每日使用米筐的数据,根据的你的用户身份,你可能是可以获得某个合约的历史tick数据(通常年费是2-3万多甚至更多)或者1分钟K线数据(通常年费是3千多), vnpy的回测引擎会把这些tick数或者1分钟K线数据合成为你的策略里指标需要的N分钟K数据。
- 你的指标应该是基于这个N分钟K线的几个或者成交量计算得到的。由此计算出开仓和平仓信号,同时也确定来开仓和平仓的价格。也就是说开仓和平仓的价格本质上来自于tick数据和1分钟K线数据。
- 如果你从其他的渠道只获得来某个合约的日K数据,而不是tick数据或者1分钟K线数据,那么以vnpy目前的回测机制是无法回测的,至少需要自己有针对性地修改。因为没有tick数据或者1分钟K线数据,你的策略的on_tick()是由tick数据推动的,on_bar()函数是有1分钟K线数据推动的,这个两种数据你都没有,策略的on_day_bar()【假设你就是这样命名的】是无法被执行的,因此是无法回测了。
- 就算你自己有针对性地修改了回测引擎,也可以on_day_bar()函数了,你的开仓价格和平仓价格因为没有tick数据和1分钟K线数据,只能够使用日K线的开、高、收、低之类的价格而使得测试因为太过粗糙而变得毫无意义。相当于你没有历史行情的细节,怎么能够进行精细的回测呢?可能对于股票之类无杠杆的合约还勉强算的上回测,而对于期货这样的高杠杆的合约,这样的回测几乎没有任何意义!
- 对于一根含有较大价格跳空的日K线,单从日K线本身是无法看出来的,跳空区间是无法开仓和平仓的,如果你没有tick数据或1分钟K线数据,想当然地认为你可以在日K线内部的某个价格进行交易,那可能会回测出错得离谱的结果!
- 建议vnpy初学者还是先注册个米筐的账户,先试用几个月,然后再购买。别把心思放在可以省钱的免费数据源上,因为麻烦的数据清洗和转换工作,让你的策略开发和调试变成无穷无尽的烦恼。