开拓者(TBQuant)平台,版本1.4.3.8标准版。在回测时,因为开仓价格为下一k线的开盘价,而显示的确是当前k线开盘价建仓,从而使得历史回测报告失真。如何设置回测,使得能够准确判定建仓价格。
这个问题就挺奇怪的。
你怎么能知道下一根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的机制是很灵活的,但如果掌握不好,就会写出很多偷价或含未来数据的模型。你现在倒不一定是使用未来数据,只是把结果变得不可控了。
了解了。感谢,感谢。👍