Einzelnen Beitrag anzeigen
  #4 (permalink)  
Alt 12.07.21
traderdoc traderdoc ist offline
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Schön, dann wollen wir mal:
Prinzipiell bei allen Schleifen, wo Orders geöffnet aber v.a. geschlossen werden, sollte:

for (int i = OrdersTotal()-1; i>= 0; i--)

stehen und nicht
for(i = 0; i < total; i++)
oder eben
for(i = 0; i < OrdersTotal(); i++)
D.h. Dekrementierung verwenden und nicht Inkrementierung!

int TotalOrders =OrdersTotal();
völlig ohne Funktion!?

Den Teil
Code:
double TotalOrder()
 {
  double GetTotalOrder =0;
  for ( int cnt=0;cnt<OrdersTotal();cnt++)
  {
   OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
   if ( OrderMagicNumber() == MagicNumber)
     { 
      GetTotalOrder +=(OrdersTotal() );
     }
   }
  return (GetTotalOrder);
 }
habe ich überhaupt nicht verstanden. Würde z.B. OrdersTotal() = 3 sein, dann stünde in der Variablen GetTotalOrder entweder 0, 3, 6 oder 9, je nachdem, ob die MagicNumber jeweils stimmte.
Aber auch egal, weil die Funktion TotalOrder() nirgendwo im Programm aufgerufen wird, also nutzlos und überflüssig.

In Summe wird OrdersTotal() sinnvollerweise vom EA nur 4 Mal aufgerufen, davon 1 Mal in einer dekrementierenden und 3 Mal in einer inkrementierenden Schleife.

Das würde ich zuerst ändern.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.