Indikatoren im Expert Advisor

Hinweis: In meinen Ausführungen beziehe ich mich auf den MetaTrader5, das Vorgehen im MetaTrader4 unterscheidet sich nur geringfügig. Mit anderen Programmen habe ich noch keine Erfahrungen gesammelt.

Ein Expert Advisor soll dir bei der Analyse des Marktes helfen. Er soll dir Arbeit abnehmen. Der fundamentaldatenbasierte Handel lässt sich nur sehr schwer bis gar nicht automatisieren, aber das Steckenpferd der meisten Trader ist die technische Analyse und diese lässt sich wunderbar in einem Programm durchführen. Dafür werde ich dir in diesem Artikel zeigen, wie du einen RSI in deinen eigenen EA programmierst.

Doch kommen wir erstmal zur Auflösung von Challange #1. Nachdem ich dir gezeigt habe, wie du einen neuen EA anlegst und die Serverinformationen bei jedem Tick abrufst und auf dem Chart ausgibst, solltest du dir noch die Ask und Bid Preise bei jedem Tick anzeigen lassen. Im folgenden Bild findest du eine Musterlösung. Hast du eine andere Lösung gefunden? Dann teile die doch bitte in den Kommentaren und wir können die Vor- und Nachteile der jeweiligen Lösung diskutieren und gemeinsam lernen. 😊

Legen wir also mit dem RSI im MetaEditor los. Jeder Standard Indikator ist im MetaTrader schon vorprogrammiert. Du musst also den RSI nicht selbst berechnen, sondern greifst auf spezielle Funktionen innerhalb von mql5 zurück. Aufgerufen werden die vorprogrammierten Indikatoren mit „i“+Indikator. Nachfolgend ein Beispiel im Bild zum Nachmachen. Verwende dazu einfach die Programmdatei aus dem ersten Artikel oder der Challange #1.

Die Auswahlhilfe zeigt dir den RSI an und auch welche Eingabewerte du bereitstellen musst, damit die Funktion arbeiten kann. Genauere Infos zur Funktionsweise holst du dir am Besten in der Hilfe. Dazu klickst du mit der Maus auf iRSI in Zeile 6 und drückst die Taste F1. Die Hilfe öffnet sich in einem neuen Fenster und zeigt dir neben Erklärungen auch ein Codebeispiel.

Zu Beginn legst du dir am Besten die Parameter für die iRSI Funktion als vom Nutzer einstellbare Variablen an. Ich schreibe mir die Variablen immer oberhalb der OnInit() Funktion in die Codedatei. Das sieht für unser Beispiel etwa so aus:

Wenn du aufmerksam bist, fällt dir auf, dass ich den Parameter für das Symbol ausgelassen habe. Diesen Parameter lasse ich vom EA selbst ermitteln (wie das geht zeige ich dir nachher), damit es nicht zu ungewollten Fehlern durch den Nutzer kommt. Wäre ja doof, wenn du auf dem EURUSD handelst, dein RSI sich aber ausversehen auf den Goldchart bezieht. 😉

Als Ausgabewert (Return Value) geben die vorhandenen Indikatoren sogenannte Handles aus. Ein Handle ist ein Referenzwert zu einer vom Betriebssystem verwalteten Systemressource. In diesem Fall einem Speicherbereich. Mit einfachen Worten: Die Funktion iRSI berechnet den aktuellen RSI-Wert speichert diesen in einem Schließfach (Buffer) und gibt dir den Schlüssel (Handle) für das Schließfach. Da wir aber in einem Programm sind und dir der Computer keine Schlüssel in die Hand drücken kann, müssen wir diese Schlüssel in einer Variablen speichern. Den RSI-Wert im Schließfach kannst du allerdings nicht verwenden – du musst das Schließfach also auch noch öffnen und den Inhalt (den berechneten RSI Wert) legst du dann ebenfalls auf eine Variable. Mit jedem Tick berechnet der EA einen aktuellen RSI Wert, legt diesen in ein neues Schließfach und gibt dir den neuen Schlüssel. Damit du nicht jeden Schließfachinhalt einzeln speichern musst, legst du diesen in ein Array. Das klingt jetzt vermutlich schlimmer als es eigentlich ist. Essenz des Ganzen: für den Schlüssel musst du eine Variable anlegen und für den eigentlichen Wert ein Array (siehe folgendes Bild). Tipp für die nächste Challange: Es gibt auch Indikatoren die mehrere Werte berechnen und im Schließfach speichern – du kannst also mit einem Schlüssel auf mehrere Werte zugreifen.

Nachdem du jetzt alle Variablen angelegt hast, sagst du deinem EA noch, dass er den RSI verwenden soll. Dies geschieht im Abschnitt OnInit(). Der Funktion iRSI weißt du hier die vom Nutzer einstellbaren Variablen zu. Mit Symbol() holt sich der EA automatisch das Symbol des Charts auf dem er aktiviert ist. Zusätzlich sagst du dem Wertespeicher (RSI_Werte Array) das die neuesten Werte ganz vorn abgelegt werden. So als würdest du ein Schließfach nach dem Anderen öffnen und den neuesten Inhalt immer links danebenlegen. Bei den vielen Schließfächern die hier im Artikel geöffnet werden, komme ich mir langsam vor wie ein Bankräuber. 😃

Nun kannst du deinen Expert Advisor kompilieren und verwenden. Auf deinem ausgewählten Chart sollte nun neben der Serverzeit auch automatisch ein Bereich für den RSI eingeblendet werden. Klappts? Die in den Programmzeilen 2, 3 und 4 definierten Eingabewerte kannst du bei den Inputs des EA einstellen (siehe Artikel Verwendung von fertigen Tradingbots).

Doch Moment mal…jetzt öffnen wir die Schließfächer im Programmcode doch gar nicht! Allein für die Anzeige ist das auch nicht notwendig. Aber für spätere Berechnungen der Signale ist dies essentiell. Deshalb fügst du jetzt im Bereich OnTick() noch eine Zeile ein, um mit dem Handle auf den im Buffer gespeicherten Wert zuzugreifen (Zeile 26 im Programmcode, siehe Bild).

Damit du auch sehen kannst, dass du die RSI Werte richtig aus dem Schließfach geholt hast, schreibst du diese am Besten erstmal auf den Chart (Codezeil 34). Im Bereich OnDeinit() findest du hier noch eine weitere Codezeile IndicatorRelease(RSI_Handle). Beim Beenden des EA´s wird auf dem Computer damit der Buffer wieder freigegeben für andere Dinge. Wenn dich das Thema tiefergehend interessiert, dann bemühe bitte die Suchmaschine deines Vertrauens. Für die eigene EA-Programmierung musst du dir nur merken, dass du im Bereich OnDeinit() immer alle Schlüssel freigibst.

Jetzt nochmal kompilieren und dann zeigt dir dein EA nicht nur den Graphen des RSI an, sondern auch den aktuellen RSI-Wert oben Links unter der Serverzeit, dem Ask und dem Bidpreis.

Challange #2:

Lege einen neuen EA an. Programmiere dort einen Stochastik Oszillator ein.

Viele Grüße HMPRocky

P.s.: Dir gefällt was du liest? Dann abonniere den Blog! Dann wirst du über neue Artikel automatisch informiert und verpasst nix mehr. Einfach einloggen und unter einem der Artikel auf „Abonnieren“ klicken!

11.04.2021 | 240 Aufrufe

Kommentare