本次真格量化的回测柜台升级对回测的撮合算法做了多项优化,使得撮合更加接近实盘情况

 

简介,太长不看版:

首先本次回测主要影响分钟回测,tick回测仅有小影响,日线接近无影响。

本次更新将分钟线数据的获取更加贴近现实,避免了未来数据,同时新增了两种匹配模式可以选用。可能导致部分策略采用未来数据价格下单成交后的

一、分钟线回测时

1、 OnQuote会在开盘集合竞价结束时触发一次,例如螺纹钢会在20:59:00,此时通过GetQuote可以获取到集合竞价结束时的行情数据。


OnQuote事件的触发时间从每个整分钟,变动到每分钟的59秒,例如9:30:00OnQuote事件,现在将在9:30:59秒触发。

 

 

2、 通过GetHisData系列(包括GetHisDataByFieldGetHisData2 , GetHisDataAsDF , GetHisDataByFieldAsDF)的API函数获取分钟K线时,最新的一根分钟K线变为一根高开低收为同一个价位、成交量为0的短横线。

 

例如在20198214:40:00获取rb1910的分钟k线。打印出最后5根。

 

测试代码:

 

 

更新前:

 

 

更新后:

 

 

我们可以看到最后有变化的是14:41:00K线,也就是8:40:00开始触发的新K线(14:40:01-14:41:00),这根K线变成了一根空K线。这跟在实盘的情况是一致的,实盘中的最后一根K线也是一根未完成的K线。

 

3、在OnbarGetQuote的时候,拿到的数据变化。

OnBar中,同样是20198214:40rb1910我们拿取行情数据。

测试代码:

 

更新前:

 

 

更新后

 

可以看到更新前会拿到14:40的行情,对应的最新价与1441的收盘价的行情对应。

 

 

4对手价下单的撮合

改动前,最后一根分钟线的收盘价、即14:40的时候下单会拿到14:41分钟线的收盘价,然后根据会根据14:41的分钟线进行撮合。

 

改动后,提供了撮合模式1和撮合模式0,可以通过SetMatchParam设置。

 

改动后 模式0

SetMatchParam(0)

倒数第二根分钟线的收盘价、即14:40的时候下单会拿到14:40分钟线的收盘价

 

 

模式1下,会从倒数第一根K线开始撮合,即仍从14:41的分钟线开始撮合,此时该分钟线为短横线。

 

 

 

默认为模式0

 

5Tick回测:

在每分钟结束前,去查分钟线,最新的一分钟只是小横线,直到该分钟完整结束的OnQuote事件中,才能拿到该分钟数据k线。