mql5如何实现仅在所操作品种的新柱线建立时调用一个函数 - 页 2

 
xkyup:

您好,我发现在我的电脑上这个函数无法实现该功能。

于是我便试着每次输出等了好几分钟,结果他一直输出的都是100000100000,也就是说两个数值一直都是100000


这个问题搞清楚了,不是MT5的bug。

Bars()这个函数返回的是图表上的K线根数,如果你的图表设置最大10,000个K线

那么当实际达到了10,000个K线以后,即使有新的K线出现,但是总的K线根数保持为10,000,Bars()的返回值就是这个最大值了。

这就是为什么你看到的一直是10,000

设置图表上最大K线个数,MT5的菜单: Tools -> Options--->Chart  

设置 Max bars in chart 为 Unlimited,则不存在问题Bars()返回值出现不变的问题。

但是设置为unlimited 则会有个副作用,就是图表K线数太多了,每次启动时,指标计算量大。

因此最好根据实际设置为10,000即可。

由此可见,最好还是用时间来判断是否有新的K线。

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
datetime Time(ENUM_TIMEFRAMES tf=0)
  {
   datetime t[1];
   if(CopyTime(Symbol(),tf,0,1,t)==1)
      return(t[0]);

   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsNewBar2(ENUM_TIMEFRAMES tf=0)
  {
   static datetime cnt=0;
   if(cnt!=Time(tf))
     {
      cnt=Time(tf);
      return(true);
     }

   return(false);
  }

//+------------------------------------------------------------------+
 
Ziheng Zhuang:


这个问题搞清楚了,不是MT5的bug。

Bars()这个函数返回的是图表上的K线根数,如果你的图表设置最大10,000个K线

那么当实际达到了10,000个K线以后,即使有新的K线出现,但是总的K线根数保持为10,000,Bars()的返回值就是这个最大值了。

这就是为什么你看到的一直是10,000

设置图表上最大K线个数,MT5的菜单: Tools -> Options--->Chart  

设置 Max bars in chart 为 Unlimited,则不存在问题Bars()返回值出现不变的问题。

但是设置为unlimited 则会有个副作用,就是图表K线数太多了,每次启动时,指标计算量大。

因此最好根据实际设置为10,000即可。

由此可见,最好还是用时间来判断是否有新的K线。

听了您的话,算是搞明白了这个问题,谢谢