错误、漏洞、问题 - 页 1460

 
在MQL5中找不到iBarsShiaft 的类似物。建议....
 
Vladimir Pastushak:
在MQL5中找不到iBarsShiaft的类似物。建议....
int iBarShift(string symbol,
                  int tf,
                  datetime time,
                  bool exact=false)
  {
   if(time<0) return(-1);
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   datetime Arr[],time1;
   CopyTime(symbol,timeframe,0,1,Arr);
   time1=Arr[0];
   if(CopyTime(symbol,timeframe,time,time1,Arr)>0)
     {
      if(ArraySize(Arr)>2) return(ArraySize(Arr)-1);
      if(time<time1) return(1);
      else return(0);
     }
   else return(-1);
  }
 
Vladislav Andruschenko:

我的做法有点不同,我认为这更可靠。

//+------------------------------------------------------------------+
int BarsShift(const string sym,const ENUM_TIMEFRAMES tim,const datetime time)
  {
   if(time<0)return -1;
   datetime mas[]; int z=-1;
   while(z++<3)
      if(CopyTime(sym,tim,TimeCurrent(),time,mas)>0)
         return ArraySize(mas);
   else
      Sleep(500);
   Print(" Erorr Search BarsShift ",GetLastError());
   return -1;
  }
//+------------------------------------------------------------------+

你怎么看?

 

亲爱的同事们,谁能告诉我问题出在哪里,为什么指标在运行一段时间后就崩溃了(很多多余的箭头)?

我只在M1上注意到这一点。在我重新触发TF后,一切都显示正常。

问题出在指标上还是出在终端和M1报价上?


附加的文件:
 
Aleksandr Novikov:

亲爱的同事们,谁能告诉我问题出在哪里,为什么指标在运行一段时间后就崩溃了(很多多余的箭头)?

我只在M1上注意到这一点。在我重新触发TF后,一切都显示正常。

是指标的问题还是终端和M1报价的问题?


在计算缓冲区数值之前,在循环的最开始就清除缓冲区。
Buffer[i]=0。
 
Vladimir Pastushak:
我在MQL5中找不到iBarsShiaft的类似物。建议....
事实上,Bars 功能的第二种变体是一种直接的模拟,但它有一些小毛病。更准确地说,他们在年初的时候曾经这样,也许他们已经被固定了。
 

编译器思考了又思考,默默地和编辑器一起死在这个短程序上(32、64位,包括不同的操作系统--相同)。

struct TCoord {
        int x, y;
};

void OnStart() {        
        TCoord coord = {100, 100};
        TCoord defaultCoord = {0,0};
        coord = (2 == 2) ? coord : defaultCoord;
}
某处优化器的一个错误。
顺便说一下,当MetaEditor崩溃时,它的状态(打开的文件、界面设置)不会被保存。
 
Aleksandr Novikov :


当这种情况发生时,指标重新启动...而一切都会恢复正常。
 
Rodrigo da Silva Boa:
当这种情况发生时,指标重新启动...而一切都会恢复正常。

不需要重新启动任何东西。在指示器周期中需要清理的是缓冲区中的垃圾。比如说。

   for(int i=limit; i>=0; i--) {
      BufferPatternDN[i]=0;               // без обнуления буферов мусор в них появляется постоянно
      BufferPatternUP[i]=0;
      BufferLevelDN[i]=EMPTY_VALUE;
      BufferLevelUP[i]=EMPTY_VALUE;
      // ... остальной код расчёта буферов
      // ...
   }  // конец цикла

你只需要在周期的开始部分增加缓冲归零,而不是在图表上有垃圾时不断重启指标。

 

我怎样才能打败它呢?在虚拟盒中的Ubuntu,所有程序都可以上网,不需要代理,到处都可以直接连接。

但终端一直要求提供一个代理。