In diesem Video geht es um das Schließen von allen geöffneten Positionen. Hier ist das beispielsweise passiert.
Es handelt sich um einen einfachen Expert Advisor, der immer dann alle Positionen schließt, wenn wir uns hier mit der Equity oberhalb der Balance, also der Bruttobilanz befinden.
Das bedeutet, sobald dieser Wert hier über 300016 Euro steigt, werden hier oben die Positionen geschlossen.
Wie können wir jetzt einen Expert Advisor in MQL5 erstellen, der in der Lage ist, diese Testpositionen hier alle auf einmal zu schließen?
Um das zu tun, klicken Sie bitte im MetaTrader5 hier oben auf diesen kleinen Button oder drücken die F4-Taste. Das ruft dann hier den Meta Editor auf, und hier klicken wir auf Datei, neu, Expert Advisor aus Vorlage, weiter.
Ich vergebe hier mal den Namen Simpler Position Close EA, klicke auf weiter, weiter, und fertigstellen.
Und jetzt kann alles oberhalb der On-Tick-Funktion hier entfernt werden. Das gilt auch für die zwei Kommentarzeilen.
Im ersten Schritt müssen wir die Trading-Bibliothek mit den vereinfachten Funktionen importieren.
Das geht mittels Include-Befehl, und wir benötigen die in MQL5 enthaltene Datei Trade.MQH. Sie enthält vereinfachte Handelsfunktionen, und wir erstellen uns jetzt eine Instanz von der Klasse CTrade, die wird den Namen Trade bekommen.
In MQL5 geht das so, und in unserer On-Tick-Funktion, die bei jeder Preisänderung aufgerufen wird, holen wir uns zunächst einmal den Ask-Preis.
Das geht mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Und wir nutzen die Konstante Symbol_Ask, um hier den Ask-Preis zu ermitteln. Und mit NormalizeDouble und _Digits sorgen wir dafür, dass wir je nach Währungspaar entweder drei oder fünf Nachkommastellen berechnen, denn wie Sie sehen, gibt es da durchaus Unterschiede.
Im nächsten Schritt ermitteln wir den Bruttokontostand. Der Bruttokontostand ist das, was Sie hier vorne als ersten Wert im Strategietester sehen.
Man bezeichnet ihn auch als AccountBalance, und der wird ermittelt über die Funktion AccountInfoDouble in Verbindung mit der Konstante Account_Balance. Neben der Account Balance gibt es auch noch die sogenannte Account Equity. Die Equity ist der Nettokontostand.
Die Ermittlung ist ziemlich gleich, aber in diesem Fall nutzen wir die Konstante Account_Equity. Die Equity ist dieser Wert hier, und sie errechnet sich aus dem Bruttoguthaben abzüglich der Kosten für die offenen Positionen.
Und damit wir etwas haben, was wir gleichzeitig schließen können, öffnen wir jetzt einige Testpositionen.
Immer, wenn die Funktion PositionsTotal einen Rückgabewert kleiner fünf hat, dann nutzen wir die hier oben erstellte Trade-Instanz, um mit Trade.Buy zu kaufen. Ich ändere das hier mal auf zehn Micro Lot, das hier ist die Positionsgröße.
Wir kaufen auf dem aktuellen Chart zum Ask-Preis. Wenn Sie einen Doppelklick hier auf ein Währungspaar durchführen, dann sehen Sie, dass der Ask-Preis, diese rote Linie, immer über dem Bid-Preis, der blauen Linie, liegt.
Das hier ist das, was wir zahlen, wenn wir etwas kaufen, und das ist das, was wir erhalten, wenn wir etwas verkaufen.
Da wir in diesem Fall kaufen, müssen wir zum aktuellen Ask-Preis kaufen. Wir haben hier keinen Stop Loss definiert. Unser Profitziel wird 100 Punkte über dem aktuellen Ask-Preis liegen, und da wir keinen Kommentar verwenden, nutzen wir hier die Konstante null.
Und immer, wenn wir im Profit sind, wenn also unser Nettoguthaben das Bruttoguthaben übersteigt, dann möchten wir eine Funktion aufrufen mit dem Namen SchliesseallePositionen. Die gibt es aber noch gar nicht, also schreiben wir die jetzt.
Und diese Funktion werden wir jetzt erstellen. Hier ist unsere On-Tick-Funktion zu Ende, also können wir darunter mit einer neuen Funktion beginnen.
Die soll alle unsere geöffneten Positionen schließen können. Sie ist vom Rückgabetyp Void. Void bedeutet, wir geben aus dieser Funktion nichts an unsere Hauptfunktion zurück.
Und wir möchten jetzt in einer For-Schleife von der aktuellen Anzahl der geöffneten Positionen herunterzählen bis Null.
Also von der Anzahl aller Positionen, abzüglich Eins, weisen wir hier eine Positionsanzahl zu. Und solange die Anzahl der Positionen noch größer ist als Null, also solange noch Positionen existieren, vermindern wir unseren Positionszähler immer um jeweils Eins.
Und jetzt ermitteln wir die Ticket-Nummer für die aktuelle Position mit der Funktion PositionGetTicket. Das Ergebnis weisen wir hier der Variable Ticket zu, und die brauchen wir, um die aktuelle Position zu schließen.
Das machen wir mit TradePositionClose, und hier, in diesen runden Klammern, übergeben wir die Ticket-Nummer von hier.
Und das war es vom Prinzip auch schon, bleibt uns noch, die For-Schleife und die Funktion SchließeallePositionen zu schließen, indem wir hier unten noch zwei geschweifte Klammern nutzen.
Und falls wir alles richtig gemacht haben, dann können Sie jetzt hier oben auf diesen Kompilieren-Button klicken oder die F7-Taste drücken, und dann sollten Sie hier unten Null Fehler haben.
Und wenn das so ist, klicken Sie bitte hier oben oder drücken Sie die F4-Taste, um in den MetaTrader zurückzukehren. Und im MetaTrader klicken wir auf Ansicht, Strategietester, oder drücken die Tastenkombination Steuerung und R.
Dann wird hier der Strategietester angezeigt, und dort wählen Sie bitte die Datei SimplerPositionCloseEA.EX5 aus. Bitte markieren Sie hier die Option für die Visualisierung und starten Sie Ihren Test.
Und schon werden Positionen eröffnet und auch wieder geschlossen, wie man hier gesehen hat. Beschleunigen wir das Ganze ein wenig, dann sehen Sie, dass der Expert Advisor funktioniert.
Und Sie haben in diesem Video gelernt, wie Sie mit MQL5 ein einfaches, automatisiertes Programm schreiben können, das in der Lage ist, geöffnete Positionen auf einem Schlag zu schließen.
Und Sie haben es selbst programmiert mit diesen paar Zeilen hier in MQL5.