MQL5 TUTORIAL GRUNDLAGEN – 77 SIMPLER AWESOME INDIKATOR

video

In diesem Video wollen wir uns einmal anschauen, wie man für diesen Oszillator hier, den Awesome-Indikator, benutzerdefinierte Werte für den Kauf und den Verkauf eingeben und automatisieren kann. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 programmiert. Um das zu tun klicken Sie im Metatrader hier oben auf dieses kleine Symbol oder drücken 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 einmal den Namen SimplerAwesomeIndikator, 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 einer include-Anweisung. Die wird uns die Datei trade.mqh importieren. Die ist Bestandteil von MQL5 und ermöglicht es uns vereinfachte Handelsfunktionen zu benutzen. Dazu erstellen wir uns im nächsten Schritt von der Klasse CTrade eine Instanz mit dem Namen trade. Außerdem möchten wir gerne in der Lage sein, einen Signalwert als Benutzereingabe vorzugeben. Dieser Zusatz hier input ermöglicht es uns einen Fließkommawert für unser Signal ohne Neukompilierung des Codes später im Expert Advisor verändern zu können. Das hier ist der vorbelegte Initialwert. In der OnTick-Funktion holen wir uns zunächst einmal den Ask-Preis und den Bid-Preis. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen SYMBOL_ASK oder SYMBOL_BID je nach dem ob wir den Ask- oder den Bid-Preis berechnen. Und mit NormalizeDouble und _DIGITS stellen wir sicher, dass wir für das jeweilige Währungspaar die richtige Anzahl von Nachkommastellen berechnen. Im nächsten Schritt erstellen wir uns eine signal-Variable. Die bekommt hier aber noch keinen Wert zugewiesen, denn den möchten wir gleich noch ermitteln. Mit MqlRates holen wir uns jetzt die Preisinformationen, denn MqlRates bewahrt Informationen über Preis, Volumen und Spread auf. Wir nutzen hier ArraySetAsSeries, um unser Array von der aktuellen Kerze an abwärts zu sortieren und danach nutzen wir CopyRates, um für das aktuelle Symbol auf dem Chart und dir dort eingestellte Zeiteinheit, angefangen von der aktuellen Kerze 0, die Daten für 3 Kerzen in unser PriceInformation-Array zu kopieren. Danach brauchen wir noch ein weiteres Array. Das werden wir nutzen, um den aktuellen Oszillatorwert zu berechnen. Und für die Definition was wir da berechnen möchten, nutzen wir die eingebaute MQL5-Funktion iAO. Die benötigt genau zwei Parameter. Der erste Parameter steht für das aktuelle Währungspaar und der zweite Parameter für die auf dem Chart ausgewählte Zeiteinheit. Auch dieses Array sortieren wir von der aktuellen Kerze an abwärts, in dem wir ArraySetAsSeries benutzen. Und jetzt nutzen wir CopyBuffer, um anhand der Definition, die wir hier oben getroffen haben, für Buffer 0, also das jeweilige Signal hier, von der Kerze 0 an für 3 Kerzen die Preisdaten in unserem PriceArray zu speichern. Und jetzt berechnen wir den aktuellen Wert einfach in dem wir uns den Wert aus Kerze 0 aus unserem PriceArray holen. Mit NormalizeDouble und dieser 6 stelle ich sicher, dass der Ausgabewert sechs Nachkommastellen hat, so wie hier auch im Oszillator auch angezeigt wird. Und wenn dieser Wert größer ist, als der von uns definierte gewünschte Signalwert, dann ist das für uns ein Kaufsignal und dann weisen wir den Begriff buy unserer signal-Variable zu. Im anderen Fall, wenn der Oszillatorwert kleiner ist als 0, abzüglich unserem Signalwert, das ist dann der Minuswert für unser Signal, dann stellt das für uns ein Verkaufssignal dar und dann weisen wir den Begriff sell unserer Signalvariable zu. Und immer wenn unser Signal auf verkaufen steht und der Rückgabewert für PositionsTotal kleiner ist als 1, dann bedeutet das wir haben keine geöffneten Positionen, aber ein Verkaufen-Signal und dann nutzen wir trade.Sell, um 10 Microlot zu verkaufen. Passen wir das hier mal an. Im anderen Fall, wenn unser Signal den Wert buy hat und wir ebenfalls keine geöffneten Positionen haben, dann nutzen wir hier trade.Buy um 10 Microlot zu kaufen. Zum Schluss erstellen wir uns mit dem Comment-Befehl hier noch eine Chartausgabe. Der wird uns das aktuelle Signal, den aktuellen Wert für den Oszillator den wir hier übrigens mit DoulbleToString umwandeln müssen, weil wir sonst Exponentialschreibweise auf unserem Chart sehen, und die aktuellen Werte für unser Kauf- und unser Verkaufssignal direkt auf dem Chart anzeigen. Das wars soweit. Wenn Ihnen das hier alles zu schnell ging oder wenn Sie nicht verstehen was alle diese Codezeilen bewirken sollen, dann möchten Sie sich vielleicht zunächst einmal eines der anderen Videos aus dieser Grundlagenserie anschauen. Vielleicht ist aber auch der Premiumkurs auf unserer Webseite interessant für Sie. Für den Moment klicken wir hier oben mal auf kompilieren oder drücken die F7-Taste. Das hat bei mir ohne Fehler funktioniert und wenn das bei Ihnen auch so ist, dann können Sie jetzt hier oben klicken oder die F4-Taste drücken, um in den Metatrader zurück zu kehren. 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 SimplerAwesomeIndikator.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 die erste geöffnete Position. Hier oben werden buy- und sell-Signale ausgegeben. Jetzt klicken wir im Metatrader einmal auf die Eingaben. Hier sieht man das übrigens mit der Exponentialschreibweise. Wir ändern unseren Signalwert jetzt einmal auf 0,001, starten unseren Test erneut und diesmal sehen wir dass die Signalstärke noch nicht erreicht ist. So kann man einstellen, wie viele Signale der Awesome Oszillator hier produziert. Und Sie haben in diesem kurzen Video gelernt, wie Sie für diesen Oszillator hier einen Expert Advisor erstellen können, der in der Lage ist, Kaufen- und Verkaufensignale anhand einer vom Benutzer definierten Signalstärke zu erzeugen. Und Sie haben das selbst programmiert, mit diesen paar Zeilen hier in MQL5.