历史回测问题

开拓者(TBQuant)平台,版本1.4.3.8标准版。在回测时,因为开仓价格为下一k线的开盘价,而显示的确是当前k线开盘价建仓,从而使得历史回测报告失真。如何设置回测,使得能够准确判定建仓价格。

历史回测问题
代码回测历史优化逻辑可行性
回测问题
回测问题
实盘和回测的问题
关于策略回测去除无效数据的问题
策略回测问题
回测遇到的2个问题 请老师解答下
关于回测数据不准的问题
关于 模型的 回测 问题

这个问题就挺奇怪的。

你怎么能知道下一根k线的开盘价。

随便举个例子应该都能说明了吧。日线上,今天收盘的时候你能知道明天的开盘价吗?

tb语言,onbarclose中,在当根k线结束那一刻才执行,同时下一根k线的open也就有了。默认open就是下一根k线的开盘价。难道不是?

这是日内策略,不隔日。

当然不是了。

onbarclose执行的时候,取bar数据取的是当前bar上的。所以你用open,那就是当前bar上的,不是下一根bar

这需要看你代码怎么写的

Buy(LotSize, Open);

使用的是onbarclose

如果您把代码写在OnBarClose里,就是想用收盘价作为信号的价格(尽管因为收盘价只有收盘后才能确定,故实际上系统是以下一根Bar的开盘价来发单的),那正确的写法就应该是Buy(LotSize,Close)。如果你非要写成Buy(LotSize,Open),那就变成了信号是用当前K线的Open,实际发单是下一根bar的Open,回测结果自然也就乱了。

这里多说一句,TB的机制是很灵活的,但如果掌握不好,就会写出很多偷价或含未来数据的模型。你现在倒不一定是使用未来数据,只是把结果变得不可控了。

了解了。感谢,感谢。👍