我在TB进行回测。 用了同一个品种的30分钟和1分钟的K线。 我希望是在30分钟K线结束时,计算出参数供之后的1分钟K线策略使用。 但是现在在每个30分钟K线(比如22:30-23:00)的开始时刻(也就是22:30)就开始以及触发了30分钟策略的计算,而不是在结束时刻(也就是23:00)触发。
我用了OnBar和OnBarClose都试过,结果一样。
请教,我怎么让30分钟策略在bar的结束时刻才触发,谢谢。
跨周期的时候 对齐bar的大周期数据确实会造成未来数据
其他的方案也研究过 没有更好的解决方案了
如果您有看到其他软件做出过更好的跨周期效果 可以推荐给我们研究一下
如下图, 30分钟的bar(22:30~23:00),在22:30就打出日志了。
然后1分钟的bar才从22:31、22:32、22:33依次往后执行
我看你一直在说回测。回测的时候,30分钟的那根K线它Biu的一下就出来了,又不是在半个小时的时间内慢慢出来的,它一共就只触发一次,根本不存在开始的时候触发还是结束的时候触发。
你想做的事情是,用当前这一根30分钟K线的数据计算出参数,给接下来的1分钟K线用。何不尝试一下换换思路:用上一根30分钟K线的数据计算出参数,给当前的1分钟K线用呢?
对的,谢谢你的建议,已经按照这个思路做了。
不过还是觉得tb的回测时时点是不合理的。
现在我尝试了OnBar和OnBarClose,无论怎么样结果都没有任何区别。
您能给我一个示例,让OnBar和OnBarClose在回测时结果是有区别的,谢谢。
谢谢您。
我参考官方文档写的
TB量化学院-期货期权程序化与量化系统自动交易软件金融领航者门户网站 - 开拓者金融网 (tbquant.net)
程序结构如下:
Params
// 定义变量
Numeric i;
Numeric j;
Events
OnBarClose(ArrayRef<Integer> indexs)
{
// 1分钟K线
Range[0:0]
{
//代码逻辑1
}
// 30分钟K线
Range[0:0]
{
//代码逻辑2
}
}
您能给我一个示例吗?谢谢
OnBarClose 就是结束时触发的,可能是您使用的问题
onbar实盘中会每tick运行