![video](https://d8wyob5mxqc1u.cloudfront.net/MQL4-TUTORIAL-DE/BASICS/MQL4-TUTORIAL-GRUNDLAGEN-77-SIMPLER-AWESOME-INDIKATOR.png)
In diesem Video wollen wir einmal herausfinden, wie man diesen Oszillator hier programmieren kann. Es handelt sich um den Awesome Oszillator von Bill Williams und wir wollen außerdem benutzerdefinierte Signalwerte so eingeben und verändern können, dass wir den Code nicht neu kompilieren müssen. Um das zu tun, klicken Sie bitte 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 alles oberhalb dieser OnTick-Funktion hier gelöscht werden und auch die zwei Kommentarzeilen werden entfernt. Wir starten hier mit einer Variable die den Zusatz input bekommt. Denn input-Variablen können vom Benutzer während der Programmlaufzeit verändert werden, ohne dass man neu kompilieren muss. Unsere Variable ist vom Typ float, hat den Namen SignalValue und der initiale Wert ist 0,0005, aber wie gesagt, diesen Wert kann man später als Benutzer auch verändern. Innerhalb der OnTick-Funktion erstellen wir uns zunächst eine string-Variable mit dem Namen signal. Hier weisen wir aber noch keinen Wert zu. Denn den möchten wir gleich noch ermitteln. Um den aktuellen Wert für den Awesome Oszillator zu berechnen, kommt MQL4 mit einer eingebauten Funktion, die heißt iAO. Die braucht genau drei Parameter. Der erste Parameter ist für das aktuelle Symbol, also das Währungspaar auf dem Chart. Der zweite Parameter steht für das auf dem Chart eingestellte Zeitfenster. Und dieser dritte Parameter hier wäre ein Verschiebungswert. Den nutzen wir aber nicht, deswegen steht er auf 0. Das reicht schon, um den Wert zu ermitteln, aber damit das später keine Rundungsprobleme gibt, möchte ich gerne den Wert noch etwas schöner formatieren. Das übernimmt die Funktion NormalizeDouble. Die bekommt hier im ersten Parameter den Originalwert übergeben und der zweite Parameter hier steht für die Anzahl der Nachkommastellen. In diesem Fall 6. Das Ergebnis wird dann wieder der Originalvariable zugewiesen. Und das soll dafür sorgen, dass wir später keine Abweichung durch Rundungsdifferenzen haben, denn jetzt kommen wir zur Ermittlung der Einstiegssignale. Und wenn unser aktueller Wert für den Awesome Oszillator größer ist, als der von uns definierte Benutzersignalwert, dann möchten wir gerne verkaufen und darum weisen wir unserer Signalvariable den Begriff sell zu. Andernfalls, wenn der Wert für den Oszillator kleiner ist, als 0 minus den von uns definierten Signalwert, dann ist das Ganze für uns ein Kaufsignal und darum weisen wir dann buy unserer Signalvariable zu. Und immer wenn unser Signal auf buy, also auf kaufen steht und der Rückgabewert für die Funktion OrdersTotal uns eine 0 zurückgibt, dann bedeutet das wir haben ein Kaufsignal und keine geöffneten Positionen. Und dann nutzen wir OrderSend um 10 Microlot zu kaufen. Im andern Fall, wenn unser Signal den Wert sell hat und wir ebenfalls keine geöffneten Positionen auf dem Chart haben, dann möchten wir gerne verkaufen, also nutzen wir in dem Fall OrderSend, um 10 Micorlot zu verkaufen. Zum Schluss nutzen wir noch den Comment-Befehl hier, um eine Chartausgabe zu generieren.
Die wird uns das aktuelle Signal, den formatierten Wert für den Oszillator und die Werte für Kaufen- und Verkaufensignale ausgeben, wobei das hier falschrum ist. Bitte beachten Sie auch, dass hier diese Funktion DoubleToString genutzt wird. Die soll vermeiden, dass wir auf dem Chart später Exponentialschreibweise sehen. Und das wars auch so weit. Wenn Ihnen das hier alles zu schnell ging oder wenn Sie keine Ahnung davon haben, was diese Codezeilen hier alle bewirken, dann möchten Sie sich vielleicht zunächst einmal die anderen Videos aus dieser Grundlagenserie noch einmal anschauen oder vielleicht ist sogar der Premiumkurs auf unsere Webseite interessant für Sie. Für den Moment klicken wir einmal auf kompilieren oder drücken die F7-Taste. Das sollte ohne Fehler funktionieren und wenn das bei Ihne auch so ist, dann klicken Sie bitte hier oben auf dieses kleine Symbol oder drücken Sie die F4-Taste, um in den Metatrader zurück zu kehren. Und im Metatrader brauchen wir ein leeres Chart. Hier klicken wir jetzt auf Einfügen, Indikatoren, Bill Williams und wählen den Awesome Oszillator. Die Standardwerte können wir einfach übernehmen und klicken auf OK, dann taucht hier unten der Oszillator auf und jetzt klicken wir mit der rechten Maustaste in das Chart und wählen Vorlagen, Vorlage speichern und speichern das Ganze unter dem Namen tester.tpl, denn das ist die Ansicht die wir gleich im Strategietester sehen werden. Die alte Version können Sie ersetzen. Und danach klicken wir hier auf Ansicht, Strategietester oder drücken die Tastenkombination Steuerung + R, um den Strategietester aufzurufen. Bitte wählen Sie hier die neu erstellte Datei SimplerAwesomeIndikator.ex4 aus. Markieren Sie die Option für den visuellen Modus und starten Sie Ihren Test. Hier läuft unser Expert Advisor auch schon los. Wir sehen aber keine Kaufen- oder Verkaufensignale, denn unsere Signalwerte hier sind zu hoch. Stoppen wir den Test einmal. Klicken auf Expert Advisor Optionen und verändern hier den Wert auf 0,0001. Danach starten wir einen neuen Test. Jetzt sollten wir in kurzer Zeit hier die erste Signale auf dem Chart ausgegeben bekommen. Das ist jetzt gerade passiert. Wir haben eine erste Sell-Position. Unser Expert Advisor funktioniert also wie gewünscht. Und Sie haben in diesem kurzen Video gelernt, wie Sie für den Awesome Oszillator einen Expert Advisor programmieren können, der in der Lage ist, benutzerdefinierte Signalvariablen zu handeln. Und Sie haben das selbst programmiert, mit diesen paar Zeilen hier in MQL4.
Podcast: Play in new window | Download