Code schließt nicht alle Orders

Einloggen oder registrieren, um einen Kommentar zu schreiben
Marc1993
31
Marc1993  
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 :)
Carl Schreiber
Moderator
9795
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?
Marc1993
31
Marc1993  
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 :)
Einloggen oder registrieren, um einen Kommentar zu schreiben