OnTick critical error

 

Hello everybody,

I've tested the EA there : 

#include<Trade\Trade.mqh>
CTrade trade;
double PreviousAsk = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
double PreviousBid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
int m = 0;
int n = 1;
int e = 0;
int i = 1;
int u = 0;

void OnTick()
  {
  double ArrayUp[][100000],ArrayDown[][100000],ArrayCompare1[];
 
  double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
  double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
 
      ArraySetAsSeries(ArrayCompare1,true);
        ArrayUp[0][0] = PreviousAsk;
        ArrayDown[0][0] = PreviousBid;
       
        if(Ask>PreviousAsk)
        {
        ArrayUp[n][m] = Ask;
        n++;
        ArrayCompare1[u] = Ask;
        }
        else if(Bid<PreviousBid)
              {
              ArrayDown[i][e] = Bid;
              i++;
              ArrayCompare1[u] =Bid;
              }
     
      if(u>=1 && (ArrayCompare1[u-1]==ArrayUp[n-2][m]) && ( ArrayCompare1[u]==ArrayDown[i-1][e]) )
      {m++;}
      if(u>=1 && (ArrayCompare1[u-1]==ArrayDown[i-2][e]) && ( ArrayCompare1[u]==ArrayUp[n-1][m]) )
      {e++;}
      u++;
     
      if (n>=3 && PositionsTotal()<=5)
      {trade.Buy(0.01,NULL,Ask,(Ask-100*_Point),(Ask+30*_Point),NULL);
      double SL=NormalizeDouble(Ask-100*_Point,_Digits);
               for (int y=PositionsTotal(); y<0; y--)
               {string symbol=PositionGetSymbol(i);
               if (_Symbol==symbol)
                  {
                 
                  ulong PositionTicket=PositionGetInteger(POSITION_TICKET);
                  double CurrentStopLoss=PositionGetDouble(POSITION_SL);
                  if (CurrentStopLoss<SL)
                     {trade.PositionModify(PositionTicket,(CurrentStopLoss+10*_Point),0);
                     }
                  }
               }
      }
      if(i>=3 && PositionsTotal()<=5)
      {trade.Sell(0.01,NULL,Bid,(Bid+100*_Point),(Bid-30*_Point),NULL);
      double SL=NormalizeDouble(Bid+100*_Point,_Digits);
               for (int z=PositionsTotal(); z<0; z--)
               {string symbol=PositionGetSymbol(i);
               if (_Symbol==symbol)
                  {
                 
                  ulong PositionTicket=PositionGetInteger(POSITION_TICKET);
                  double CurrentStopLoss=PositionGetDouble(POSITION_SL);
                  if (CurrentStopLoss>SL)
                     {trade.PositionModify(PositionTicket,(CurrentStopLoss-10*_Point),0);
                     }
                  }
               }
      }
     
      PreviousAsk = Ask;
      PreviousBid = Bid;
  }

And I get two errors I can't solve :

-OnTick critical error

-Array out of range

(I haven't any error when debugging.)

Thank you for your help.

 
  1. When you post code please use the CODE button (Alt-S)! (For large amounts of code, attach it.) Please edit your (original) post.
              General rules and best pratices of the Forum. - General - MQL5 programming forum
              Messages Editor

  2. double ArrayUp[][100000],ArrayDown[][100000],ArrayCompare1[];
            ArrayUp[0][0] = PreviousAsk;
    Your array has no size, yet you try to assign to it. What part of "out of range" is unclear?
Reason: