MQL5 TUTORIAL GRUNDLAGEN – 104 SIMPLER CROSSOVER SELL STOP LOSS

video
play-sharp-fill

 

In diesem Video wollen wir einmal einen Expert Advisor erstellen, der bei sich überschneidenden gleitenden Durchschnitten in der Lage ist, Sell Position automatisch zu schließen. Das ist jetzt grade passiert. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 programmieren kann. Um das zu tun klicken Sie im Metatrader bitte hier oben auf dieses kleine Symbol oder drücken Sie die F4 Taste. Das ruft dann hier den Metaeditor auf. Und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier den Namen SimplerSellCrossoverStopLoss, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion gelöscht werden.

 

Und auch die zwei Kommentarzeilen werden entfernt. Wir starten mit einem include Befehl. Der wird uns die Inhalte der Datei Trade.mqh zur Verfügung stellen. Die enthält vereinfachte Handelsfunktionen. Und um die zu nutzen, erstellen wir uns jetzt von der Klasse CTrade eine Instanz mit dem Namen trade. Innerhalb der OnTick Funktion möchten wir den Ask Preis ermitteln. Das geht mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen SYMBOL_ASK. Und mit NormalizeDouble und _Digits stellen wir sicher, dass die richtige Anzahl von Nachkommastellen für das jeweilige Währungspaar ermittelt wird. Das Ganze wiederholen wir dann noch einmal für den Bid Preis. Da ist eigentlich nur der Name der Variable anders und wir nutzen hier SYMBOL_BID.

 

Außerdem brauchen wir eine Variable für unser Signal. Die nennen wir auch signal, weisen hier aber noch keinen Wert zu, denn der wird gleich noch ermittelt. Für die Preisdaten brauchen wir zwei Arrays, ein SmalMovingAverageArray und ein BigMovingAverageArray. Und die Definition für den SmallMovingAverageArray ersten wir mit Hilfe der Funktion iMA für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit möchten wir für zwanzig Kerzen einen Wert ermitteln. Wir nutzen hier keine Verschiebung. Dieser Parameter steht für SMA, also Smal Moving Average.

 

Sie könnten hier auch MODE_EMA für eine exponentiellen gleitenden Durchschnitt nutzen. Und das Ergebnis soll ermittelt werden anhand der Schlusspreise der Kerzen. Für den BigMovingAverage sieht das ganz ähnlich aus. Diesmal ermitteln wir hier den Wert für fünfzig Kerzen. Mit Hilfe von CopyBuffer können wir jetzt anhand der Definition die wir hier oben getroffen haben für Buffer null, also die einzige Signallinie von der aktuellen Kerze null für drei Kerzen die Daten kopieren und in unserem SmallMovingAveragerArray speichern. Für den BigMovingAverageArray wiederholen wir das Ganze nochmal. Und nachdem wir das alles durchgeführt haben sind wir in der Lage, herauszufinden, ob der Wert für Kerze eins in unserem BigMovingAverageArray kleiner ist, als der Wert für Kerze eins in unserem SmallMovingAverageArray. Falls das zutrifft, setzen wir hier unser Signal auf buy, also kaufen.

 

Im anderen Fall, wenn der Wert für Kerze eins im BigMovingAverageArray größer ist, als der Wert für Kerze eins im SmallMovingAverageArray, dann wäre das ein Verkaufssignal und dann setzen wir unsere Signalvariable hier auf sell. Und wenn wir ein kaufen Signal haben und die Anzahl unserer Positionen größer ist als null, dann möchten wir gerne alles Verkaufspositionen schließen, weil sich der Trend gedreht hat. Im anderen Fall, wenn unser Signal auf verkaufen steht und wir keine offene Position haben, dann eröffnen wir hier mit trade.sell eine Testposition für zehn Mikrolot. Wie gesagt, das hier ist nur für den Test. Man würde das auf einem Echtgeldkonto natürlich nicht machen. Damit wir sehen, wie das aktuelle Signal aussieht, fügen wir hier eine Comment Ausgabe für das Chart hinzu. Die wird uns den Text anzeigen: Das Signal ist jetzt… gefolgt von dem ermittelten Signal. Damit wir diese Position hier nutzen können, müssen wir die jetzt aber noch programmieren, denn die existiert noch nicht. Der Name unserer Funktion soll CloseAllSellPositionsThisPair sein. Wir nutzen hier void, da wir keinen Rückgabetyp benötigen. Mit Hilfe von einer for Schleife gehen wir alle Positionen durch. Zunächst ermitteln wir die Ticketnummer für die aktuelle Position. Das geht mit der Funktion PositionGetTicket für den aktuellen Schleifenzähler. Danach identifizieren wir her das Währungspaar für die Position.

 

Das übernimmt die Funktion PositionGetSymbol. Auch hier übermitteln wir den aktuellen Schleifenzähler. Außerdem benötigen wir die Richtung der aktuellen Position. Die erhalten wir über die Funktion PositionGetInteger. Und übergeben hier den Parameter POSITION_TYPE. Und nur, wenn unsere Positionsrichtung den Wert POSITION_TYPE_SELL hat, wenn es also eine Verkaufsposition ist, dann möchten wir eine zweite Bedingung prüfen. Und zwar, ob das Währungspaar auf dem Chart mit dem Positionssymbol übereinstimmt. Treffen alle diese Bedingungen zu, dann nutzen wir hier trade.PositionClose für unser aktuelles Ticket, um die jeweilige Position zu schließen. Zum Schluss müssen wir noch die for Schleife und die Funktion schließen. Und das war es soweit. Wenn Ihnen das hier zu schnell ging oder wenn Sie keine Ahnung haben, was alle diese Code Zeilen bewirken sollen, dann möchten Sie sich vielleicht zunächst die anderen Video 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 es neuerdings auch einen Link zu Quellcodes von diesen Grundlagen Videos. Aber für den Moment klicken wir hier auf Kompilieren oder drücken die F7 Taste. Das sollte ohne Fehler funktionieren. Und wenn das bei Ihnen auch der Fall ist, dann können Sie jetzt hier oben auf dieses kleine Symbol klicken oder die F4 Taste drücken, um in den Metatrader zurückzukehren. Und im Metatrader klicken wir auf Ansicht, Strategietester oder drücken die Tastenkombination Ctrl+R. Bitte wählen Sie hier die neu erstellte Datei SimplerSellCrossoverStopLoss.ex5 aus, markieren Sie hier unten die Option für den visuellen Modus und starten Sie Ihren Test. Hier läuft unser Expert Advisor auch schon los. Wir haben eine aktuelle Position, die gerade den Take Profit erzielt hat.

 

Und sobald sich diese beiden gleitenden Durchschnitte hier überkreuzen und der Trend gewechselt hat, sollten wir sehen, dass die Position jetzt gleich geschlossen wird. Das ist gerade passiert. Unser Expert Advisor funktioniert also wie gewünscht. Und Sie haben in diesem kurzen Video gelernt, wie Sie einen Sell Crossover Stop für zwei gleitende Durchschnitte im MQL5 programmieren können.  Und Sie haben das selbst programmiert, mit diesen paar Zeilen hier in MQL5.