为什么要用99.9%精度的数据回测
什么是Bar数据所谓的Bar数据,泛指普通的 K 线。在单独的每个Bar上面包含开盘价、收盘 价、最高价、最低价、成交量及时间。所有的Bar按照不同周期组合,并按照时间从先到后进行排列,由此形成为序列数据,整个序列称之为Bar数据。
如果交易策略是基于Bar数据回测。按照Bar数据的Bar数目,从第一个Bar到最后一个Bar,依次进行计算,如果公式中出现了调用Bar数据函数的,则取出当前Bar的相应值,进行运算。
Bar数据应用于非即时发单策略,是没有问题的。比如:当前条件成立,那么就在下根Bar发单。由于Bar数据量往往不是很大,在上百种上千组合回测或优化时,速度非常快。
bar数据回测的弊端
大多数EA,量化软件中,调用那个级别的数据,就是哪个级别的Bar。5分钟周期级别的Bar就是5分钟时间序列的开高低收等。一般最小级别是1分钟,也就是回测时只能使用1分钟级别粒度的数据。
那么问题来了,1分钟以下的数据变动是无法得知的。这种数据与当时的实际市况有所差别,一个个小的差异积累起来就造成了与真实结果的巨大差异。
有非常非常多种可能。它有可能开盘就先上涨,创造出一个上影线。然后转头向下,创造出一个下影线。然后再转头向上收盘;它也可能开盘就砸盘,直接创造出一个下影线。然后转头向上,创造出一个上影线。然后再转头向下收盘。总之,在这根Bar最终形成之前的60分钟内,价格的波动有很多种可能。
如果即时策略用Bar数据回测,回测引擎只是根据Bar的开高低收等,做计算。因为回测引擎并不知道价格是如何跳动才形成最终的Bar。在Bar中,价格即有可能先上后下,也有可能先下后上。
还有一个更为重要的弊端。在Bar回测中,并没有参考盘口数据,比如:买一价和卖一价。在Bar数据回测中,只要触发开平仓的价格在最高价与最低价之内,都能成交。但此时此刻如果恰好没有对手盘的话,那么Bar回测引擎在撮合的时候是检测不出来的。一次两次影响不大,但只要Bar的数据足够多,就足以产生以假乱真的虚假绩效报告。
什么是Tick数据
Tick数据就是交易所中最详尽的交易数据结构。包括:开盘价、最高价、最低价、最新价、成交量、成交额。如果把交易数据比喻成河流,Tick数据就是这个河流在某个横截面的数据。
国外交易所每个动作都会实时推送到市场上来。而国内交易所,每秒两次进行检查,如果该时间段内有动作,则生成一次快照并且推送出来。相比较而言,数据的推送充其量只能算做 OnTime,而不能叫做OnTick。
BotVS的Tick数据
尽管国内Tick数据并不是真正意义上的 Tick,但是使用这种数据进行回测,至少可以无限接近和还原了现实。每个Tick中显示着当时这个商品在市场中的主要参数,并且在实盘中我们的代码,就是跟着理论每秒 2 次的Tick在进行计算。
不仅如此,在 BotVS 中即使加载的是1小时周期的数据,依然可以调整数据粒度,比如将数据粒度调整为 1 分钟。此时此刻的1小时K线就是用1分钟数据组成的。当然,粒度越小,精度越高。
更为强大的是,如果将数据切换为实盘级Tick,就可以无缝还原真实的实盘环境。即1秒2次Tick交易所的真实数据。
总结
你不可能拿着玩具枪就上战场,在开始实盘之前,我们都会慎之又慎。客观的压力检验,能帮你省下许多真金白银,而这些损失通常都是不必要的。
那么历史数据的准确性就成了你的交易策略检验结果的关键因素之一,假如你的数据是不准确的,那么在这种数据下的优化和回测必然也是无法在市场中进行的。
否则在Bar模式下看着很爽的模型,到最后变成一个很爽的陷阱......回测,就是要对自己狠一点......
。。。。。。。。。。。。。。。。。 11111111111111111111 666666666666666666666 6666666666666666 66666666666666 11111111111 1111111111111 11111111111111 6666666666666666
页:
[1]
2