初学者的问题 MQL5 MT5 MetaTrader 5 - 页 86

 
fyords:
打印ObjectCreate的结果,也许那里有一个错误。

谢谢你。我一定会检查,但要在解决了新问题之后。该EA工作了一段时间,现在已从图表中自动删除。我不能把它放回去,它说阵列已满。

void CreateLevels()
   {
      double High[];
      ArrayResize(High,0);
      ArraySetAsSeries(High,true);
      CopyHigh(_Symbol,_Period,0,Candle,High);

      for(int j=Nachalo;j<=Candle;j++)
         {
          //--- поиск макс -----------------------------------
          if(iHighest(Symbol(),0,10,MN*2,j-MN)==j)
            {
             double H=High[j];
            }
int iHighest(string symbol,int tf,int type,int count,int start)
  {
   if(start<0) return(-1);
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   if(count<=0) count=Bars(symbol,timeframe);
   if(type==10)                                 // MODE_HIGH
     {
      double High[];
      ArraySetAsSeries(High,true);
      CopyHigh(symbol,timeframe,start,count,High);
      return(ArrayMaximum(High,0,count)+start);
     }
   return(0);
  }

蜡烛=1000。编译器没有在任何地方发誓,在调试器中也没有发生什么。请提出解决问题的方法

 
如果你不使用信号,下一次构建将非常少地要求使用信号。

这一点已经得到了纠正。
 
Renat:
如果你不使用信号,下一次构建将非常少地要求使用信号。

这一点已经得到了纠正。
我认为这个答案不适合我。
 
现在,当试图在图表上设置EA时,出现了一个技术错误。应将错误的细节发送到哪里?
 
WindSW:

为什么ArrayResize=0?

而且看起来ArrayInitialize 应该加在它前面。

И

double H

循环中每次都要初始化吗?

在函数之前声明它。

更新并仔细检查圆括号,我缺少一个}在

CreateLevels
 
Silent:

为什么ArrayResize=0?

归零阵列High[]
 
WindSW:
归零阵列High[]
不,你把它的大小设置为0。
 
Silent:
不,你把它的大小设置为0。
信息是否保持在0大小?重置的正确方法是什么?
 
WindSW:
信息是否保持在0大小?如何正确进行调零?

你把大小设置为零,然后把数组复制到那里。

试试这个。

void CreateLevels()
  {
   double High[];
   ArrayResize(High,Candle); // размер = Candle
   ArrayInitialize(High,NULL); // инициализация нулем
   ArraySetAsSeries(High,true);
   CopyHigh(_Symbol,_Period,0,Candle,High);

   double H; // вынес
   int j;    // вынес
   for(j=Nachalo;j<=Candle;j++)
     {
      //--- поиск макс -----------------------------------
      if(iHighest(Symbol(),0,10,MN*2,j-MN)==j)
        {
         H=High[j];
        }
     }
  } // скобки сразу парами ставьте, искать не прийдётся
更新纠正了代码,也是int j
 
WindSW:
而在尺寸为0的情况下,信息会保持不变吗?

而且,如果你杀了它,你可能会调用ArrayResize两次,用0,然后用正确的数组大小

它甚至可能会更快...虽然我不知道它在内存分配方面会是怎样的。