CurrentBar再次提问

//------------------------------------------------------------------------ // 简称: ZS40 // 名称: CurrentBar // 类别: 公式应用 // 类型: 用户应用 // 输出: Void //------------------------------------------------------------------------ Vars Global Array<Integer> OrderId;//单号 Defs//自定义函数 Integer LogFile(StringRef str)//日志函数 { IF (StrategyMode()==1) FileAppend("D:\\"+FormulaName()+"\\"+DATA2.Symbol()+".txt","["+Text(SystemDateTime())+"] "+ str); Return 0; } Events OnInit()//策略执行前的初始化事件,只运行一次。/可以订阅数据,数据准备等操作。 { SubscribeBar(Data0.Symbol,"15M",Data0.BeginDateTime);//图层1 SubscribeBar(relativesymbol,"1M",Data0.BeginDateTime);//图层2 } OnReady() { LogFile("OnReady//"+SymbolName+"/时间="+TEXT(SystemDateTime())); PrintClear; } OnBarOpen(ArrayRef<Integer> indexs) { If(ArrayFind(indexs,0)) { LogFile("日/BAR0="+TEXT(DATA0.CurrentBar())+"/时间"+TEXT(DATA0.DATE)+StrategyModeName()); } If(ArrayFind(indexs,1)) { LogFile("15M/BAR0="+TEXT(DATA1.CurrentBar())+"/时间"+TEXT(DATA1.DATE+DATA1.Time)+StrategyModeName()); } If(ArrayFind(indexs,2)) { LogFile("1M/BAR0="+TEXT(DATA2.CurrentBar())+"/时间"+TEXT(DATA2.DATE+DATA2.Time)+StrategyModeName()); } }//OnBarOpen OnBar(ArrayRef<Integer> indexs) { Range[0:2] { commentary( "BAR=" + TEXT(CurrentBar())); } IF (1==2) A_Buy(symbol,1,Q_AskPrice,OrderId );//不发单 IF (1==2) A_Sell(symbol,1,Q_BidPrice,OrderId );//不发单 } 上面是测试代码,下面是测试日志,再下面是策略K线打开的截图日志中图层1(15M)的起点是20210823.09,此时BAR索引为0截图中图层1(15M)的起点是20210707.00,此时BAR索引为0上述两个索引不应该保持一致吗?是什么原因导致这个差异化呢?收盘对比日志与K线图时发现,最后1根BAR(20250819.150000)的索引,日志与截图不一样

没看懂你是什么意思currentbar简单的讲,就是第一根K线是0,从左往右就是0 1 2 3 4 5 6.....

回复:commentary( "BAR=" + TEXT(CurrentBar()));LogFile("15M/BAR0="+TEXT(DATA1.CurrentBar())这两个CurrentBar值,不一样

回复:commentary( "BAR=" + TEXT(CurrentBar()));LogFile("15M/BAR0="+TEXT(DATA1.CurrentBar())这两个CurrentBar值,不一样

回复:你把这2个放一起。。。你上面也没这么写啊。针对你这个内容,为什么会一样呢?我看你data0,data1周期都不相同data0的curbar就是从data0的左边开始数data1就是从data1的开始数这2个怎么会一样?然后针对你主贴的内容,你onbaropen里的写法几个图层对应关系你理得清楚吗,输出出发都是基于data0的

收盘核对如下日志15M的BAR索引=29528K线图15M的BAR索引=30555

回复:难道又是我没说清楚问题?我再明确下问题:图层0是日线(1000根BAR),图层1的CurrentBar值在不同环境下读取时存在错位(如下)日志中图层1(15M)第一根BAR(CurrentBar=0)的时间是20210823.09K线图中图层1(15M)第一根BAR(CurrentBar=0)的时间是20210707.00请老师回答如下问题?1、我所说的问题是否可以复现?2、如果可以复现,那么问题产生的原因是什么?3、如果问题的原因是测试代码有书写错误或逻辑不当,请指明并修正以便我再次测试。谢谢!!!

回复:我不是怀疑CurrentBar的准确性我想问的是,为什么输出时会有不同结果?

回复:我不知道怎么复现你上面的内容,看上去运行挺正常。你log的位置和你图表是一样的吗

回复:你图上和执行上到底有多少K线看得清楚吗?你这种情况不如加载10根K线算一算。

回复:日志中应该都是两次记录(一次图表交易、一次策略运行)你看的是图表交易,是与K线图一致的,但是你再看策略运行的记录,就与图表交易(K线图)不一致了

回复:这样看比较清楚

回复:我把日线设为10根也不行看日志最后两行,索引数值也不等图表交易的数字与K线图数字是一致的

回复:是不是别的地方什么没处理对。。你不会有2个单元同时在写一个文件吧

回复:你这里标注了两种,一个图表交易 一个策略运行说明有2个程序 一个在K线,一个在策略单元