EA problem when multiple order

 

Hi.


I'm working on a EA where we start to see if it's possible to have more then one order triggered if the same trigger happens before we change trend.
The code was first made to only do one order at a time with this:

   total  = OrdersTotal(); //This is regular program buy or sell signal
   if(total < 1)

     {
      if(lastTradeBar!=Time[0])
        {
         //--------------
         if((BuySignal))
           {
            ticket=OrderSend(Symbol(),OP_BUY,LotSize,Ask,Slippage,MyBuySL,MyBuyTP,EaComment+" - BuySignal",MagicNumber,0,Green);
            //return(0);
           }
         //--------------
         if((SellSignal))
           {
            ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slippage,MySellSL,MySellTP,EaComment+" - SellSignal",MagicNumber,0,Green);
            //return(0);
           }
         //--------------
         lastTradeBar=Time[0];
        }
      return(0);
     }



then we have Close order function.


   if(total >= 1)
     {
      if(BuySignalOut)
        {
         closeOrder();
        }

      if(SellSignalOut)
        {
         closeOrder();
        }
      return(0);
     }

 everything works as expected when we use one order but if we start using more orders by chaning total to a varible. it dosent trigger things correctly.
if MaxOrders is 1 it works as i supos to but higher then one it dosn't trigger the close function.

   total  = OrdersTotal(); //This is regular program buy or sell signal
   if(total < MaxOrders)

     {
      if(lastTradeBar!=Time[0])
        {
         SquareStartPrice = Bid;
         //--------------
         if((BuySignal))
           {
            ticket=OrderSend(Symbol(),OP_BUY,LotSize,Ask,Slippage,MyBuySL,MyBuyTP,EaComment+" - BuySignal",MagicNumber,0,Green);
            Print("BuySignal!");
            Alert("MACD V1 - BuySignal");

            SetVlineObject("BuySignal"+objcount, Time[0], clrGreen);
            SetSquareObject("BuySquare"+objcount, Time[0], SquareStartPrice,Time[0], SquareEndPrice,clrGreen);
            objcount++;
            OrderStartPrice = Bid;
            //return(0);
           }
         //--------------
         if((SellSignal))
           {
            ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slippage,MySellSL,MySellTP,EaComment+" - SellSignal",MagicNumber,0,Green);
            Print("SellSignal!");
            Alert("MACD V1 - SellSignal");
            
            SetVlineObject("SellSignal"+objcount, Time[0], clrRed);
            SetSquareObject("SellSquare"+objcount, Time[0], SquareStartPrice,Time[0], SquareEndPrice,clrRed);
            objcount++;
            OrderStartPrice = Ask;

            //return(0);
           }
         //--------------
         lastTradeBar=Time[0];
        }
      return(0);
     }
//+------------------------------------------------------------------+

   if(total >= 1)
     {
      SquareEndPrice = Bid;
      //----------
      ObjectSet("SellSquare"+(objcount-1),OBJPROP_PRICE2,SquareEndPrice);
      ObjectSet("SellSquare"+(objcount-1),OBJPROP_TIME2,Time[0]);
      ObjectSet("SellSquare"+(objcount-1),OBJPROP_TIME2,Time[0]);
      ObjectSetString(NULL,"SellSquare"+(objcount-1)+"text",OBJPROP_TEXT,(OrderStartPrice-Ask)/Point-spread);
      ObjectSetDouble(NULL,"SellSquare"+(objcount-1)+"text",OBJPROP_PRICE, (SquareEndPrice));

      //----------
      ObjectSet("BuySquare"+(objcount-1),OBJPROP_PRICE2,SquareEndPrice);
      ObjectSet("BuySquare"+(objcount-1),OBJPROP_TIME2,Time[0]);
      ObjectSet("BuySquare"+(objcount-1),OBJPROP_TIME2,Time[0]);
      ObjectSetString(NULL,"BuySquare"+(objcount-1)+"text",OBJPROP_TEXT,(Bid-OrderStartPrice)/Point-spread);
      ObjectSetDouble(NULL,"BuySquare"+(objcount-1)+"text",OBJPROP_PRICE, (SquareEndPrice));

      stopBreakeven();
      if(BuySignalOut)
        {
         closeOrder();
         SetVlineObject("BuySignalOut"+objcount, Time[0], clrBlack);
         objcount++;
        }

      if(SellSignalOut)
        {
         closeOrder();
         SetVlineObject("SellSignalOut"+objcount, Time[0], clrGray);
         objcount++;
        }

      //--- Normal Buy/Sell BreakEven Position
      return(0);
     }

   return(0);
  }
//+------------------------------------------------------------------+
//| END expert start function                                        |
//+------------------------------------------------------------------+







With MaxOrder = 1

MaxOrder = 1



With MaxOrder = 2

MaxOrder = 2



I'm missing something simple I know but I cant figure out what.