Diskussion zum Artikel "Das MQL5-Kochbuch – Mehrwährungsfähiger Expert Advisor und die Arbeit mit Pending Orders in MQL5"

 

Neuer Artikel Das MQL5-Kochbuch – Mehrwährungsfähiger Expert Advisor und die Arbeit mit Pending Orders in MQL5 :

Diesmal werden wir einen mehrwährungsfähigen Expert Advisor mit einem Handelsalgorithmus erstellen, der auf der Arbeit mit den Pending Orders Buy Stop und Sell Stop basiert. Folgende Themen werden in diesem Beitrag erörtert: der Handel in einem festgelegten Zeitbereich, Platzieren/Modifizieren/Löschen von Pending Orders, die Prüfung, ob die letzte Position bei Take Profit oder Stop Loss geschlossen wurde, und die Kontrolle der Historie der Abschlüsse für jedes Symbol.

Nach der Optimierung der Parameter des Währungspaars EURUSD müssen die gleichen Parameter für AUDUSD optimiert werden. Nachfolgend sehen Sie das Ergebnis des gleichzeitigen Tests beider Symbole. Die Ergebnisse wurden nach dem maximalen Erholungsfaktor ausgewählt. Der Loswert wurde für den Test für beide Symbole mit 1 festgelegt.

Abb. 3 – Gemeinsames Testergebnis der zwei Symbole.

Abb. 3 – Gemeinsames Testergebnis der zwei Symbole.


 

Zeit.

Stunden reichen nicht immer aus, auch Minuten sind notwendig. Zum Beispiel, wenn der Markt zu gebrochenen Zeiten öffnet und schließt.

Und diese Funktion wirft Fragen auf - Sie müssen viel öfter bis Mitternacht handeln als Sie Minuten benötigen

bool IsInTradeTimeRange(int symbol_number)
  {
//--- Wenn der Zeitspannenhandel aktiviert ist
   if(TradeInTimeRange[symbol_number])
     {
      //--- Datums- und Zeitstruktur
      MqlDateTime last_date;
      //--- Abrufen der neuesten Datums- und Zeitdaten
      TimeTradeServer(last_date);
      //--- Außerhalb des zulässigen Zeitraums
      if(last_date.hour<StartTrade[symbol_number] ||
         last_date.hour>=EndTrade[symbol_number])
         return(false);
     }
//--- Innerhalb des zulässigen Zeitraums
   return(true);
  }
 
TheXpert:

Zeit.

Stunden reichen nicht immer aus, auch Minuten sind notwendig. Zum Beispiel, wenn der Markt zu Bruchteilen der Zeit öffnet und schließt.

Und diese Funktion wirft Fragen auf - man muss viel öfter bis Mitternacht handeln als in Minuten.

Ja, ich stimme zu. Ich werde versuchen, es später in einem neuen Schema zu visualisieren.

Dann sollten wir vielleicht anstelle von Aufzählungen eine Zeile machen, in der der Benutzer die Zeit selbst angibt. Zum Beispiel:"9: 35". Ansonsten wird die Liste der Parameter um drei weitere Parameter (im Artikelschema) zur Angabe von Minuten erweitert.

Es wäre großartig, wenn es eine bequeme Standardmöglichkeit zur Angabe der Uhrzeit gäbe. Jetzt haben wir datetime, wir müssen Zeit machen. )

 

Da es sich um Programmcode handelt, ist er IMHO nicht für einen Artikel geeignet, sondern eher für den Abschnitt Code Base.

 
revers45:

Eigentlich ist das alles Programmcode, IMHO eignet er sich nicht als Artikel, sondern eher für den Abschnitt Code Base.

Nun gut. Dann gute Arbeit. Schreib und poste alles in der Code Base ;)
 
revers45:

Eigentlich ist das alles Programmcode, IMHO eignet er sich nicht als Artikel, sondern eher für den Abschnitt Code Base.

Solche Artikel sind praktisch, um die Sprache zu lernen.

