MQL5 TUTORIAL DEUTSCH – SIMPLER ORDER HISTORY PROFIT

video
play-sharp-fill

In diesem Video möchten wir uns einmal anschauen, wie man auf die historischen Ergebnisse, beispielsweise den Profit zugreifen kann. Wir öffnen dazu in diesem Expert Advisor vollautomatisch Positionen. Und wenn immer eine Position geschlossen wird, ändert sich hier oben diese Ausgabe. Die zeigt uns aktuell den Profit der letzten Position, die entsprechende Ticketnummer und die Positionsrichtung an. Wie kann man jetzt einen Expert Advisor programmieren, der in der Lage ist, den Profit aus den historischen Daten der geschlossenen Positionen zu ermitteln? Um das zu tun, klicken wir hier oben auf diesen kleinen Button oder drücken die F4 Taste. Das ruft dann hier den Meta Editor auf. Und hier wählen wir Datei, Neu, Expert Advisor aus Vorlage. Weiter. Ich vergebe hier mal den Namen SimplerOrderHistoryProfit. Klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der On Tick Funktion verschwinden. Auch die zwei Kommentarzeilen werden gelöscht. Zunächst importieren wir uns die Datei Trade.mqh und erstellen eine Instanz der Klasse CTrade. Die hat den Namen trade und wir werden sie gleich zum Öffnen von Positionen benötigen. In der On Tick Funktion berechnen wir uns den Ask und den Bid Preis. Das geht mit SymbolInfoDouble für das aktuelle Symbol. Wir nutzen SYMBOL_ASK für den Ask Preis. Und SYMBOL_BID für den Bid Preis. Wenn die Funktion PositionsTotal kleiner als eins ist, also wir keine geöffneten Positionen haben, dann möchten wir mit trade.Buy und trade.Sell jeweils zehn Mikrolot als Testposition eröffnen. Denn wir brauchen ja etwas, damit wir Profite ermitteln können. Das tun wir dann indem wir eine noch zu erstellende Funktion GetLastProfit aufrufen. Die wird uns dann unseren letzten Profit zurück liefern. Und zum Schluss erstellen wir noch eine Chartausgabe, die uns anzeigt: Mein letzter Profit war. In der neuen Zeile sehen wir dann unseren Rückgabewert von dieser Funktion, die wir jetzt noch programmieren müssen. Dazu erstellen wir unter der On Tick Funktion eine weitere Funktion. Die bekommt den Namen GetLastProfit. Hier brauchen wir zunächst einige Variablen. TotalNumberOfDeals wird uns die Gesamtanzahl der Deals aus der Historie anzeigen. MQl5 kennt Deals, Tickets, Orders und Positionsbezeichnungen. Eine Order ist immer ein Auftrag. Ich will etwas. Ob der Broker das annimmt oder nicht, ist zu diesem Zeitpunkt noch nicht klar. Wenn es aber dazu kommt, dann wird aus der Order ein sogenannter Deal. Der Broker erklärt sich bereit, das zu tun, was ich von ihm möchte. Und daraus kann dann eine Position entstehen, die in eine bestimmte Richtung geht. Zunächst nutzen wir den Befehl HistorySelect um uns die Historie aufzurufen. Wir hätten gerne vom Anfang bis zum derzeitigen Zeitpunkt alles. Jetzt gehen wir alle Vorgänge durch. Dazu machen wir uns hier eine Integerwert von null. Und solange der kleiner ist als die totale Anzahl von Deals in der Historie, zählen wir den immer weiter hoch. Jetzt versuchen wir eine Ticketnummer zu bekommen. Deswegen diese If Abfrage. Denn solange wir noch keine geschlossenen Positionen existieren, ist das nicht möglich. Sobald aber eine Ticketnummer in der Historie auftaucht, holen wir uns mit HistoryDealGetTicket für diese Position die entsprechende Ticketnummer und speichern sie in dieser Variable. Jetzt ermitteln wir den Profit. Das geht mit der Funktion HistoryDealGetDouble für die Ticketnummer. Und hier nutzen DEAL_PROFIT. Alles in Großbuchstaben. Zusätzlich holen wir uns noch den OrderTyp. Hierfür nutzen wir HistoryDealGetInteger für unsere Ticketnummer und holen uns den DEAL_TYPE. Auch alles in Großbuchstaben. Jetzt ermitteln wir das Symbol zur Ticketnummer mit HistoryDealGetString, holen wir uns aus unserer Ticketnummer den Wert für DEAL_SYMBOL. Und außerdem brauchen wir noch den DealEntryTyp für das OrderTicket. Wir möchten gern wissen, ob es sich um eine Kaufen oder Verkaufen Order handelt. Und diesen Ordertyp bekommen wir über HistoryDealGetInteger für die Ticketnummer. Und dafür verwenden wir jetzt DEAL_ENTRY. Und wenn das Währungspaar übereinstimmt, wenn also das Währungspaar aus dem Ticket passend ist zu dem Währungspaar, das wir gerade auf dem Chart haben und wenn es sich um eine Kaufen oder Verkaufen Order gehandelt hat, das wäre dann ORDER_TYPE_BUY oder ORDER_TYPE_SELL. Und wenn der Typ für DealEntry dem Wert eins entspricht, wenn also die Order geschlossen wurde, dann möchten wir aktiv werden und setzen die Positionsrichtung auf Verkaufen wenn beim Schließen gekauft wurde. Das hört sich zunächst erst mal seltsam an. Aber wenn man sich einmal die Historie im Metatrader anschaut, dann sieht man, dass sich hier Buy und Sell Vorgänge abwechseln. Denn immer wenn ein Ticket geschlossen wird, wird der gegenteilige Vorgang ausgelöst. Darum setzen wir, wenn der OrderType den Wert ORDER_TYPE_BUY hat, die Positionsrichtung auf VERKAUFEN-Trade. Denn wenn beim Schließen gekauft wurde, muss der Eröffnungsvorgang ein VERKAUFEN-TRADE gewesen sein. Anders herum, wenn beim Schließen verkauft wurde, dann handelt es sich um einen KAUFEN-TRADE. Alle Ergebnisse fassen wir hier in einem String mit dem Namen MyResult zusammen. Der enthält einen jeweiligen Text, einen Doppelpunkt und den jeweils ermittelten Wert für Profit, Ticketnummer und Positionsrichtung. Danach machen wir unsere ganze Klammern zu und liefern das Resultat zurück, indem wir den return Befehl benutzen. Wenn Sie soweit sind, können Sie hier oben auf Kompilieren klicken oder die F7 Taste drücken. Offensichtlich habe ich hier noch einen Klammerfehler. Hier fehlt die schließende Klammer von On Tick. Dafür habe ich hier eine Klammer zu viel. Aber jetzt passt die Sache. Der Vorgang wurde mit null Fehlern abgeschlossen. Ich habe hier zwei implizite Änderungen von Nummern in Textketten vorgenommen. Deswegen warnt mich der Kompiler hier. Aber in diesem einfachen Beispiel können wir jetzt hier oben klicken oder die F4 Taste drücken um in den Metatrader zurückzukehren. Und im Metatrader klicken wir auf Ansicht, Strategietester. Wählen hier die Datei SimplerOrderHistoryProfit.ex5 aus. Markieren die Visualisierung und starten einen Test. Und hier läuft unser Expert Advisor. Wir haben einen Kaufen und einen Verkaufen Trade eröffnet. Die Positionsnummern zwei und drei, die man auch hier sieht. Sind aber noch nicht geschlossen. Darum haben wir hier oben noch keinen letzten Profit. So sieht das Ganze dann aus. Und Sie haben in diesem kurzen Video gelernt, wie Sie mit MQL5 die Profite von bereits geschlossenen Positionen ermitteln können, in diesem Fall der letzten geschlossenen Position. Und Sie haben das selbst programmiert mit diesen paar Zeilen hier in MQL5.

Download “MQL5 TUTORIAL DEUTSCH - SIMPLER ORDER HISTORY PROFIT”

SimplerOrderHistoryProfit.txt – 132-mal heruntergeladen – 2,73 kB