CurrentBar输出问题

下面代码,两个输出结果居然不一样,可能是什么原因呢?{Print("BAR="+TEXT(CurrentBar));LogFile("BAR="+TEXT(CurrentBar));}尽管是多图层多周期,在同一个花括号下,应该是一样的啊。先请老师做一个大概的判断,实在不行我再编测试代码请教老师。

一个典型的展示型问题:用户认为贴一部分代码就说明问题了,实际上什么都没有说明

回复:发了一个不可能有问题的代码需要去猜可能出现问题的逻辑

我也想知道为什么

回复:俺也是

回复:估计数据没对齐吧之前有个帖子我把整个流程给他梳理过不知道他有没有仔细看看

回复:其实就按贴出来的两行代码,我是不知道楼主是怎么能判断出来两边执行出来的结果不一样的

回复:晕😭好在不影响交易,再想代码方案(只是想让过程监控更清晰)

回复:如果这两行代码没有出问题的可能应该是数据对齐没处理且代码并非如此

回复:经过验证,问题原因是:日志会登记两次(图表模式、策略模式)但是图表模式和策略模式下的CurrentBar取数不同。不同模式下的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,"5M",Data0.BeginDateTime);//图层1 SubscribeBar(Data0.symbol,"1M",Data0.BeginDateTime);//图层2 } OnReady() { LogFile("OnReady//"+SymbolName+"/时间="+TEXT(SystemDateTime())); PrintClear; } OnBarOpen(ArrayRef<Integer> indexs) { Range[2:2] { Bool ret = IsStartBar(); if(ret) { PlotBool("创建本单元时间点",ret,L); } //BAR0=CurrentBar(); commentary( "BAR=" + TEXT(CurrentBar())); Print("BAR=" + TEXT(CurrentBar())+"/时间"+TEXT(SystemDateTime)+StrategyModeName()); LogFile("1M/BAR0="+TEXT(CurrentBar())+"/时间"+TEXT(SystemDateTime)+StrategyModeName()); } }//OnBarOpen OnBar(ArrayRef<Integer> indexs) { Range[2:2] { IF (H>DATA1.H[1] AND A_BuyPosition<1) A_Buy(symbol,1,Q_AskPrice,OrderId ); IF (L<DATA1.L[1] AND A_BuyPosition>0) A_Sell(symbol,1,Q_BidPrice,OrderId ); } }

回复:难道又是打开k线的问题么....你如果调试策略那就不要用策略单元直接用k线图不好吗...

回复:我要把策略日志和K线图对照啊,我要知道在哪根K线下单的

回复:所以不是说了让你直接用k线图么?不要再用策略单元然后打开k线图不就没这个问题了么

回复:好的,我现试试