Es ist einfacher, sowohl den Text als auch den Code zu lesen und die Abbildungen auf einmal zu betrachten, als den Artikel einzeln durchzublättern und die Codes aus verschiedenen Dateien zu trennen.

Aber ich stimme zu, dass ein beschreibender Teil fehlt. Konzept und Hauptpunkte der Implementierung in Form von Klartext.

 
komposter:

Solche Artikel sind praktisch, um eine Sprache zu lernen.

Es ist einfacher, sowohl den Text als auch den Code zu lesen und die Abbildungen auf einmal zu betrachten, als den Artikel einzeln durchzublättern und die Codes aus verschiedenen Dateien zu trennen.


Aber ich stimme zu, dass ein beschreibender Teil fehlt. Konzept und Hauptpunkte der Implementierung in Form von Klartext.

Diese Artikelserie ist eher für das sequenzielle Sprachenlernen gedacht. Das Schema wurde in einem der vorherigen Artikel beschrieben und es ist wahrscheinlich nicht sinnvoll, alles noch einmal zu beschreiben. Am Anfang des Artikels befindet sich ein Link zu dem Artikel, in dem dieses Schema im Detail betrachtet wurde. Hier wurden zusätzliche Funktionen geschrieben und einige kleine Änderungen vorgenommen. Alles ist einfach und nichts überflüssig, und jede Zeile des Codes ist kommentiert. Ich denke, es ist schön, viele verschiedene vorgefertigte Schemata zu haben, die man einfach nehmen und verwenden kann.

Ich kann mir nicht vorstellen, was man dem Artikel noch hätte hinzufügen können. Aber das ist in Ordnung. ))

 
Warum so viel Code für mehrere Symbole? Wäre es nicht einfacher, einen Expert Advisor für jedes Symbol zu verwenden, ich denke, dass das Programm dadurch schneller laufen würde. In diesem Zusammenhang, lieber Autor, könnten Sie mir sagen, wie ich diese Funktionen für die Arbeit mit schwebenden Aufträgen umwandeln kann, so dass sie nur für ein Symbol gelten, mit Ausnahme der Art und Weise, wie man in die Variable #define NUMBER_OF_SYMBOLS eine einfügt?
 
kuva:
Warum gibt es so viel Code für mehrere Symbole?

Um das System im Tester auf mehreren Symbolen gleichzeitig testen zu können.

kuva:
Wäre es nicht einfacher, einen Expert Advisor auf verschiedene Symbole zu setzen, meiner Meinung nach wird es schneller sein, Programme auszuführen. In diesem Zusammenhang, lieber Autor, könnten Sie mir sagen, wie man diesen Code so umwandelt, dass er nur auf einem Zeichen funktioniert, abgesehen von der Art und Weise, wie man in die Variable #define NUMBER_OF_SYMBOLS eins setzt?

Wenn Sie wollen, dass es nur mit einem Zeichen funktioniert, entfernen Sie einfach alle Schleifen im Zusammenhang mit der Zeichensuche. Aus einigen Funktionen müssen Sie dann den ersten Parameter der Zeichensequenznummer entfernen.

Auch Arrays, die mit Werten externer Parameter initialisiert wurden, werden nicht mehr benötigt. In Funktionen, in denen sie verwendet wurden, müssen sie durch Variablen mit externen Parametern ersetzt werden.

[Gelöscht]  
Führen Sie einen Vorwärtstest mit echten Zecken durch - das Optimierungsergebnis wird das Gegenteil sein.
 
Es ist furchtbar unbequem, nach Symbolen über symbol_number zu suchen. Früher habe ich dieses Schema verwendet, aber jetzt bin ich auf OOP umgestiegen. Jedes Symbol = eine Instanz der Klasse. Zur Laufzeit, bei jedem OnChartEvent-Ereignis, durchsuchen Sie die Instanzen der Klasse der Reihe nach. Das funktioniert sogar ein bisschen schneller.