Welches Design ist richtig?

 

Wie diese

void Close_All()
{
  int Total = OrdersTotal();
  for (int i=0; i < Total; i++)   //требует уточнения эта строка                                                     
  {                                                                                          
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
    {
      switch(OrderType())
      {
        case OP_BUY : OrderClose(OrderTicket(),OrderLots(),Bid,5); break;
        case OP_SELL: OrderClose(OrderTicket(),OrderLots(),Ask,5); break;
        default     : break;
      }        
    }
  }  
} 

oder so...

void Close_All()
{
  int Total = OrdersTotal();
  for (int i=1; i <= Total; i++)                                                        
  {                                                                                          
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
    {
      switch(OrderType())
      {
        case OP_BUY : OrderClose(OrderTicket(),OrderLots(),Bid,5); break;
        case OP_SELL: OrderClose(OrderTicket(),OrderLots(),Ask,5); break;
        default     : break;
      }        
    }
  }  
}

und wird diese Funktion alle Aufträge abschließen?

Ich habe nur eine Bestellung, die aus irgendeinem Grund geschlossen wurde, ich kann den Grund nicht herausfinden.

 
Beide sind reine Zeitverschwendung.
 
TheXpert:
Beide sind reine Zeitverschwendung.


Und warum?
 
valenok2003:


Warum?


Weil es so besser ist:

int Total = OrdersTotal();
  for (int i=Total; i>=1; i--)
   if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
...
 
valenok2003:


PATHY Warum?
PATAMU, dass keine Ihrer Optionen ALLE Aufträge schließen wird, wenn es mehr als 1 gibt.
 

auch nur eine einzige Bestellung... darf nicht schließen...

 

OrdersTotal() - Gibt die Gesamtzahl der offenen und schwebenden Aufträge zurück

Für OrderSelect() - Beginnt die Nummerierung mit eins oder null?

 
valenok2003:

OrdersTotal() - Gibt die Gesamtzahl der offenen und schwebenden Aufträge zurück

Beginnt die Nummerierung bei OrderSelect() mit Eins oder Null?

Überlegen Sie, was mit der Nummerierung passiert, wenn mindestens ein Auftrag abgeschlossen ist.

Die Nummerierung beginnt bei Null.

 
Die erste Variante ist grundsätzlich richtig, sie schließt alle Aufträge, aber die Schlusskurse sollten normalisiert werden. Die zweite schlägt fehl, nicht alle Aufträge werden geschlossen (der Zyklus ist nicht korrekt)
 

Ja, genau, viele Feiertage sind schlecht für das Gehirn. ))))

Ich danke Ihnen!

 
Techno:
Die erste Variante ist grundsätzlich richtig, sie schließt alle Aufträge, aber wir müssen die Schlusskurse normalisieren. Der zweite Versuch schlägt fehl, da nicht alle Aufträge abgeschlossen werden (die Schleife ist nicht korrekt).


Das wird sie nicht.

Wenn Sie mir nicht glauben, machen Sie einen Versuch mit einer Demo.