Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 712

 
artmedia70:
Die Antwort sollte von selbst gegeben werden. Sortieren Sie offene Stellen nach dem Zeitpunkt ihrer Eröffnung. Und dann schließen Sie sie durch die Liste aus dem sortierten Array.

Kompliziert für mich, denke ich) gibt es einen Code, um Aufträge in der Reihenfolge zu schließen, in der sie geöffnet wurden.

//+------------------------------------------------------------------+
//|                 Закрыть все ордера                               |
//+------------------------------------------------------------------+


double ClossAllOrders ()

{
  for(int i=0; i<OrdersTotal(); )
  {
    if ( !OrderSelect(i, SELECT_BY_POS) )
      break;
    
    int type   = OrderType();

    bool result = false;
    
    switch(type)
    {
      //Close opened long positions
      case OP_BUY       : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 3, Lime );
                          break;
      
      //Close opened short positions
      case OP_SELL      : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 3, Lime );
                          break;

      //Close pending orders
      case OP_BUYLIMIT  :
      case OP_BUYSTOP   :
      case OP_SELLLIMIT :
      case OP_SELLSTOP  : result = OrderDelete( OrderTicket() );
    }
    
    if(result == false)
    {
      Print("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
      i++;
      Sleep(500);
    }  
  }
}

// End

So wie ich das verstehe, geht die Sortierung hier zu Lastenvon OrderTicket

wie man sie in den Code einfügt)

 
_new-rena:

138 - "Der angefragte Preis ist veraltet, oder Geld- und Briefkurs sind vertauscht.

Der Eröffnungs-/Schlusskurs kann nicht neu berechnet werden, da er vorhanden ist, aber es gibt ein Problem(Sie müssen den Kurs abfragen und ihm mit MarketInfo einen Wert zuweisen, und diesen einer anderen Variablen zuordnen):

Danke für den Tipp) Aber es stellte sich heraus, dass mein Problem im EA selbst liegt und nicht in dieser Funktion.
 
Wie man sich ein bestimmtes Niveau merken kann. Nehmen wir an, es war das Maximum einer Kerze. Aber die Zuweisung dieses Wertes an eine Variable erfolgte durch if. und in einer anderen Situation ist diese Variable Null, d.h. ich muss mich irgendwie an einen bestimmten Preis erinnern.
 
305:
Wie man sich eine bestimmte Stufe merkt. Nehmen wir an, es wäre das Maximum einer Kerze. Aber die Zuweisung dieses Wertes an eine Variable erfolgte durch if. und in einer anderen Situation ist diese Variable Null. d.h. ich muss mich irgendwie an einen bestimmten Preis erinnern.
Vielleicht kannhttps://book.mql4.com/ru/variables/arrays helfen. Ich glaube, Sie brauchen etwas weiter unten.

Zeitreihen-Arrays

 
Das funktioniert nicht. Ich werde es mit der horizontalen Linie versuchen.
 
305:
Das funktioniert nicht. Ich werde es mit der horizontalen Linie versuchen.

kim hat viele verschiedene Funktionen, um sich etwas zu merken, es dauert etwa 3 Minuten, um die Namen durchzugehen, vielleicht finden Siehttps://www.mql5.com/ru/forum/131859

 
7Konstantin7:

Kompliziert für mich, denke ich) gibt es einen Code, um Aufträge in der Reihenfolge zu schließen, in der sie geöffnet wurden.

Hier geht, so wie ich es verstanden habe, die Sortierung zu Lastenvon OrderTicket

Ich möchte es in den Code einfügen)

Bitte sagen Sie mir, was das Geheimnis ist, Aufträge in einer bestimmten Reihenfolge und nicht in einer Reihe zu schließen? Wie würden ein paar Sekunden die Lebensdauer des Kontos verändern?

Danke.

 
Roger:

Sagen Sie mir, was ist das Geheimnis, um Aufträge in einer bestimmten Reihenfolge und nicht nacheinander abzuschließen? Wie können ein paar Sekunden einen Unterschied in der Lebensdauer eines Kontos ausmachen?

