下面代码,两个输出结果居然不一样,可能是什么原因呢?
{
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线图不就没这个问题了么
好的,我现试试