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 CloseAllSellPosit...