Danke.

Nehmen wir das Schleppnetz, bei dem ich es nie geschafft habe, die Funktion( umzuschreiben, die die Aufträge in der Reihenfolge schließt, in der sie geöffnet wurden: shuffle

Diese Funktion schließt zuerst alle gewinnbringenden und dann alle verlustbringenden Aufträge, was zu einem hässlichen Gleichgewichtsdiagramm im Stapel und falschen Daten führt: maximaler Drawdown, maximale Serie von Verlustaufträgen, maximaler Gewinn und maximale Serie von gewinnbringenden Aufträgen.

Wenn ich Aufträge in einem gemischten Modus abschließen würde, dann gäbe es nicht so große Werte.

Wenn Sie Abschlussaufträge in der Reihenfolge verwenden, in der sie eröffnet wurden, wird die Bilanztabelle gleichmäßiger, und die Dateninformationen im Kontoauszug werden angemessener sein.

Angenommen, wir handeln mit vielen Paaren. Wenn wir alle Paare nacheinander abdecken, kann es sein, dass der Preis für ein Paar weggeht, bevor wir es erreicht haben,

Wenn wir in der Reihenfolge der Eröffnung eindecken, schließen wir bei einem Paar, dann bei einem anderen und so weiter, also ist es abwechslungsreicher.

Ich glaube, MT4 kann bis zu 8 Aufträge gleichzeitig senden, aber ich bin mir nicht sicher, in diesem Fall können wir noch schneller schließen.

 
7Konstantin7:

Nehmen wir das Schleppnetz, bei dem ich die Funktion( nicht so ändern konnte, dass die Aufträge in der Reihenfolge geschlossen werden, in der sie geöffnet wurden: Shuffle

in dieser Funktion werden zuerst alle gewinnbringenden und dann alle verlustbringenden Aufträge geschlossen, was zu einem hässlichen Gleichgewichtsdiagramm im Stapel sowie zu falschen Daten führt: maximaler Drawdown, maximale Serie von Verlustaufträgen, maximaler Gewinn und maximale Serie von gewinnbringenden Aufträgen.

Dann stellt sich heraus, dass es eine blöde anständige Achterbahn ist, zum Beispiel ging es um 500 $ hoch und fiel dann um 400 $ runter.

Wenn wir die Abschlussaufträge in der Reihenfolge verwenden, in der sie eröffnet wurden, wird das Gleichgewichtsdiagramm gleichmäßiger und die Dateninformation im Kontoauszug wird angemessener sein.

Angenommen, wir handeln viele Paare, und wenn wir sie alle nacheinander schließen, kann der Preis für ein Paar weggehen, bevor wir es erreichen,

Wenn wir in der Reihenfolge der Eröffnung eindecken, schließen wir bei einem Paar, dann bei einem anderen und so weiter, also ist es abwechslungsreicher.

Ich glaube, MT4 kann bis zu 8 Aufträge gleichzeitig senden, aber ich bin mir nicht sicher, in diesem Fall können wir noch schneller schließen.

Umgekehrter Zyklus. Suchen Sie die früheste offene Position, schließen Sie sie und gehen Sie zum Anfang des Zyklus. Fahren Sie fort, bis Sie keine Positionen mehr zu schließen haben.
 
artmedia70:
Umgekehrter Zyklus. Suchen Sie die früheste offene Position, schließen Sie sie und gehen Sie zum Anfang des Zyklus. Fahren Sie auf diese Weise fort, bis Sie keine Positionen mehr zu schließen haben.

Danke, ich kann das nicht, ich dachte nur, vielleicht könnte jemand ein paar Zeilen in diese Funktion kritzeln oder eine Eule fallen lassen, die endgültige Version. Ich glaube nicht, dass es schwer ist, aber es ist unwahrscheinlich, dass jemand helfen wird.

Es gibt 4 Kredite auf mql5 geben könnte), wenn es möglich ist, zwischen den Mitgliedern zu übertragen.

Grund der Beschwerde: