vn.py官网
开源量化社区
Member
avatar
加入于:
帖子: 298
声望: 73

只有日K数据可以进行CTA策略回测吗?

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

我只是计划学习股票的低频量化交易,日K线级别的回测对我来说已经足够了。前期调研主流平台的时候,看到论坛里说,只有日K线数据可以进行CTA策略回测的呀?能否请群里的老师和大牛确认一下?刚刚吭哧吭哧的下载了一堆历史日K线数据,要是不能用以回测就白费劲了。谢谢!

原贴在这里:https://www.vnpy.com/forum/topic/4996-qing-wen-vnpyzhi-chi-zhi-jie-shu-ru-ri-xian-shu-ju-jin-xing-ri-xian-hui-ce-ma-mei-you-fen-zhong-ji-bie-de-shu-ju

Member
avatar
加入于:
帖子: 3164
声望: 185

支持日线回测,按照原帖4楼做就可以回测了

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

谢谢回复。在读源代码的时候,在vnpy>app>cta_strategy>engine下面有对tick事件的处理函数,process_tick_event(self, event: Event),但是没有对bar的类似process_bar_event处理函数。好奇如果使用日K线做回测,策略里对on_bar函数进行策略描述,那这个bar事件由什么处理函数处理呢?

Administrator
avatar
加入于:
帖子: 5108
声望: 296

策略通过on_tick回调函数收到推送后,在自己策略对象内部通过BarGenerator(或者自己写K线合成逻辑)来合成K线,并且在合成完后调用on_bar函数

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

沪公网安备 31011502017034号