In diesem Video wollen wir uns einmal anschauen, wie man einen Expert Advisor für diesen Oszillator hier programmieren kann. Es handelt sich um den Bill Williams Market Facilitation Index. Schauen wir uns also einmal an, wie man so etwas in MQL5 programmiert. Um das zu tun, klicken Sie im Metatrader bitte auf dieses kleine Symbol hier oben 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 einmal den Namen SimplerBWMFIEA, 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 oben mit einer include Anweisung für die Datei Trade.mqh. Die ist Bestandteil von MQL5. Und die enthält die Klasse CTrade, von der wir uns hier eine Instanz mit dem Namen trade erstellen, die wir später benutzen werden, um Positionen zu eröffnen. In der OnTick Funktion erstellen wir uns zunächst eine Signal Variable vom Typ string. Die kann Texte aufnehmen. Wir weisen hier aber noch keinen Wert zu. Denn den möchten wir jetzt gleich ermitteln. Dazu berechnen wir zunächst einmal den Ask Preis. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir verwenden SYMBOL_ASK, alles in Großbuchstaben. Und mit der Funktion NormalizeDouble und _Digits stellen wir sicher, dass wir die richtige Anzahl von Nachkommastellen für das jeweilige Währungspaar berechnen. Das Ganze machen wir hier nochmal für den Bid Preis. Die Zeile ist soweit identisch, bis auf den Variablennamen. Und natürlich nutzen wir hier als Parameter SYMBOL_BID. Außerdem brauchen wir noch ein Array. Das soll die Werte aufnehmen, die wir gleich berechnen. Mit ArraySetAsSeries sorgen wir dafür, dass unser Bill Williams Market Facilitation Index von der aktuellen Kerze an abwärts sortiert wird. Die eigentliche Definition ist sehr einfach. Wir nutzen die in MQL5 enthaltene Funktion iBWMFI. Die bekommt drei Parameter übergeben. Der erste Parameter steht für das aktuelle Währungspaar. Der zweite Parameter für das auf dem Chart verwendete Zeitfenster. Und Parameter drei ist hier VOLUME_TICK. Wenn man das einmal markiert und die F1 Taste drückt, dann stellen wir fest, dass man sich hier für das Tick Volumen oder für das reale Volumen entscheiden kann. Und mit CopyBuffer können wir jetzt anhand der Definition, die wir hier oben getroffen haben, unser BWMFI Array für Buffer null von der aktuellen Kerze null für drei Kerzen füllen und die Werte in unserem Array speichern. Um den aktuellen Wert zu berechnen schauen wir jetzt einfach, welcher Wert in Kerze null von unserem Array enthalten ist. Wir nutzen NormalizeDouble und die fünf, um fünf Nachkommastellen zu berechnen. Denn das ist auch der Wert, den wir hier unten im Originaloszillator sehen. Das Ganze wiederholen wir jetzt nochmal, aber diesmal für Kerze eins. Damit können wir den letzten ermittelten Wert berechnen. Das ermöglicht uns zu prüfen, ob der aktuelle Wert größer ist als der letzte Wert. Wenn das so wäre, würden wir das als Kaufsignal sehen und dann weisen wir den Begriff Buy unserer Signal Variable zu. Andernfalls, wenn der aktuelle Wert kleiner ist als der letzte Wert, dann halten wir das für ein Verkaufssignal. Und dann weisen wir den Begriff Sell unserer Signal Variable zu. Wenn unser Signal jetzt den Wert Sell hat, und die Funktion PositonsTotal uns einen Rückgabewert kleiner eins liefert, dann bedeutet das: wir haben ein Verkaufssignal und keine geöffnete Position. Und in dem Fall nutzen wir trade.Sell, um zehn Mikrolot zu verkaufen. Andernfalls, wenn unser Signal den Wert kaufen hat und wir ebenfalls keine geöffnete Position haben, dann nutzen wir trade.Buy, um zehn Mikrolot zu kaufen. Zum Schluss lassen wir uns hier mit dem Comment Befehl noch den Text: Das Signal ist jetzt, gefolgt von dem ermittelten Signal ausgeben. Das war es soweit.