MQL5 Tutorial - Automatisch traden mit Metatrader5

MQL5 Tutorial - Automatisch traden mit Metatrader5

By MQL5 Tutorial - Automatisch traden mit Metatrader5BusinessInvesting
Download on the App Store

MQL5 Tutorial - Automatisch traden mit Metatrader5 episodes

  • MQL5 TUTORIAL GRUNDLAGEN – 19 SO TRADEN SIE EINEN SIMPLE MOVING AVERAGE
    In diesem Video wollen wir uns einmal anschauen, wie man diesen roten Moving Average handeln kann. Es handelt sich um einen Simple Moving Average für zwanzig Kerzen. Wir haben in diesem Expert Advisor hier oben Signale um zu kaufen und zu verkaufen. Und das Programm kann auch eigenständig handeln. Also finden wir mal heraus, wie man das mit MQL5 programmieren kann. Um das zu tun, klicken wir im Metatrader hier oben auf dieses kleine Icon oder drücken die F4 Taste. Das ruft dann hier das Metaeditor Fenster auf. Und hier klicken wir auf Datei, Neu, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier mal den Namen SimplerMovingAverageEA, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden. Und wir entfernen auch die zwei Kommentarzeilen. Wir starten mit diesem include Befehl. Der importiert uns die Datei Trade.mqh. Die gehört mit zu MQL5 und stellt Handelsfunktionen bereit. Danach erstellen wir uns eine Instanz von der Klasse CTrade. Die bekommt den Namen trade und wir werden sie gleich verwenden, um damit Positionen zu eröffnen. Damit wir das in beide Richtungen tun können, müssen wir den Ask-Preis und den Bid-Preis berechnen. Das geht mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir verwenden SYMBOL_ASK, alles in Großbuchstaben für den Ask-Preis. Und SIMBOL_BID, auch alles in Großbuchstaben, für den Bid-Preis. Ich nutze zusätzlich noch NormalizeDouble und _Digits. Denn damit wird automatisch berechnet, ob das aktuelle Währungspaar drei oder fünf Nachkommastellen hat. Jetzt nutzen wir die Funktion MqlRates, um uns ein Array für unsere Preisdaten zu machen. Das bekommt den Namen PriceInfo. Und danach nutzen wir die Funktion CopyRates für das aktuelle Symbol und die aktuell auf dem Chart ausgewählte Zeiteinheit. Die man übrigens beide auch mit Unterstrich schreiben kann. Dann können wir diese Klammern hier weglassen. Wir hätten gerne von der aktuellen Kerze null für drei Kerzen die Preisdaten und möchten diese in unserm PriceInfo Array speichern. Für unser Signal brauchen wir natürlich auch noch eine Variable. Die ist vom Typ string. Wir haben hier noch keinen Wert definiert, denn müssen wir ja noch ermitteln. Dazu erstellen wir uns noch ein Array. Diesmal für unseren SMA. Dieses Array bekommt den Namen myMovingAverageArray. Und jetzt nutzen wir die MQL5 Funktion iMA für das aktuelle Währungspaar auf den Chart und die aktuell auf dem Chart ausgewählte Zeiteinheit. Wir möchten gerne die Berechnung anhand der letzten zwanzig Kerzen ausführen. Dieser Parameter hier steht für eine Verschiebung. Damit könnte man nach rechts oder links verschieben. Wir möchten das aber nicht tun. Deswegen steht der Parameter hier auf null. Da wir einen Simple Moving Average berechnen möchten, nutzen wir hier MODE_SMA, alles in Großbuchstaben. Und da das Ganze auf den Schlusskurs berechnet werden soll, nutzen wir als letzten Parameter PRICE_CLOSE, auch alles in Großbuchstaben. Danach verwenden wir CopyBuffer um anhand der movingAverageDefiniton, die wir gerade hier oben getroffen haben, für Buffer null, das ist diese rote Linie hier, denn ein Simple Moving Average hat nur ein Buffer, von der aktuellen Kerze null für drei Kerzen, die Daten in unser MovingAverageArray zu kopieren. Jetzt definieren wir unser Kaufkriterium. Wenn der Schlusskurs für Kerze eins größer ist als der Moving Averarge Wert für Kerze eins und wenn der Schlusskurs für Kerze zwei noch kleiner war als der Wert von Kerze zwei von unserem MovingAverageArray, dann haben wir eine Überkreuzung. Und in dem Fall setzen wir den Wert für unser Signal auf Kaufen. Andernfalls, wenn der Schlusskurs für Kerze eins kleiner war, als der Wert für unser MovingAverageArray für Kerze eins und der Schlusskurs für Kerze zwei davor noch größer war, als der Moving Average für Kerze zwei, dann haben wir ebenfalls eine Überkreuzung. Und in dem Fall setzen wir unser Signal auf Verkaufen.
    9 min
  • MQL5 TUTORIAL GRUNDLAGEN – 17 SIMPLER SELL STOP
    In diesem Video wollen wir uns einmal anschauen, wie man eine Sell Stop als Pending Order in den Markt setzen kann. Wir sehen das nicht auf dem Chart. Aber wenn wir hinein zoomen, dann sieht man, dass hier unten eine Pending Order als Sell Stop deutlich unter dem aktuellen Preis gesetzt wurde. Und wir wollen uns jetzt einmal anschauen, wie das mit MQL5 geht. Dazu klicken Sie bitte auf diesen kleinen Button hier oder drücken die F4 Taste auf Ihrer Tastatur. Das ruft dann hier das Metaeditor Fenster auf. Und hier klicken wir auf Datei, Neu, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier einmal den Namen SimplerSellStop, klicke auf Weiter, Weiter und Fertigstellen. Jetzt können wir alles löschen, was sich oberhalb dieser OnTick Funktion hier befindet. Und auch die zwei Kommentarzeilen werden gelöscht. Wir starten damit, dass wir Trade.mqh importieren. Das geht mittels include Befehlt. Es handelt sich um eine Bibliothek mit Trading Funktionen, die wir gleich nutzen werden, um unseren Sell Stop zu eröffnen. Dazu erstellen wir uns erst einmal eine Instanz mit dem Namen Trade. Und innerhalb der onTick Funktion möchten wir jetzt den Bid Preis ermitteln. Das geht mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Und wir nutzen SIMBOL_BID, um uns den Bid Preis anzeigen zu lassen. Ich verwende hier immer noch gerne NormalizeDouble und _Digits. Denn damit lässt sich ermitteln, ob das aktuelle Währungspaar drei oder fünf Nachkommastellen hat. In diesem einfachen Beispiel möchten wir eine einfache Bedingung abfragen. Und das ist, ob wir bereits offene Orders oder Positionen haben. Die Anzahl der Orders liefert uns die Funktion OrdersTotal. Wenn die gleich null ist, dann bedeutet das, wir haben keine Pending Order im Markt. Und danach nutzen wir die Funktion PositionsTotal. Und wenn gleich null ist, dann bedeutet das, wir haben auch keine offenen Positionen. Der Unterschied ist, dass man eine Order irgendwo im Markt platzieren kann. Und sobald die ausgelöst wird, wird daraus eine Position. Soweit, so gut. Jetzt möchten wir gerne mit trade.SellStop unsere Pending Order im Markt platzieren. Dazu müssen wir eine Reihe von Parameter übergeben. Die gehen wir jetzt mal der Reihe nach durch. Der erste Parameter hier steht für die Lotgröße. Wir möchten gerne eine Pending Order für zehn Mikrolot eröffnen. Und diese Order wird gesetzt 200 Punkte oberhalb des Bid Preises. Jetzt, wo ich mir das so anschaue, ist das eigentlich falsch. Das muss unterhalb des aktuellen Bid Preises gesetzt werden. Der nächste Parameter ermittelt, welches Währungspaar wir auf unserem aktuellen Chart nutzen. Parameter Nummer vier steht für den Stop Loss. Den nutze ich hier gerade nicht. Dafür habe ich hier aber einen Take Profit Wert. Und da wir einsteigen, wenn der Preis 200 Punkte unter dem Bid Preis ist, und wir einen SellStop verwenden, muss der Take Profit natürlich unter dem Einstiegspreis liegen, zum Beispiel 400 Punkte darunter. Denn wenn wir verkaufen und der Preis fällt von 200 Punkten unter dem Bid Preis auf 400 Punkte unter dem Bid Preis, dann hätten wir 200 Profit. Dieser Parameter hier, ORDER_TIME_GTC sagt aus, dass unsere Order nicht abläuft. GTC steht für Good Till Cancel. Entweder die Order wird ausgeführt, oder wir müssten sie manuell löschen. Da gibt es noch andere Möglichkeiten. Zum Beispiel ORDER_TIME_DAY. Dann würde die Order nur für den aktuellen Handelstages gelten. Man könnte auch eine Ablauffrist spezifizieren. Wir möchten das Ganze gerne ohne Ablaufdatum in den Markt setzen. Darum ist auch der nächste Parameter null. Der steht für die Ablaufzeit. Und mit diesem letzten Parameter hier, können wir einen Textwert übergeben. So ein Kommentar könnte zum Beispiel nützlich sein, wenn man mehrere Expert Advisors auf ein und demselben Chart benutzt und gerne unterscheiden möchte. Das war es im Großen und Ganzen. Jetzt klicken wir hier auf Kompilieren oder drücken die F7 Taste.
    7 min
  • MQL5 TUTORIAL GRUNDLAGEN – 16 SIMPLES SELL LIMIT
    In diesem Video wollen wir uns einmal anschauen, wie man ein Sell Limit in den Markt setzen kann. Wir sehen es hier unten, aber dem Chart ist es erst ersichtlich, wenn mit der Minus-Taste hinein zoomen. Denn das Sell Limit liegt deutlich über dem aktuellen Preis. Und erst, wenn der Preis diese grüne Linie hier kreuzt, dann würde daraus ein Sell Position generiert. Und wir wollen uns in diesem Video einmal anschauen, wie man das mit MQL5 programmieren kann. Um das zu tun klicken Sie im Metatrader bitte auf dieses kleine Symbol hier oder drücken Sie die F4 Taste. Das ruft dann hier den Metaeditor auf. Und hier klicken wir auf Datei, Neu, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier mal den Namen SimplesSellLimit. Klicke auf Weiter, Weiter und Fertigstellen. Jetzt können wir alles löschen, was sich oberhalb der OnTick Funktion befindet. Und auch die zwei Kommentarzeilen werden entfernt. Wir starten damit, dass wir die Datei Trade.mqh importieren. Diese Datei ist Bestandteil von MQL5 und Metratrader. Und sie liefert uns vereinfachte Handelsfunktionen. Zunächst erstellen wir uns eine Instanz von der Klasse CTrade. Die bekommt den Namen trade und wir später genutzt, um unser Sell Limit im Markt zu platzieren. Dazu müssen wir zunächst den Bid Preis ermitteln. Das geht mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Und wir nutzen SIMBOL_BID, alles in Großbuchstaben, um den aktuellen Bid Preis zu ermitteln. Und ich nutze hier noch NormalizeDouble und _Digits. Denn damit lässt sich automatisch ermitteln, ob ein Währungspaar drei oder fünf Nachkommastellen hat. In diesem einfachen Beispiel prüfen wir nur auf eine einfache Bedingung. Wir möchten gerne wissen, ob die Funktion OrdersTotal und die Funktion PositionsTotal jeweils null zurückliefern. Eine Order ist ein Auftrag. Und wenn dieser Auftrag ausgefüllt wird, dann wird daraus eine Position. Und darum prüfen wir auch ab, ob wir mit der Funktion PositionsTotal ebenfalls den Wert null zurückgeliefert bekommen. Und wenn beides zutrifft, dann möchten wir unser Sell Limit im Markt platzieren. Dazu fügen wir hier zunächst einmal zwei Klammern hinzu. Und möchten mit trade.SellLimit unser Limit im Markt platzieren. Dafür müssen wir allerdings noch einige Parameter übergeben. Und die gehen wir jetzt mal Stück für Stück durch. Der erste Parameter steht für die Lotgröße. Wir möchten gerne einen Trade mit zehn Mikrolot eröffnen sobald unser Sell Limit ausgelöst wird. Der Einstiegspreis dazu soll 200 Punkte über dem aktuellen Bid Preis liegen. Mit _Symbol ermitteln wir das aktuelle Währungspaar auf dem Chart. In meinem Fall ist das hier der Euro gegen den US Dollar. Dieser Parameter hier steht für den Stop Loss. In diesem Beispiel ist der auf Null gesetzt, denn ich nutze keinen. Was wir aber nutzen ist der Take Profit. Der liegt einhundert Punkte unter dem Eröffnungskurs. Falls Sie also einen Stop Loss setzen möchten, dann könnten Sie das auch in dieser Notation hier tun. Zum Beispiel auf Bid + 300 Punkte. Wir möchten aber gerne 200 Punkte über dem aktuellen Bid Preis einsteigen. Und wenn sich der Preis einhundert Punkte in unsere Richtung bewegt, dann nehmen wir unseren Take Profit mit. Der nächste Parameter ORDER_TIME_GTC ist wieder eine Konstante. Die steht für das Ablaufdatum. ORDER_TIME_GTC bedeutet: Unsere Pending Order bleibt gültig, bis sie manuell gelöscht wird. GTC steht für Good Till Cancel. Würden wir beispielsweise ORDER_TIME_DAY verwenden, dann wäre die Order nur innerhalb des aktuellen Handelstages gültig. Wir haben hier aber kein Ablaufdatum. Und darum haben wir auch den nächsten Parameter auf Null gesetzt, denn das wäre die Ablaufzeit. Und dieser letzte Parameter hier, NULL, auch alles in Großbuchstaben, steht für einen Kommentar, den wir übergeben könnten. Wenn man den nicht braucht, dann kann man diese Konstante hier verwenden. Oder wir ersetzen das hier mal durch „Mein Kommentar“. Das war es so weit auch. Wenn Sie alles haben,
    7 min
  • MQL5 TUTORIAL GRUNDLAGEN – 15 SO FUNKTIONIERT EIN BUY STOP
    In diesem Video wollen wir uns einmal anschauen wie man einen sogenannten BuyStop im Markt platziert. Auf dem Chart sieht man momentan nicht sehr viel davon. Aber wenn man hineinzoomt, kann man erkennen, dass wir hier eine Order gesetzt haben, die sich oberhalb vom Marktpreis befindet. Und sobald hier der Preis diese grüne Linie kreuzt, würde unsere Order ausgeführt und eine Position eröffnet. Und wir wollen uns jetzt einmal anschauen, wie man das mit MQL5 programmieren kann. Um das zu tun klicken Sie im Meta-Trader bitte auf diesen kleinen Button hier oder drücken die F4-Taste. Das ruft dann hier den Meta-Editor auf. Und hier klicken wir auf Datei, Neu, Expert-Advisor aus Vorlage, Weiter. Ich vergebe hier mal den Namen SimplerBuyStop, klicke auf Weiter, Weiter und Fertigstellen. Jetzt können wir alles oberhalb der OnTick-Funktion hier löschen. Auch die zwei Kommentarzeilen kommen weg. Wir starten damit, dass wir hier die Datei Trade.mqh importieren. Das geht mit dem Include-Befehl. Diese Datei ist Bestandteil von MQL5 und liefert uns vereinfachte Handelsfunktionen. Wir erstellen uns eine Instanz von der Klasse CTrade. Die bekommt den Namen trade und wir werden sie später verwenden, um unseren BuyStop zu eröffnen. Zunächst ermitteln wir den Ask_Preis. Das geht mit der Funktion SymbolInfoDouble. Für das aktuelle Währungspaar auf dem Chart. Wir nutzen hier als zweiten Parameter Symbol unterstrich Ask. Wenn wir den einmal markieren und die F1-Taste drücken, dann lernen wir, dass wir damit das Kaufangebot ermitteln können. Ich nutze immer noch zusätzlich NormalizeDouble und underscore Digits für die Formatierung. Denn damit kann man automatisch ermitteln ob das aktuelle Währungspaar drei oder fünf Nachkommastellen hat. Fügen wir hier noch eine Abfrage hinzu die uns sagen soll, ob wir noch offene Orders oder offene Positionen haben. Eine Order ist etwas das man im Markt platziert, dass eine Position werden kann. Unser BuyStop hier wurde noch nicht ausgeführt, ist also noch eine Order. Erst wenn das Preisziel erreicht wird, wird daraus eine Position. Und wir möchten nur dann eine Order eröffnen, wenn wir keine offenen Orders und keine offenen Positionen haben. Wenn das so ist, möchten wir unseren BuyStop setzen und das geht so: Wir nutzen trade.BuyStop und übergeben eine ganze Menge Parameter hier. Der erste Parameter ist für die Lot-Größe. In unserem Fall sind das 10 Microlot. Der zweite Parameter ist der Eröffnungspreis. Wir möchten gerne 200 Punkte über den aktuellen Ask_Preis eine Position eröffnen. Und zwar für das aktuelle Währungspaar, dass mit unterstrich Symbol ermittelt wird. Dieser Parameter steht für den StopLoss. Ich habe hier keinen gesetzt. Der könnte zum Beispiel 100 Punkte über dem Ask_Preis liegen. Da wir unsere Position ja erst 200 Punkte oberhalb des aktuellen Preisniveaus eröffnen. Parameter Nr. 5 wäre der TakeProfit. Den habe ich in diesem Fall auf 400 Punkte oberhalb des aktuellen Ask_Preises gesetzt. Das gäbe uns dann eine Gewinnspanne von 200 Punkten, da wir ja bei 200 Punkten oberhalb des Ask_Preises die Position eröffnen. Dieser Parameter hier Order_Time_GTC steht für good to cancle. Wenn man den markiert und F1 drückt, dann lernen wir die PendingOrder bleibt gültig bis sie manuell gelöscht wird. Man könnte auch Order_Time_Day nutzen, wenn man eine Order nur innerhalb eines Handelstages setzen will. Die würde dann automatisch zum Tageswechsel gelöscht. Mit Order_Time_Specifide könnte auch eine Ablauffrist setzen. In dem Fall würde man für den nächsten Parameter noch eine Ablaufzeit nutzen. Unsere Order wird aber so lange stehenbleiben, bis sie manuell gelöscht wird. Der letzte Parameter hier, Null in Großbuchstaben, steht für einen Kommentar. Tatsächlich können wir das auch mal angeben. Es handelt sich um eine Textkette, also bitte die Anführungszeichen nicht vergessen. Und das wars auch schon. Wenn Sie soweit alles haben, dann können Sie hier auf Kompilieren klicken oder die F7-Taste drücken.
    7 min
  • MQL5 TUTORIAL GRUNDLAGEN – 14 SIMPLES BUY LIMIT
    In diesem Video wollen wir uns einmal anschauen, wie man ein Buy Limit automatisch mit MQL5 im Markt platzieren kann. Ein Buy Limit ist ein Auftrag für einen Kauf, der zu einem bestimmten Kurs ausgeführt werden soll. In der Regel kaufen wir zum Marktpreis. Aber wenn wir hier mal hinein zoomen, dann sehen wir, dass Buy Limit deutlich unter dem aktuellen Marktpreis liegt. Und erst, wenn sich der Kurs bis hier unten bewegt hat, dann würde eine Kauforder ausgelöst. Und wir wollen uns einmal anschauen, wie man das mit MQL5 programmieren kann. Um das zu tun, klicken Sie im Metatrader bitte auf diesen kleinen Button hier oder drücken Sie die F4 Taste. Das ruft dann hier den Metaeditor auf. Und hier klicken wir auf Datei, Neu, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier einmal den Namen SimplesBuyLimit, klicke auf Weiter, Weiter und Fertigstellen. Jetzt können wir alles löschen, was sich oberhalb dieser OnTick Funktion befindet. Auch die zwei Kommentarzeilen werden entfernt. Wir starten, indem mit dem include Befehl die Datei Trade.mqh importieren. Das ist eine Bibliothek, die vereinfachte Handelsfunktionen bereitstellt und die mit MQL5 installiert wird. Danach erstellen wir uns eine Instanz von CTrade. Die bekommt den Namen trade. Und diese Instanz werden wir später nutzen, um unser Buy Limit im Markt zu platzieren. In der OnTick Funktion selbst, müssen wir zunächst einmal den Ask Preis berechnen. Das machen wir mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Und wir nutzen SYMBOL_ASK, alles in Großbuchstaben, um den Ask Preis zu ermitteln. Mit NormalizeDouble und _Digits lässt sich der ermittelte Preis auf die entsprechende Anzahl von Nachkommastellen kürzen. In diesem Währungspaar wären das drei, während das in anderen Währungspaaren auch mal fünf Nachkommastellen sein können. Für dieses einfache Beispiel ermitteln wir einfach, ob wir bereits offene Orders oder Positionen haben. In MQL5 gibt es zwei unterschiedliche Befehle dafür. OrdersTotal liefert uns die Anzahl der Aufträge für Positionen. Und PositionsTotal liefert uns die tatsächliche Anzahl von geöffneten Positionen. Mit diesem doppelten && hier lassen sich beide Bedingungen miteinander verknüpfen. Und wir setzen erst dann unser Buy Limit ab, wenn beides geprüft worden ist. Dazu nutzen wir jetzt trade.BuyLimit. Hier brauchen wir noch ein paar Parameter. Die werden hier in runden Klammern übergeben. Ich mache immer direkt beide Klammern. Man kann leicht eine Klammer vergessen. Und gerade für Anfänger ist es vielleicht gut zu wissen, dass man eine Klammer markieren kann. Dann wird immer die jeweils andere Klammer ebenfalls angezeigt. So kann man relativ einfach rausfinden, ob man in solchen Konstrukten hier irgendwo eine Klammer vergessen hat oder eine Klammer zu viel nutzt. In unserem ersten Parameter geben wir an, wieviel wir kaufen wollen. In diesem Fall sind das zehn Mikrolot. Parameter Nummer zwei gibt an, zu welchem Preis unser Buy Limit gesetzt werden soll. Wir möchten gerne 200 Punkte unter dem aktuellen Ask Preis unser Buy Limit setzen. Im nächsten Parameter geben wir an, für welches Währungspaar wir diesen Auftrag erteilen wollen. Mit _Symbol wird das automatisch ermittelt für das Währungspaar, das wir gerade auf unserem Chart haben. Danach kommt ein Wert für den Stop Loss. In unserem Fall haben wir hier null gewählt. Wir könnten für den Stop Loss diese Notation hier verwenden und den zum Beispiel 400 Punkte unter den aktuellen Ask Preis setzen. Was wir aber setzen, ist auf jeden Fall ein Take Profit. 200 Punkte über dem Ask Preis möchten wir die Position gerne mit Profit schließen. Als nächstes geben wir an, wie lang unsere Order gültig sein soll. Wir nutzen hier ORDER_TIME_GTC. Das steht für Good to Cancel und bedeutet, wir haben kein Ablaufdatum. Darum ist auch unser nächster Parameter eine null. Hier könnten wir eine Ablaufzeit definieren. Und der letzte Parameter wäre ein Kommentar.
    7 min
  • MQL5 TUTORIAL GRUNDLAGEN – 13 SIMPLE VERKAUFSORDER
    In diesem Video geht es um das Erstellen einer Verkaufsorder, sobald wir eine Kerze haben, die nach unten geht. Also eine von diesen roten bärischen Kerzen auf dem Chart auftaucht. Und wir wollen uns einmal anschauen, wie man das in MQL5 programmieren kann. 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, Neu, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier einmal den Namen SimpleVerkaufsOrder, klicke auf Weiter, Weiter und Fertigstellen. Jetzt können wir alles entfernen, was sich oberhalb dieser OnTick Funktion befindet. Auch die zwei Kommentarzeilen werden gelöscht. Wir starten damit, dass wir eine Instanz von CTrade erstellen. Das ist eine Bibliothek, die mit MQL5 mitgeliefert wird und die in der Lage ist, Handelsfunktionen zu vereinfachen. Unsere Instanz bekommt den Namen trade. Und wir werden sie später nutzen, um eine Verkaufsorder zu erstellen. Damit wir etwas verkaufen können, müssen wir zunächst den Bid Preis berechnen. Das macht die Funktion SymbolInfoDouble für das aktuelle Währungspaar. Und wir nutzen die Konstante SYMBOL_BID, um den Bid Preis zu ermitteln. Wenn wir etwas verkaufen wollen, dann müssen wir immer den Bid Preis bezahlen. Jetzt erstellen wir uns ein Array für die Preisdaten. Dazu nutzen wir die Funktion MqlRates. Denn die enthält die Information über Preise, Volumen und Spread. Unser Array soll PriceInfo heißen. Und wir sortieren es von der aktuellen Kerze an abwärts, indem wir die Funktion ArraySetAsSeries nutzen. Danach füllen wir unser Array mittels CopyRates mit Preisdaten für das aktuelle Währungspaar auf dem Chart und die auf dem Chart genutzte Zeiteinheit. Wir starten von Kerze null und kopieren uns Preisdaten für drei Kerzen. Tatsächlich brauchen wir nur Daten für eine Kerze. Denn, wir wollten ja dann kaufen, wenn die Kerze bärisch ist. Also immer, wenn wir eine rote Kerze haben und der Schlusskurs unter dem Eröffnungskurs liegt. In MQL5 macht man das, indem man schaut, ob der Schlusskurs für Kerze eins in unserem PriceInfo Array kleiner ist, als der Eröffnungskurs für Kerze eins im gleichen Price Array. Zusätzlich wollen wir noch prüfen, ob wir schon offene Positionen haben. Und nur, wenn die Funktion PositionsTotal uns eine null zurückliefert, heißt das, wir haben keine geöffnete Position und in dem Fall möchten wir verkaufen. Und das geht so: Wir nutzen trade.Sell. Im ersten Parameter geben wir an, wieviel wir verkaufen möchten. Durch Komma getrennt kommt dann der zweite Parameter. Der gibt an, welches Währungspaar wir nutzen möchten. Da wir hier mit der Konstante null arbeiten, wird das aktuelle Währungspaar auf dem Chart automatisch ausgewählt. Der Bid Preis, den wir hier oben ermittelt haben, ist der Preis, zu dem wir verkaufen. Und über den Bid Preis möchten wir mit 300 Punkten Abstand einen Stop Loss setzen. Geht der Preis aber vom Bid Preis aus, 150 Punkte nach unten, dann möchten wir gerne an dieser Stelle unseren Take Profit realisieren. Der letzte Parameter kann genutzt werden, um eine Textkette als Kommentar zu übergeben. Das mag nützlich sein, wenn man auf einem Chart mit mehreren Expert Advisors arbeitet. Ich nutze das in der Regel nicht. Das war es auch schon. Wenn sie so weit sind, können Sie hier oben auf Kompilieren klicken oder die F7 Taste auf der Tastatur drücken. Wenn alles geklappt hat, sollte das hier ohne Fehler und Warnungen abgehen. Und dem Fall klicken Sie bitte hier oben auf dieses kleine Symbol oder drücken Sie die F4 Taste, um in den Metatrader zurückzukehren. Und im Metatrader klicken wir auf Ansicht, Strategietester oder drücken die Tastenkombination Strg+R. Im Strategietester wählen wir dann die neue Datei SimpleVerkaufsOrder.ex5 aus. Bitte markieren Sie hier die Option für die Visualisierung und starten Sie Ihren Test. Jetzt sehen wir die ersten bullischen Kerzen und hier ist die erste rote Kerze auf unserem Chart aufge...
    6 min
  • MQL5 TUTORIAL GRUNDLAGEN – 12 SIMPLE KAUF ORDER
    In diesem Video wollen wir uns einmal anschauen wie man mit MQL 5 eine Kauf-Order in den Markt stellen kann, sobald eine positive bullische Kerze auf dem Chart entsteht. Hier ist das gerade passiert. Und wir wollen uns einmal anschauen wie man das mit MQL 5 automatisieren kann. Um das zu tun klicken Sie im Metatrader bitte auf dieses kleine Symbol hier oben, oder drücken die F4-Taste. Das ruft dann hier den Meta-Editor auf und hier klicken wir auf Datei, neu, Expert Advisor aus Vorlage, weiter. Ich vergebe hier mal den Namen SimpleKaufOrder, klicke auf weiter, weiter und fertigstellen. Jetzt können wir alles oberhalb der OnTick-Funktion hier löschen und auch die zwei Kommentarzeilen entfernen. Wir starten zunächst damit, dass wir eine Instanz von CTrade erstellen. CTrade ist Bestandteil der Bibliothek für Handelsfunktionen. Trade.mqh, die wir hier mit dem include-Befehl importieren. Die kommt zusammen mit MQL5 und danach erstellen wir uns hier eine Instanz von CTrade. Die bekommt den Namen Trade. Und die werden wir später noch nutzen, um unsere Position tatsächlich zu eröffnen. Da wir kaufen wollen, müssen wir uns zunächst mal den Ask-Preis holen. Den berechnen wir mit der Funktion SymbolInfoDouble. Für das aktuelle Symbol auf dem Chart und wir nutzen Symbol unterstrich Ask um den Ask-Preis zu ermitteln. Symbol unterstrich Bid würde uns hier den Verkaufspreis liefern. Und ich nutze hier NormalizeDouble und unterstrich Digits, um die Anzahl der Nachkommastellen zu ermitteln, denn manche Währungspaare haben drei Nachkommastellen, während andere fünf Nachkommastellen haben. Danach erstellen wir uns hier einen Array für Preisdaten. Das machen wir mit der Funktion MqlRates. Die bewahrt alle Preisinformationen pro Kerze auf. Wir nennen unser Array hier einmal Preisinfo. Mit der Funktion ArraySetAsSeries sortieren wir dann unser PriceInfoArray absteigend von der aktuellen Kerze an. Und danach nutzen wir die Funktion CopyRates um unser PriceInfoArray für das aktuelle Währungspaar und die aktuelle Zeiteinheit auf den Chart mit der Preisdaten zu füllen. In meinem Fall nutze ich hier das aktuelle Währungspaar Euro, US-Doller und die aktuelle Zeiteinheit wäre das Minuten-Chart Unterstrich Symbol und unterstrich Period würden das für uns automatisch herausfinden. Und wir brauche von der aktuellen Kerze an null maximal für drei Kerzen Daten, die wir jetzt in unserem PriceInfoArray speichern. Mit diesen Daten können wir jetzt herausfinden ob eine Kerze bullisch ist. Das wäre der Fall, wenn der Schlusskurs für die Kerze eins in unserem PriceInfoArray größer ist als der Eröffnungspreis für Kerze eins in unserem PriceInfoArray. Das trifft hier auf alle grünen Kerzen zu. Wir möchten auch noch wissen, ob wir andere offenen Positionen haben. Das liefert uns die Funktion PositionsTotal zurück. Und wenn die sagt, dass die offenen Positionen gleich null sind, dann möchten wir tatsächlich kaufen. Das geht mit dieser einzigen Zeile hier. Hier kommt unsere Instanz Trade ins Spiel, die wir hier oben erstellt haben. Und mit Trade Punkt Buy sagen wir jetzt: Wir möchten gerne 10 Micro-Lot kaufen. Der zweite Parameter steht für das aktuelle Währungspaar. In diesem Fall liefert uns die konstante Null in Großbuchstaben das Währungspaar auf unserem Chart. Wir möchte zum aktuellen Ask-Preis kaufen. Dafür haben wir den hier oben berechnet. Unser Stop-Loss soll 300 Punkte unter dem aktuellen Ask-Preis liegen. Und wenn der Preis 150 Punkte über diesen Preis steigt, dann möchten wir gern unsere Position im Profit schließen. Der letzte Parameter hier ist ein Kommentar, den nutze ich so gut wie nie. Das wäre vielleicht sinnvoll wenn man mehrere Expert-Advisor Instanzen auf ein und demselben Chart nutzt. Wem das jetzt zu schnell war. Man kann das Ganze hier auch noch etwas aufteilen. In dem man für jeden Parameter eine neue Zeile nutzt. Machen wir das mal. Und fügen hier ein paar Kommentare hinzu, dann wird das etwas übersichtlicher und man kann die Parameter besser...
    7 min
  • MQL5 TUTORIAL GRUNDLAGEN – 11 SO BERECHNEN SIE EINEN SIMPLE MOVING AVERAGE
    In diesem Video möchten wir einmal den Wert für einen solchen gleitenden Durchschnitt berechnen. Es handelt sich um einen Moving Average für zwanzig Kerzen. Und wir lassen uns hier oben den Wert ausgeben. Und wie man das in MQL5 berechnet, das schauen wir uns jetzt einmal an. Um das tun, klicken wir im Metatrader hier oben auf diesen kleinen Button oder drücken die F4 Taste. Das ruft dann hier das Meta Editor Fenster auf. Und hier klicken wir auf Datei, Neu, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier mal den Namen SimplerMovingAverage. Klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion gelöscht werden. Auch die zwei Kommentarzeilen hier können weg. Wir starten damit, dass wir ein sogenanntes Array erstellen. Ein Array erkennt man an diesen zwei eckigen Klammern hier. Und es handelt sich vom Prinzip um eine Sammlung von gleichartigen Variablen. Und um unseren Moving Average zu berechnen, nutzen wir eine integrierte Funktion von MQL5 mit dem Namen iMA. Wenn man die einmal markiert und F1 drückt, dann sieht man hier, dass einige Parameter genutzt werden, um diese Funktion zu berechnen. Der erste Parameter _Symbol ermittelt automatisch, was für ein Währungspaar gerade auf dem Chart genutzt wird. In meinem Fall ist es das hier der australische Dollar gegen den Yen. Mit Parameter zwei wird gerade die aktuelle Zeiteinheit auf dem Chart ermittelt. Ich nutze hier das M1 Chart für Minutenkerzen. Diese zwanzig hier steht für die Anzahl der Kerzen, anhand der wir den gleitenden Durchschnitt berechnen wollen. Man sieht das auch, wenn man die Maus hier über den Moving Average hält. Da steht in Klammern dahinter eine zwanzig. Die null hier ist die Kerzen, von der aus wir starten. Kerze null ist immer die letzte Kerze, die gerade hier gebildet wird. Sobald eine Kerze vollständig ausgebildet ist, wird sie zur Kerze eins, Kerze zwei, Kerze drei und so weiter. Parameter Nummer fünf legt fest, dass wir einen SMA, also einen Simpel Moving Average berechnen möchten. Es gäbe das auch noch exponentielle geglättete oder linear ausgewogene Moving Averages. Und im letzten Parameter bestimmen wir, dass die Berechnung anhand der Schlusskurse erfolgen soll. Das ist hier in der Dokumentation falsch beschrieben. Hier steht sowohl für den Schlusskurs, als auch für den Eröffnungskurs, Eröffnungspreis. Wer genug Englisch versteht, sollte sich die Dokumentation besser in Englischer Sprache ansehen. Denn die Übersetzung ist teilweise sehr fehlerhaft. Grundsätzlich kann man sagen, dass für jede Kerze auf dem Chart immer vier Preise existieren. Wenn man die Maus darüber hält sieht man einen Eröffnungspreis Open, einen Höchstpreis High, einen Niedrigstpreis Low und einen Schlusspreis Close. Und wir wollen den Schlusskurs nutzen. Mit der Funktion CopyBuffer besorgen wir uns jetzt anhand der Moving Average Definition, die wir hier oben getroffen haben, für Buffer null, also für die einzige Signallinie die wir haben, von der aktuellen Kerzen null für drei Kerzen die Preisdaten für unseren Moving Average und speichern sie in unserem MovingAverageArray ab. Und danach holen wir und einfach den Wert für Kerze eins aus unserem Array zurück und weisen ihn der Variable myMovingAverage20 zu. Das ist dann der Wert für die letzte vollständige Kerze. Damit wir auch etwas davon sehen, nutzen wir den Comment Befehl um den Text: „MyMovingAverage20“ gefolgt von dem, von uns ermittelten Wert direkt auf dem Chart auszugeben. Wenn Sie soweit alles haben, dann können Sie hier oben auf Kompilieren klicken oder die F7 Taste drücken. Das hat hier ohne Fehler funktioniert. Ich bekomme eine Warnung. Es könnte zu einem Verlust der Genauigkeit kommen, weil ich hier eine float Variable genutzt habe. Im Gegensatz zum Datentyp Dubble ist float etwas ungenauer und gibt weniger Nachkommastellen aus. Aber für dieses einfache Beispiel soll uns das so reichen. Und wenn Sie hier unten keine Fehler haben, dann klicken Sie auf das kleine Symbol hier obe...
    7 min
  • MQL5 TUTORIAL GRUNDLAGEN – 10 SO PROGRAMMIERT MAN EINE EIGENE FUNKTION
    In diesem Video möchten wir uns einmal anschauen, wie man mit MQL5 eine eigene Funktion programmieren kann. In diesem Fall haben wir eine Funktion verdoppeln, die ihr den ZählerWert verdoppelt wenn immer sich hier der Preis ändert. Und wir wollen uns einmal anschauen wie man das mit MQL5 machen kann. Dazu klicken wir im Meta Trader auf dieses kleine Symbol hier oben oder drücken die F4 Taste. Das ruft dann hier den Meta Editor auf und hier klicken wir auf Datei, Neu, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier mal den Namen simpleFunktion, klicke auf Weiter, Weiter und Fertigstellen. Und jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. Wir starten damit, dass wir in der OnTick Funktion eine statische Variable erstellen. Dazu nutzen wir hier diesen Zusatz static. Wenn man den einmal markiert und die F1 Taste drückt, dann lernt man, dass es sich um einen sogenannten modifier handelt. Statische Variablen behalten ihre Gültigkeit innerhalb der Lebensdauer einer Funktion. Wir möchten jetzt mit dem Wert dieser Variable eine neue Funktion aufrufen die soll Wert verdoppeln heißen und die bekommt den Wert unserer Zählervariable übergeben und damit wir sehen was da passiert, möchten wir hinterher noch den Wert auf dem Chart ausgeben. Das machen wir mit dem Comment Befehl, der soll uns den Text ZählerWert und den ermittelten Wert für unseren Zähler direkt auf dem Chart anzeigen. Wenn wir das Ganze jetzt kompilieren, dann bekommen wir hier unten die Meldung, dass Wert verdoppeln noch nicht definiert ist. Also müssen wir diese Funktion jetzt erstellen. Das erste ist der Wert der Funktion, der zurückgegeben wird. In unserem Fall möchten wir ganze Zahlen verdoppeln, darum geben wir Integer-Werte zurück, weil wir keine Nachkommastellen benötigen. Danach legen wir den Namen der Funktion fest. in diesem Fall Wert verdoppeln. Man könnte hier auch einen anderen Namen wählen, aber Wert verdoppeln beschreibt ganz gut was die Funktion tun soll. Und hier in runden Klammern nehmen wir den Wert unseres Zählers an, den wir hier oben als Integer übergeben haben. Hier hieß der Parameter, den wir an die Funktion übergeben Zähler, hier unten heißt der Parameter den wir annehmen Zählerwert. Das muss nicht identisch sein. Unsere Funktion braucht jetzt noch zwei geschweifte Klammern. Wäre soweit jetzt auch deklariert, wenn wir aber jetzt auf kompilieren klicken, dann bekommen wir hier die Meldung, dass nicht alle Kontrollpfade einen Wert zurückgeben und das liegt daran, dass wir in der Funktion noch nichts gemacht haben. Also ändern wir das jetzt. Wir multiplizieren einfach den übergebenen Zählerwert mit dem Faktor 2 zum Verdoppeln. Das bedeutet Zähler Wert mal 2 wird der Variable doppelter Wert zugewiesen und danach nutzen wir return, um unseren doppelten Wert als Ergebnis an die Hauptfunktion zurückzugeben. Wenn man return markiert und F1 drückt, dann sieht man dass es sich um ein Operator handelt, der stoppt die laufende Funktion und gibt die Steuerung an das aufrufende Programm zurück. In diesem Fall kommen wir hier wieder an und das Ergebnis aus unserer Funktion wird der variable Zähler zugewiesen und das Ganze sollte sich hier anhand der Comment Funktion auf dem Chart nachvollziehen lassen. Also kompilieren wir noch mal. Diesmal gibt es keine Fehler und keine Warnungen und wenn das bei Ihnen auch so ist, dann klicken sie bitte hier oben auf dieses Symbol oder drücken die F4 Taste, um in den Meta Trader zurückzukehren. Und im MetaTrader klicken wir auf Ansicht, Strategie Tester oder drücken die Tastenkombination STRG+R. Hier wählen Sie bitte die neue Datei simpleFunktion.ex5 aus. Markieren Sie bitte auch die Option für die Visualisierung und starten Sie einen Test. Und hier sehen wir unsere Ausgabe. Unser Zählerwert hat den Wert 8 16 32 bei jedem Tick, also jeder eingehenden Preisveränderung wird unser Wert hier addiert. Man könnte natürlich jetzt auch noch deutlich kompl...
    6 min
  • MQL5 TUTORIAL GRUNDLAGEN – 9 SO FUNKTIONIERT DER FOR LOOP
    In diesem Video wollen wir uns einmal den For Loop anschauen. Hier unten zählt gerade eine Schleife hoch, bis ein Wert von 10.000 erreicht ist. Ein For Loop wird oft genutzt, um bestimmte Werte in einer Schleife rauf oder runter zu zählen. Und wir wollen uns einmal anschauen, wie man das mit MQL5 machen kann. Um das zu tun klicken Sie bitte im Metatrader auf diesen kleinen Button hier oder drücken die F4 Taste. Das ruft dann hier den Metaeditor auf. Und hier wählen wir Datei, Neu, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier einmal den Namen SimplerForLoop. 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 damit, dass wir einen Zähler erstellen. Der soll zunächst den Wert eins haben. Es handelt sich um eine Integer Variable, da wir nur ganzzahlige Werte benötigen. Danach erstellen wir uns noch einen Endwert. In unserem Fall soll der Endwert 10.000 sein. Und in der OnTick Funktion nutzen wir die For Schleife, um von unserem Startwert bis zu unserem Endwert hoch zu zählen. Wenn man diesen Befehl einmal markiert und die F1 Taste drückt, dann lernen wir, dass der Loop-Operator for aus drei Ausdrücken besteht. Wenn man das vorher noch nie gesehen hat, kann das etwas verwirrend wirken. Aber es ist ganz einfach. Dieser erste Ausdruck hier ist ein Startwert. Im zweiten Teil wird überprüft, ob eine bestimmte Bedingung erfüllt ist. In unserem Fall möchten wir prüfen, ob der Zähler noch kleiner ist als der Endwert. Und im dritten Teil wird unser Zähler hochgezählt. Dieser Ausdruck Zähler plus, plus bedeutet soviel wie: Addiere zu dem aktuellen Zähler den Wert eins und speichere das Ganze dann in der Zählervariable. Und damit wir von unserem For Loop auch etwas sehen, fügen wir hier in zwei geschweiften Klammern die Anweisung Print hinzu. Die wird uns im Journal einen Wert ausgeben. Zunächst sehen wir den Text: Der Zähler ist gleich. Und danach den ermittelten Wert von der aktuellen Zählervariable. Das war es auch schon so weit. Wenn Sie das alles haben, können Sie auf Kompilieren klicken oder die F7 Taste drücken. Wir bekommen hier zwar eine Warnung, aber für unser einfaches Beispiel soll das so reichen. Und wenn Sie hier keine Fehler haben, dann klicken Sie doch hier oben oder drücken die F4 Taste, um in den Metatrader zurückzukehren. Und im Metatrader klicken wir auf Ansicht, Strategietester oder wir drücken die Tastenkombination Strg+R. Hier wählen wir jetzt die neu erstellte Datei SimplerForLoop.ex5 aus. Markieren hier die Visualisierungsoption und starten unseren Test. Und hier sehen wir auch schon, dass unser Zähler hochgezählt wird. Der aktuelle Wert wird jeweils um eins erhöht. Und bei 9.999 hört das Ganze hier auf. Soweit, so gut. Man kann aber mit dem For Loop nicht nur rauf, sondern auch runterzählen. Wir vergeben hier mal für den Zähler den Wert 10.000. Und der Endwert soll eins sein. Und von unserem Zählerwert 10.000 möchten wir gerne solange herunterzählen, wie der Zähler größer ist, als unser Endwert. Und wir ziehen jedes Mal den Wert eins ab. Kompilieren wir das noch mal, wechseln wieder in den Metatrader und starten einen neuen Test. Dann sehen wir, dieses Mal wird heruntergezählt. Von 9.999 solange, bis unser Endwert erreicht ist. In unserem Fall war das eins. Die Schleife hört hier bei zwei auf Ausgaben zu tätigen. Um das zu ändern könnten wir auch sagen: Zähler größer oder gleich Endwert. Kompilieren wir das nochmal und lassen das erneut durchlaufen. Dann zählt unsere Schleife dieses Mal auch bis eins herunter. Es gibt noch eine Besonderheit. Es ist nämlich auch möglich, andere Werte als eins hier anzugeben, zum Beispiel zehn. Kompilieren wir zum letzten Mal. Starten einen neuen Test. Dann wird unsere Schleife hier deutlich schneller heruntergezählt. Denn wir haben einen Abstand von jeweils zehn dazwischen. Und Sie haben in diesem kurzen Video gelernt,
    6 min

About MQL5 Tutorial - Automatisch traden mit Metatrader5

From the publisher's feed

Metatrader5 MQL5 Expert Advisor Tutorial