In diesem Video wollen wir uns einmal anschauen, wie man einen RSI Indikator erstellt, der eine Position eröffnet, wenn der Wert unter dreißig liegt und diese Position wieder schließen, sobald der Wert über siebzig steigt. Also lassen Sie uns einmal schauen, wie man so etwas mit MQL5 programmieren kann. Um das zu tun, klicken Sie bitte im Metatrader hier oben auf dieses kleine Symbol oder drücken Sie die F4 Taste. Das ruft dann hier den Meta Editor auf. Und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier einmal den Namen SimplerRSIBuyStop, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion gelöscht werden. Und wir entfernen auch die zwei Kommentarzeilen. Wir starten mit einer include Anweisung. Die wird uns die Datei Trade.mqh importieren. Die stellt uns dann wiederum die Klasse CTrade zur Verfügung, von der wir hier eine Instanz erstellen. Die bekommt den Namen trade. Innerhalb der OnTick Funktion nutzen wir SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart, um uns den Ask Preis oder den Bid Preis zu ermitteln. Dazu übergeben wir als Parameter SYMBOL_ASK beziehungsweise SYMBOL_BID. Und mit NormalizeDouble und _Digits stellen wir sicher, dass wir automatisch die richtige Anzahl der Nachkommastellen für das jeweilige Währungspaar berechnen. Im Anschluss erstellen wir uns hier ein Array vom Typ double. Mit ArraySetAsSeries wird unser Array dann von der aktuellen Kerze an abwärts sortiert. Und jetzt können wir die in MQL5 eingebaute Funktion iRSI nutzen, um für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit für 14 Kerzen den Wert anhand der Schlusskurse zu ermitteln. Wir nutzen CopyBuffer, um anhand der Definition die wir gerade getroffen haben für das aktuelle Buffer null, angefangen von der aktuellen Kerze Nummer null, für drei Kerzen die Daten in unser RSI Array zu kopieren. Und jetzt berechnen wir den aktuellen Wert, indem wir einfach den Wert für Kerze null aus unserem RSI Array ermitteln. Mit NormalizeDouble und zwei stellen wir sicher, dass der Wert auf zwei Nachkommastellen gekürzt wird. Denn so wird er auch von unserem Indikator auf dem Chart angezeigt. Sofern wir keine geöffnete Position haben, ist der Rückgabewert für PositionsTotal null. Und wir möchten gleichzeitig ermitteln, ob der RSI Wert unter dreißig liegt. Das wäre dann für uns ein Kaufsignal. Und dann nutzen wir trade.Buy, um eine Kaufposition für zehn Mikrolot zu eröffnen. Es handelt sich hier um eine Testposition. Und die möchten wir danach über eine selbsterstellte Funktion mit dem Namen CheckRSIBuyStop schließen. Dazu übergeben wir hier den aktuellen RSI Wert als Parameter. Damit wir auch was sehen nutzen wir die Comment Ausgabe, um auf dem Chart den aktuellen RSI Wert auszugeben. Diese Klammer hier schließt unsere Hauptfunktion. Aber damit wir diese Funktion hier auch nutzen können, müssen wir die jetzt noch programmieren. Unsere benutzerdefinierte Funktion soll den Namen CheckRSIBuyStop erhalten. Und wir übergeben hier den aktuellen RSI Wert. Mit Hilfe einer For-Schleife gehen wir alle offenen Positionen durch und holen uns für jede Position das aktuelle Währungspaar. Das geht mit der Funktion PositionsGetSymbol für den aktuellen Schleifenzähler. Außerdem ermitteln wir das Ticket der jeweiligen Position mit dem Befehl PositionGetInteger. Hier verwenden wir als Parameter POSITION_TICKET. Bitte alles in Großbuchstaben. Für den Positionstypen erfolgt die Ermittlung ähnlich. Auch hier nutzen wir PositionGetInteger und diesmal ist der Parameter POSITION_TYPE. Denn damit können wir prüfen, ob der Typ der aktuellen Position den Wert POSITION_TYPE_BUY hat. Denn dann ist es eine Buy-Position und nur dann möchten wir weitermachen. Nachdem wir das geprüft haben, möchten wir für den Fall, dass der aktuelle RSI Wert größer ist als siebzig, unsere Position mit Hilfe der Funktion trade.