In diesem Video wollen wir uns einmal anschauen, wie man einen Expert Advisor programmieren kann, der Verkaufspositionen bei einem bestimmten, vom Benutzer definierten Wert, schließt. Also lassen Sie uns einmal schauen, wie man so etwas mit MQL programmiert.
Um das zu tun, klicken Sie bitte im Metatrader hier oben auf dieses kleine Symbol oder drücken Sie die F4-Taste. Das öffnet dann hier den Metaeditor und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage, weiter. Ich vergebe hier mal den Namen SimplesSellPercentageRisiko, klicke auf weiter, weiter und fertigstellen. Jetzt kann hier alles oberhalb der OnTick-Funktion gelöscht werden und auch die zwei Kommentarzeilen werden entfernt. Wir starten hier mit einem include-Befehl. Die in MQL5 enthaltene Datei trade.mqh ermöglicht es uns vereinfachte Trading-Funktionen zu nutzen. Dazu erstellen wir uns zunächst einmal eine Instanz von der Klasse C-Trade. Die bekommt den Namen trade und wir werden sie später verwenden, um Testpositionen zu eröffnen. Außerdem hätte ich gerne eine input-Variable. Wenn man diesen input-Begriff einmal mit der Maus markiert und die F1-Taste drückt, dann sieht man, dass es sich um eine sogenannte Eingabevariable handelt.
Die können dann vom Benutzer im Fenster für die Eigenschaften des Expert Advisor geändert werden ohne dass man neu kompilieren muss. Die Variable ist vom Typ double, damit sie auch Nachkommastellen verarbeiten kann, und der Startwert sind 0,5 Prozent. Außerdem benötigen wir eine weitere Variable für den maximalen Verlust, den wir akzeptieren werden. Auch die ist vom Typ double. Innerhalb der OnTick-Funktion starten wir damit, dass wir den Bid-Preis berechnen. Das geht mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen hier SYMBOL_BID, da wir den Bid-Preis benötigen. Und mit NormalizeDouble und _Digits stellen wir sicher, dass wir die richtige Anzahl von Nachkommastellen für das jeweilige Währungspaar automatisch berechnen. Jetzt holen wir uns noch die Account Balance. Das geht mit Hilfe der Funktion AccountInfoDouble. Als Parameter übergeben wir hier ACCOUNT_BALANCE. Wenn Sie das markieren und die F1-Taste drücken, dann werden Sie feststellen, dass man sich noch sehr viele andere Eigenschaften vom Konto anzeigen lassen kann. Uns interessiert hier aber nur das Bruttoguthaben.
Und damit wir eine Position schließen können, müsse wir Testpositionen eröffnen. Dazu prüfen wir, ob PositionsTotal einen Wert kleiner eins zurückliefert. Das würde bedeuten, wir haben keine geöffnete Position. Und dann nutzen wir hier trade.Sell, um eine Testposition für zehn Microlot zu eröffnen. Natürlich würden wir das nicht auf einem Echtgeldkonto machen, aber dafür sind Demokonten ja gut und ohne Positionseröffnung können wir auch nichts schließen. Auf dem Echtgeldkonto könnten Sie aber mehrere Positionen haben, darum gehen wir mit einer Vorschleife alle diese Positionen durch. Mit Hilfe von PositionGetTicket für den aktuellen Schleifenzähler ermitteln wir die Ticketnummer für die aktuelle Position. Den Profit kann man ermitteln, indem man PositionGetDouble nutzt. Hier übergeben wir POSITION_PROFIT. Auch da gibt es diverse Informationen, die man sich so ermitteln lassen kann. Wenn Sie es richtig machen wollen, dann müssen Sie den SWAP, also die Zinsen für das Halten von Positionen über Nacht auch mit im Profit ermitteln, aber für dieses einfache Beispiel soll uns das hier so reichen. Weiter geht’s mit der Berechnung für den maximalen Verlust, den wir erlauben möchten. Und um das zu berechnen, nehmen wir die Balance, also das Bruttoguthaben, teilen es durch 100, dann haben wir ein Prozent vom Bruttoguthaben. Dieses Prozent können wir dann mit dem benutzerdefinierten Wert multiplizieren, den der Expert Advisor vom Benutzer übergeben bekommt. Und falls Sie sich über diesen Teil hier wundern, damit kehren wir das Ganze ins Negative um, denn ein maximaler Positionsverlust ist ein negativer Wert. Fügen wir noch zwei Printausgaben hinzu. Die ermöglichen uns später den Positionsprofit und den maximalen Positionsverlust in unserer Journalreiterkarte ausgeben zu lassen.
Und wenn der Verlust unserer Position hier einen höheren Wert hat, als der von uns definierte maximale Positionsverlust, das sind ja negative Werte, dann nutzen wir trade.PositionClose, um das aktuelle Ticket zu schließen. Beenden wir noch den Vorloop, den wir genutzt haben, um die Positionen durchzugehen. Und für die Chartausgaben fügen wir hier noch einen Comment-Befehl hinzu. Der wird uns die Balance, den maximalen Positionsverlust und den Risikowert auf dem Chart anzeigen. Das war´s so weit. Wenn Ihnen das hier zu schnell ging oder wenn Sie keine Ahnung haben, was alle diese Codezeilen hier bewirken sollen, dann möchten Sie sich vielleicht zunächst eines der anderen Videos aus der Grundlagenserie noch einmal anschauen. Vielleicht ist aber auch der Premiumkurs interessant für Sie. Den finden Sie auf unserer Webseite. Und da gibt´s jetzt auch Angebote zum Download von solchen Quellcodes hier. Für den Moment klicken wir hier aber mal auf Ansicht, lassen uns die Werkzeugleiste anzeigen und klicken hier oben auf Kompilieren.
Alternativ können Sie die F7-Taste auf Ihrer Tastatur benutzen. Das Ganze sollte hier ohne Fehler funktionieren und wenn das bei Ihnen auch so ist, dann klicken Sie bitte hier oben auf dieses kleine Symbol 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. Bitte wählen Sie hier die neu erstellte Datei SimplesSellPercentagesRisiko aus, markieren Sie die Option für den visuellen Modus und starten Sie Ihren Test. Hier sehen wir im Journal die aktuellen Positionsverluste und den maximalen Positionsverlust. Das wird automatisch berechnet und angepasst. Und sobald eine Position hier ein größeren Verlustbetrag erreicht als wir erlauben, das ist jetzt passiert, dann wird die Position automatisch geschlossen. Unser Expert Advisor funktioniert also wie gewünscht. Und Sie haben in diesem kurzen Video gelernt, wie Sie für Verkaufspositionen einen Expert Advisor erstellen können, der aufgrund eines benutzerdefinierten Prozentwertes die Positionen automatisch schließt. Und Sie haben das selbst programmiert, mit diesen paar Zeilen hier in MQL5.