In diesem Video wollen wir uns einmal anschauen, wie man für Währungspaare, bei denen sich der Spread ändert, einen Filter bauen kann, der das Trading erlaubt oder nicht erlaubt. Um das zu tun, klicken Sie im Metatrader bitte hier oben auf dieses kleine Symbol 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 SimplerSpreadFilter, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. Wir starten mit einem include Statement. Damit importieren wir uns hier die Datei Tade.mqh. Und die erlaubt es uns, eine Instanz von der Klasse CTrade zu bilden. Wir haben hier den Namen trade vergeben und wir werden diese Instanz gleich nutzen, um Positionen zu eröffnen. Dazu ermitteln wir innerhalb der OnTick Funktion den Ask Preis und den Bid Preis. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen entweder SYMBOL_ASK oder SYMBOL_BID, je nachdem, ob wir den Ask oder den Bid Preis berechnen. Und mit NormalizeDouble und _Digits stellen wir sicher, dass für das jeweilige Währungspaar auch die richtige Anzahl von Nachkommastellen ermittelt wird. Das kann sich nämlich je nach Währungspaar unterscheiden. Im Anschluss benötigen wir eine Variable für unser Signal. Die ist vom Typ string, damit sie Textketten aufnehmen kann. Wir weisen hier aber noch keinen Wert zu, denn den möchten wir gleich ermitteln. Dazu erstellen wir uns zunächst mit der Funktion MqlRates ein Array, welches die Preisdaten aufnehmen kann. Mittels ArraySetAsSeries sortieren wir dann das Array von der aktuellen Kerze an abwärts. Jetzt nutzen wir CopyRates, um für das aktuelle Währungspaar und die aktuell ausgewählte Zeiteinheit von der Kerze null für drei Kerzen die Preise in unser Preis Array zu kopieren. Und damit wir etwas haben, was uns den aktuellen Spread anzeigt, nutzen wir die Funktion SymbolInfoIneger für das aktuelle Währungspaar auf dem Chart. Und mit diesem Parameter, SYMBOL_SPREAD, alles in Großbuchstaben, ermitteln wir jetzt den aktuellen Spread Wert und weisen ihn der Variable CurrentSpread zu. Jetzt hätte ich gerne noch eine Variable für den Spread Filter. Auch die ist vom Typ string und wird Textketten aufnehmen. Eigentlich könnten wir das Ganze auch so gestalten, dass der Benutzer eingeben darf, wieviel Spread maximal erlaubt ist. Darum erstelle ich hier im Kopfbereich eine sogenannte Input Variable. Die ermöglicht es, im laufenden Betrieb einen Maximalwert anzugeben. Wir vergeben zunächst erstmal den Startwert 15. Aber später kann der Benutzer diesen Wert auch anpassen. Und dann können wir hier unten prüfen, ob der aktuelle Spread Wert den maximal erlaubten Wert übersteigt. Und wenn das der Fall ist, dann setzen wir hier unseren Spread Filter auf: Trading ist nicht erlaubt. Im anderen Fall, wenn der aktuelle Spread Wert kleiner oder gleich ist, als der maximal erlaubte Wert, dann bekommt unser Spread Filter hier den Wert: Trading erlaubt, zugewiesen. Damit wir tatsächlich Positionen sehen, erstellen wir uns hier noch eine einfache Einstiegsregel. Wenn also der Schlusskurs von Kerze eins größer ist, als der Schlusskurs von Kerze zwei, dann weisen wir hier den Begriff buy unserer Signal Variable zu. Andernfalls, wenn der Schlusskurs von Kerze eins kleiner ist, als der Schlusskurs von Kerze zwei, dann möchten wir verkaufen. Also weisen wir den Begriff sell unserem Signal zu. Und unser Filter muss auf Trading erlaubt stehen, damit wir überhaupt eine Positionseröffnung in Erwägung ziehen. Denn nur, wenn unser Signal auf Verkaufen steht und die Funktion PositionsTotal kleiner ist als eins, das bedeutet, wir hätten ein Verkaufssignal und geöffneten Positionen, dann möchten wir einen Sell Trade für zehn Mikrolot eröffnen, wenn unser Spread Filter auf Trading erlaubt steht.