老师好!
我的回测程序订阅了多个数据,包含10分钟和日线两种,奇怪的是,豆油和焦炭的日线数据,在onbarclose这个域中出现在每天的凌晨两点20分,正常应该是下午三点(十分钟K线就是1450),请问这是何故呢?
另外,IF888这个股指合约onbarclose出现在9点20分,这个我好理解是开盘的第一根10分钟K线。为啥不同品种都不一样呢?盼复,谢谢!
好的,谢谢
这个问题搞清楚了,原来TB的OnbarClose事件域是通过Open事件来触发的,在下一个K线出现Open之前触发上一K线的Onbarclose域,这样就好理解了,对于IF股指合约,15:00最后一根30分k线真实的onbarclose触发事件是在早上9:30分开盘前一瞬间。对于有夜盘交易的品种,就是21:00瞬间触发15:00的那根K线onbarclose。
如果没有settrigger确实是这样
具体建议仔细学习一下onbarclose的视频教程
settrigger无法在回测环境运行吧,只能是实盘环境。
是的
但是你的问题不就是实时运行的时候出现的吗?历史回测不会有这个问题
有劳 老师 onbarclose 的视频教程链接发一个
建议描述一个完整的运行环境,否则无法复现确定问题
感谢答复
并没有发现有问题
明天早上看一下输出的结果
你这个问题需要几天跟踪研究一下
如果需要对多品种的日线指标进行横向排序,那么不同品种之间的日线收盘时序不一样就会给策略造成巨大困扰,不知这个如何解决。目前出现的情况是,不同的品种日线onbarclose触发的时间不一样。大部分是1500,有些是和白银晚上的30分K线一起触发。
OnBarClose(ArrayRef<Integer> indexs)
{
integer j;
Print(TextArray(indexs));
range[j=0:datacount-1]
{
if(arrayfind(indexs,j))
{
Print(\"日期:\"+Text(data[j].date));
Print(\"时间:\"+Text(data[j].time));
Print(data[j].SymbolName);
}
}
}
我刚才又做了一个简单的试验程序,采用的是30分钟和日线叠加的数据层,前35层是30分钟,后35层是日线,程序运行Print出来的记录很诡异,那就是苹果鸡蛋和生猪的日线onbarclose出现在凌晨两点,正常应该是1430(30分钟对齐的时间),其他品种都是1430触发了日线onbarclose。我上面有用图层过滤的代码。在1430(其实是15:00)那个时间点onbarclose返回的indexs刚好缺了苹果鸡蛋和生猪的日线图层号,很奇怪。后面在凌晨两次出现,诡异吧?
你应该也叠加了贵金属吧,是贵金属行情驱动的,驱动以后,你没做图层筛选,然后豆油焦炭也执行了相关代码。
你可以检查indexs参数,根据里面提示的驱动图层执行对应图层的代码