Code schließt nicht alle Orders

 
Hallo Leute,

ich habe ein kleines Problem.
Mein Code will nicht wie er soll :P


Beim aufrufen der Funktion, schließt er immer nur einen Teil der offenen Orders. Nie alle. Das soll er aber.
Ich muss diese Funktion dann immer wieder aufrufen, bis alle Orders zu sind.

void CheckCloseAll()
{
   if( bool( ObjectGetInteger( 0, "CloseButtonAll", OBJPROP_STATE ) ) )
   {
      Print( "Close All Button Clicked" );
      int total=OrdersTotal();
  for(int pos=0;pos<total;pos++)
      {
      if(OrderSelect(pos, SELECT_BY_POS)==true)
         {
          
            int mticket=OrderTicket();
            double mprofit=OrderProfit();
            double mlots=OrderLots();
            int type=OrderType();
            if(OrderSymbol()==Symbol())
            if(type==1)
               {
                  {
                  sell=false;
                  int close=OrderClose(mticket,mlots,MarketInfo(OrderSymbol(),MODE_ASK),0,Red);
                  }
               }
               else
               {
                  {
                  buy=false;
                  int close=OrderClose(mticket,mlots,MarketInfo(OrderSymbol(),MODE_BID),0,Red);
                  }
               }
          
       }
     }
      ObjectSetInteger( 0, "CloseButtonAll", OBJPROP_STATE, false );
   }
Jemand ne Idee wieso das nicht so will wie es soll ^^


Danke im vorraus :)
 
Do DARFST nicht nach oben zählen:

int total=OrdersTotal();
for(int pos=0;pos<total;pos++)
Du MUSST abwärtszählen:

int pos=OrdersTotal();
while(pos-->0)
Denn, wenn Du Order[0] löscht rutsch Order[1] auf Pos. Order[0] undDu betrachtest jetzt Order[1] - das war aber Order[2] - ok?
 
Carl Schreiber:
Do DARFST nicht nach oben zählen:

int total=OrdersTotal();
for(int pos=0;pos<total;pos++)
Du MUSST abwärtszählen:

int pos=OrdersTotal();
while(pos-->0)
Denn, wenn Du Order[0] löscht rutsch Order[1] auf Pos. Order[0] undDu betrachtest jetzt Order[1] - das war aber Order[2] - ok?

Klingt logisch - funktioniert auch :)

Danke :)
Grund der Beschwerde: