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 – 70 SIMPLER BWMFI OSZILLATOR
    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.
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 69 SIMPLE PREIS KORRELATION
    In diesem Video möchten wir einmal einen Expert Advisor erstellen der in der Lage ist, eine Korrelation zwischen ähnlichen Währungspaaren über einen Simple Moving Average auszurechnen. Um das zu tun klicken Sie bitte hier oben auf dieses kleine Symbol oder drücken die F4 Taste im Metatrader. Dann öffnet sich hier der Metaeditor. Und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier mal den Namen SimpleCurrencyKorrelation, 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 damit, dass wir den Ask Preis berechnen. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir verwenden SYMBOL_ASK, in Großbuchstaben. Und mit NormalizeDouble und _Digits stellen wir sicher, dass wir die richtige Anzahl von Nachkommastellen auf dem Chart berechnen. Das Ganze wiederholen wir nochmal für unser zweites Chart. Hier ist der Variablenname anders. Und wir haben die Bezeichnung für das zweite Währungspaar hier als ersten Parameter in Großbuchstaben und in Anführungszeichen hartcodiert. Bitte stellen Sie sicher, dass das mit der Schreibweise von Ihrem Konto übereinstimmt. Je nach Kontentyp kann das abweichen. Beispielsweise würde das auf meinem Cent Account bei Roboforex mit einem Suffix Punkt M auftauchen. Das müsste ich dann hier ebenfalls einfügen, sonst würde das nicht funktionieren. Bitte beachten Sie, dass es sich hier um ein Konzept Beispiel handelt. Normalerweise würde man keine hartcodierten Werte verwende. Aber für dieses einfache Video soll uns das so reichen. Machen wir mit dem gleitenden Durchschnitt weiter. Dafür erstellen wir uns zunächst hier ein Array. Und danach nutzen wir die in MQL5 integrierte Funktion iMA, um für das aktuelle Währungspaar auf dem Chart einen gleitenden Durchschnitt für das Minuten Chart zu berechnen. Und zwar aufgrund von zwanzig Kerzen, ohne eine Verschiebung. Wir möchten gerne hier den Modus für den SMA, also für den Simple Moving Average nutzen. Und das Ergebnis soll anhand der Schlusskurse berechnet werden. Wenn man hier die Zeiteinheit für das Minuten Chart einmal markiert und die F1 Taste drückt, dann sehen wir hier, dass es für jede Zeiteinheit einen entsprechenden Wert gibt. PERIOD_M30 steht beispielsweise für dreißig Minuten. Wenn Sie das hier nicht hartcodieren wollen, dann können Sie auch _PERIOD nutzen. Das steht dann für die Erkennung der aktuellen Zeiteinheit auf dem Chart. Danach nutzen wir CopyBuffer, um unser Moving Average Array anhand der Definition, die wir hier oben getroffen haben, für Buffer null, das ist hier diese Signallinie, von der aktuellen Kerze null für drei Kerzen mit Werten zu füllen. Und um den aktuellen Wert zu berechnen, greifen wir einfach auf Kerze null in unserem Moving Average Array zu und weisen das Endergebnis hier unserer Variable zu. Mit diesen paar Zeilen haben wir jetzt den Wert für unser aktuelles Chart. Das brauchen wir jetzt nochmal für das Vergleichschart. Also wiederholen wir den ganzen Vorgang mit ein paar Änderungen. Das bedeutet, wir nutzen andere Namen für die Variablen. Und statt _Symbol nutzen wir hier auch wieder hartcodiert die Bezeichnung für das zweite Währungspaar, füllen hier unten unser Array mit den Werten für drei Kerzen und ermitteln den aktuellen Wert für das zweite Währungspaar, indem wir auch hier wieder auf den Wert für die Kerze null in unserem Array zugreifen. Zum Schluss erstellen wir uns noch eine Chart Ausgabe. Die wird uns die beiden Ask Preise und die jeweiligen Werte für die gleitenden Durchschnitte direkt auf dem Chart ausgeben. Das war es soweit. Wenn Ihnen das hier zu schnell ging, oder wenn Sie nicht wissen, was diese Code Zeilen hier bewirken sollen, dann möchten Sie sich vielleicht zunächst die anderen Videos aus diesem Grundlagenkurs noch einmal anschauen. Oder eventuell ist auch unser Premiumkurs interessant für Sie.
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 68 SIMPLER MOMENTUM MONITOR
    In diesem Video wollen wir uns einmal anschauen, wie man den durchschnittlichen Wert für einen Indikator in einem Array berechnen kann. Wir machen das anhand eines sogenannten Momentum Indikators. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 berechnen 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 Metaeditor auf. Und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier mal den Namen SimplerMomentumMonitor, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. Wir starten hier mir einer include Anweisung. Die kennen Sie vielleicht schon. Aber diesmal machen wir das, um die Datei Math.mqh zu importieren. Die ist nicht im Standardumfang vom MQL5 enthalten. Man muss sie also separat einbinden. Und sie stellt einige Funktionen bereit die ganz nützlich sind. Unter anderem eine Funktion, um den durchschnittlichen Wert von einem Array zu ermitteln. Für den aktuellen Zustand erstellen wir uns zunächst eine leere Variable vom Typ string. Außerdem benötigen wir ein Array für die Preisdaten. Das wird dann mit der Funktion ArraySetAsSeries, von der aktuellen Kerze an abwärts sortiert. Danach nutzen wir die in MQL5 enthaltene Funktion iMomentum für das aktuelle Währungspaar und die auf dem Chart ausgewählte Zeiteinheit, um für 14 Kerzen anhand der Schlusspreise den Wert für unser Momentum zu berechnen. Danach nutzen wir CopyBuffer, um für die eben hier oben getroffene Definition unser Array mit Daten zu füllen. Und zwar für die einzige Signallinie, die unser Indikator hier hat. Wir starten von Kerze null und möchten gerne die Werte für 14 Kerze in unserem Array speichern. Danach ermitteln wir den aktuellen Wert für das Momentum, indem wir auf die Preisdaten von Kerze null in unserem Array zugreifen. Das gibt uns dann immer hier den aktuellen Wert. Was man jetzt wissen muss ist, dass bei Momentum Indikator hier keine festen Ober- und Untergrenzen existieren. Wenn man das hier mal beschleunigt laufen lässt, dann sieht man, dass sie die Zahlen hier von Zeit zu Zeit verändern. Wie also berechnen wir jetzt den Durchschnittswert? Normalerweise müsste man jetzt hingehen und müsste alle 14 Kerzen in dem Array durchgehen, alle Preisdaten addieren und dann durch die Anzahl der Elemente im Array teilen. Oder aber, man importiert sich die Datei für die mathematischen Zusatzfunktionen und nutzt eine Funktion mit dem Namen MathMean. Die macht nämlich genau das gleiche, aber in einer einzigen Anweisung. Wenn Sie diese Funktion aber markieren und die F1 Taste drücken, dann werden Sie zunächst kein Ergebnis finden. Denn die Referenz ist nicht in der Lage dazu, den passenden Eintrag zu finden. Auch hier die farbliche Darstellung für die bekannten Funktionen wird für MathMean überhaupt nicht ausgeführt. Man muss also wissen, dass es diese Funktion überhaupt gibt. Und wir werden gleich noch darauf kommen, wie man sie finden kann. Jedenfalls haben wir sie jetzt genutzt, um unseren durchschnittlichen Wert zu ermitteln. Und wenn der aktuelle Wert für unser Momentum größer ist als der durchschnittliche Wert, dann weisen wir hier unserer Zustandsvariable den Wert: Momentum ist über dem Durchschnitt zu. Andernfalls, wenn der aktuelle Wert kleiner ist als der durchschnittliche Wert, dann würde das bedeuten, dass unser Momentum unterdurchschnittlich ist und dann weisen wir den Wert: Momentum ist unter Durchschnitt, unserer Signalvariable zu. Und damit wir das Ganze auch überprüfen können, nutzen wir hier unten noch die Comment Funktion, um den aktuellen Momentum Wert, den durchschnittlichen Momentum Wert und den aktuellen Momentum Zustand auf dem Chart auszugeben. Wie findet man jetzt also diese Funktion in der Referenz? Nun, wenn Sie die markieren und die F1 Taste drücken,
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 67 SIMPLE VERTIKALE LINIE
    In diesem Video wollen wir uns einmal anschauen, wie man eine vertikale Linie zeichnen kann, wenn man eine Position eröffnet. In diesem Fall eröffnen wir Sell Positionen bei der höchsten von 100 Kerzen auf dem Chart. Also lassen Sie uns einmal anschauen, wie man so etwas 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, Neue Datei, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier mal den Namen SimpleVertikaleLinie, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion gelöscht werden. Und auch die zwei Kommentarzeilen hier werden entfernt. Wir starten damit, dass wir mitteln include hier oben die Datei Trade.mqh importieren. Die enthält eine Klasse mit dem Namen CTrade. Und davon erstellen wir uns jetzt eine Instanz mit dem Namen trade, die vereinfachte Handelsfunktionen bereitstellen wird. In der OnTick Funktion ermitteln wir zunächst den Bid Preis. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen SYMBOL_BID, bitte alles in Großbuchstaben und mit NormalizeDouble und _Digits sorgen wir dafür, dass die richtige Nummer von Nachkommastellen für das jeweilige Währungspaar automatisch berechnet wird. Nun erstellen wir ein Array. Und das übernimmt die Funktion MqlRates. Da wir in diesem Array Preisdaten speichern möchten. Da nutzen wir ArraySetAsSeries für unser neu erstelltes Array, um es von der aktuellen Kerze an abwärts zu sortieren. Und mit CopyRates füllen wir unser neu erstelltes Array für das aktuelle Währungspaar und die auf dem Chart ausgewählte Zeiteinheit, von der aktuellen Kerze null, mit Preisdaten für 100 Kerzen und speichern das Ergebnis in unserem PriceInformation Array. Damit wir bei der höchsten der letzten 100 Kerzen verkaufen können, erstellen wir uns zunächst eine integer Variable mit dem Namen HighestCandle. Außerdem brauche ich noch ein Array mit dem Namen High. Das wird die Werte für die Höchstpreise der letzten 100 Kerzen aufnehmen. Auch hier nutzen wir wieder ArraySetAsSeries, um unser Array von der aktuellen Kerze an abwärts zu sortieren. Und jetzt können wir eine Funktion nutzen mit dem Namen CopyHigh. Die wird uns die Höchstpreise für das aktuelle Währungspaar und die aktuell auf dem Chart ausgewählte Zeiteinheit von der aktuellen Kerze null, für 100 Kerzen in unser High Array kopieren. Um die höchste Kerze zu ermitteln nutzen wir eine Funktion mit dem Namen ArrayMaximum. Die wird innerhalb unseres Arrays High von der aktuellen Kerze an für 100 Kerzen nach dem Höchstpreis suchen und liefert uns dann die Nummer der höchsten Kerze zurück. Und wenn die höchste Kerze, die Kerze null, also die aktuelle Kerze ist und uns die Funktion PositonsTotal einen Wert von null zurückliefert, dann bedeutet das, dass wir ein Signal haben und keine Position offen ist. Und in dem Fall nutzen wir trade.Sell um zehn Mikrolot zu verkaufen. Danach möchten wir eine benutzerdefinierte Funktion aufrufen, um eine vertikale Linie zu zeichnen. Die existiert noch nicht, also müssen wir die gleich noch programmieren. Zuvor nutzen wir noch den Comment Befehl, um uns auf dem Chart den Text: Highest Candle… und die höchste ermittelte Kerze ausgeben zu lassen. Das ist dann der Wert, den Sie hier oben links in der Ecke sehen. Unsere benutzerdefinierte Funktion hat den Namen DrawVLine. Wir nutzen hier void, denn wir haben keine Rückgabewerte. Zunächst nutzen wir ObjectDelete für das aktuelle Währungspaar auf dem Chart, um vielleicht vorher gezeichnete Linien zu entfernen. Denn wir möchten immer nur eine Linie hier auf dem Chart sehen für die jeweils letzte eröffnete Position. Um die Linie zu erstellen nutzen wir ObjectCreate für das aktuelle Währungspaar auf dem Chart. Der Name von unserem Objekt wird Line, also Linie sein. Der Objekttyp ist OBJ_VLINE. Die Linie soll auf dem Hauptchart,
    9 min
  • MQL5 TUTORIAL GRUNDLAGEN – 66 SIMPLER SHIFTED EMA
    In diesem Video wollen wir einmal einen Expert Advisor erstellen, der in der Lage ist, anhand von, nach rechts in die Zukunft verschobenen exponentiellen gleitenden Durchschnitten, Kaufen- und Verkaufen-Signale zu generieren. Also schauen wir uns einmal an, wie man so etwas 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 Meta Editor auf und hier klicken wir auf Datei, neue Datei, Expert Advisor aus Vorlage, weiter. Ich vergebe hier einmal den Namen SimplerShiftedEMA, 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 einem include-Befehl. Der soll uns die Datei Trade.mqh importieren. Die stellt über die Klasse CTrade vereinfachte Handelsfunktionen bereit. Darum erstellen wir uns hier eine Instanz davon, mit dem Namen Trade. Außerdem möchte ich gerne drei benutzerdefinierte Variablen haben. Die erste Variable soll für die Anzahl der Kerzen, zur Berechnung von unserem gleitenden Durchschnitt genutzt werden. Und die Variablen 2 und 3 sind die jeweiligen Verschiebungswerte. Der Verschiebungswert 1 wird 20 Kerzen und der Verschiebungswert 2 100 Kerzen betragen. Das sorgt dann dafür, dass die gleitenden Durchschnitte hier rechts vom aktuellen Preis gezeichnet werden. In der OnTick-Funktion berechnen wir zunächst 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, bitte alles in Großbuchstaben. Und mit NormalizeDouble und _Digits sorgen wir dafür, dass je nach Währungspaar entweder drei oder fünf Nachkommastellen berechnet werden. Anschließend erstellen wir uns hier eine Variable für das Signal. Die ist vom Typ string, damit sie Text aufnehmen kann, aber wir weisen hier noch keinen Wert zu. Denn der wird jetzt ermittelt. Da wir zwei gleitende Durchschnitte nutzen wollen, brauchen wir auch zwei Arrays. Beide sind vom Typ double und sollen unsere Preisdaten für die gleitenden Durchschnitte aufnehmen. Zunächst einmal sortieren wir die beiden Arrays von der aktuellen Kerze an abwärts. Das übernimmt die Funktion ArraySetAsSerious. Für unseren ersten gleitenden Durchschnitt nutzen wir die in MQL eingebaute Funktion iMA für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit. Wir nutzen hier die Anzahl der vom Benutzer definierten Kerzen. In diesem Fall ist der Vorgabewert 20. Der Verschiebungswert für den ersten gleitenden Durchschnitt ist ebenfalls 20. MODE_EMA steht für exponentiell moving average. Und wir möchten gerne, dass die Werte anhand der Schlusskurse berechnet werden. Darum nutzen wir hier als letzten Parameter PRICE_CLOSE. Das Ganze wiederholen wir hier nochmal für den zweiten Moving Average. Vom Prinzip ist alles identisch, bis auf den Verschiebungswert. Danach können wir mit CopyBuffer anhand der Definition, die wir hier oben getroffen haben, für Buffer 0, also die eine Signallinie die wir haben, von der aktuellen Kerze 0, für 3 Kerzen ermitteln und in unseren MovingAverageArray speichern. Auch das wiederholen wir für unseren zweiten gleitenden Durchschnitt. Auch hier ist, bis auf die Namen, für das Array und die Definition alles identisch. Kommen wir zum eigentlichen Einstieg: Wenn der Ask-Price größer ist, als der Wert für Kerze 0 in unserem ersten MovingAverageArray und wenn der Ask-Price ebenfalls größer ist, als der Wert für Kerze 0 in unserem zweiten MovingAverageArray, dann ist das für uns ein Kauf-Signal. Und dann weisen wir den Wert buy unserer Signal-Variable zu. Im umgekehrten Fall, wenn der Bid-Price kleiner ist, als der Wert für Kerze 0 in unserem ersten MovingAverageArray, und wenn der Bid-Price ebenfalls kleiner ist, als der Wert für Kerze 0 in unserem zweiten MovingAverageArray,
    9 min
  • MQL5 TUTORIAL GRUNDLAGEN – 65 SIMPLE BACKGROUND FARBE
    In diesem Video möchten wir mal einen Expert Advisor erstellen der in der Lage ist, anhand von Kauf- und Verkaufssignalen den Bildschirmhintergrund für das Chart farblich zu verändern. Also lassen Sie uns einmal herausfinden, wie man so etwas 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, Neue Datei, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier einmal den Namen SimpleBackgroundFarbe, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. Im ersten Schritt berechnen wir hier den Ask Preis. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen SYMBOL_ASK, alles in Großbuchstaben und mit NormalizeDouble und _Digits stellen wir sicher, dass je nach Währungspaar, entweder drei oder fünf Nachkommastellen automatisch berechnet werden. Das Ganze wiederholen wir dann nochmal für den Bid Preis. Der Variablenname ist anders und wir nutzen in diesem Fall SIMBOL_BID. Ansonsten ist alles identisch. Für unser Signal erstellen wir uns eine gleichnamige Variable vom Typ string. Die bekommt hier aber noch keinen Wert zugewiesen, denn den möchten wir gleich noch ermitteln. Unser Kaufen und Verkaufen Signale möchten wir anhand eines gleitenden Durchschnitts ermitteln. Deswegen erstellen wir uns hier ein Moving Average Array. Und den gleitenden Durchschnitt stellt die integrierte Funktion iMA bereit. Die ist Bestandteil von MQL5 und benötigt einige Parameter. Der erste Parameter steht für das aktuelle Währungspaar. Der zweite Parameter für die auf dem Chart ausgewählte Zeiteinheit. Wir möchten unser Ergebnis anhand der letzten zwanzig Kerzen berechnen. Und das Ganze ohne Verschiebung. Deswegen hier die null. MODE_SMA wird genutzt, weil SMA für Simple Moving Average steht. Man könnte auch exponentielle Moving Averages berechnen. Aber für unser einfaches Beispiel reicht das so. Und das Ergebnis soll ermittelt werden anhand der Schlusskurse. Darum nutzen wir hier PRICE_CLOSE. Wir nutzen ArraySetAsSeries, um unser Moving Average Array, das wir hier oben erstellt haben, von der aktuellen Kerze an abwärts zu sortieren. Und mit CopyBuffer füllen wir unser Moving Average Array anhand der Definition, die wir hier oben getroffen haben für Buffer null, das ist diese rote Signallinie hier. Wir starten bei der aktuellen Kerze null und kopieren uns die Preisdaten für drei Kerzen, die wir in unserem Moving Average Array speichern. Um jetzt den aktuellen Wert für unseren gleitenden Durchschnitt zu berechnen, greifen wir einfach auf den Inhalt von Kerze null in unserem Moving Average Array zu. Und wenn dieser Wert jetzt kleiner ist als der Bid Preis, dann interpretieren wir das als Kaufsignal. Darum weisen wir den Wert Kaufen unserer Signal Variable zu. Zusätzlich nutzen wir hier eine Funktion mit dem Namen setChartColorBackground und setzen die Hintergrundfarbe für das Chart auf grün. Ist der Wert für unseren gleitenden Durchschnitt aber größer als der Ask Preis, dann setzen wir unser Signal hier auf Verkaufen. Und dann rufen wir ebenfalls die Funktion für die Änderung der Hintergrundfarbe auf. Aber dieses Mal ändern wir die Farbe auf Rot. Es gibt auch noch einen dritten Fall. Und zwar, wenn der Moving Average unter dem Ask Preis liegt und gleichzeitig aber größer ist, als der Bid Preis. In dem Fall haben wir kein Signal. Darum weisen wir hier auch keinen Text zu. Und wenn uns das Signal fehlt, rufen wir die gleiche Funktion auf und setzen den Bildschirmhintergrund hier auf Schwarz. Hier ergänzen wir noch eine Comment Ausgabe, die uns auf dem Chart den Text: Das aktuelle Signal ist… gefolgt von dem ermittelten Signal ausgeben soll. Und um diese Funktion hier aufzurufen, müssen wir die jetzt noch programmieren.
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 64 SIMPLER MULTI RSI
    In diesem Video wollen wir uns einmal anschauen, wie man mit MQL5 eine Expert Advisor erstellen kann, der in der Lage ist, für den RSI unterschiedliche Zeitrahmen zu berechnen. Wir haben hier den Wert für die aktuelle Zeiteinheit für dreißig und für sechzig Minuten. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 programmieren kann. Um das zu tun, klicken Sie bitte hier oben auf dieses kleine Symbol oder drücken Sie die F4 Taste. Das ruft dann hier den Meta Editor auf. Und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage. Weiter. Ich vergebe hier einmal den Namen SimplerMultiRSI, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen können weg. Wir starten hier oben mit dem include Befehl. Damit importieren wir uns die Datei Trade.mqh. Die ist Bestandteil von MQL5 und stellt uns vereinfachte Handelsfunktionen bereit. Dazu erstellen wir uns eine Instanz von der Klasse CTrade. Die bekommt den Namen trade und wir werden sie später benutzen, um damit Positionen zu eröffnen. Innerhalb der OnTick Funktion berechnen wir uns den Ask und den Bid Preis. Das macht die Funktion SymbolInfoDouble für das aktuelle Symbol, also das Währungspaar auf dem Chart. Wir nutzen SYMBOL_ASK für den Ask Preis beziehungsweise SYMBOL_BID für den Bid Preis. Und mit NormalizeDouble und _Digits stellen wir sicher, dass die Anzahl der Stellen hinter dem Punkt für das jeweilige Währungspaar korrekt angezeigt werden. Je nach Währung können das drei oder fünf Nachkommastellen sein. Danach erstellen wir eine string Variable mit dem Namen Signal. Die bekommt hier noch keinen Wert, denn, den möchten wir jetzt ermitteln. Dazu erstellen wir zunächst einmal drei Arrays für das aktuelle, das dreißig Minuten Chart und das sechzig Minuten Chart. Fangen wir mit dem aktuellen Zeitfenster an. Die Funktion iRSI ist in MQL5 enthalten. Und wir übergeben hier als Parameter das aktuelle Währungspaar., die aktuell auf dem Chart ausgewählte Zeiteinheit. Wir möchten gerne den Wert für 14 Kerzen aufgrund der Schlusskurse berechnen lassen. Danach verwenden wir ArraySetAsSeries, um unser Array für die aktuellen Werte von der aktuellen Kerze an abwärts zu sortieren. Jetzt können wir es mit CopyBuffer füllen. Und zwar anhand der Definition, die wir hier oben getroffen haben, für Buffer null, von der aktuellen Kerze. Das ist die Kerze null. Wir kopieren uns die Werte für drei Kerzen und speichern sie in unserem Array. Und um den aktuellen Wert zu berechnen holen wir uns einfach für die aktuelle Kerze null den Wert aus unserem Array. Und mit NormalizeDouble und dieser zwei hier, schneiden wir das Ganze auf zwei Nachkommastellen ab. Denn das ist auch die Darstellung, die wir hier im Oszillator sehen. Damit hätten wir jetzt also den Wert für das aktuelle Chart. Und um den Wert für die dreißig Minuten zu berechnen, machen wir quasi dasselbe noch einmal. Die Variable heißt natürlich anders. Und wir nutzen hier die eingebaute iRSI Funktion und übergeben statt _Period diesen Wert, PERIOD_M30. Wenn man den markiert und die F1 Taste drückt, dann sieht man, dass für so ziemlich jede denkbare Chartperiode hier die entsprechenden Werte zur Verfügung stehen. PERIOD_M30 steht für dreißig Minuten. PERIOD_H1 steht für eine Stunde und so weiter. Wir hätten das gerne für dreißig Minuten. Auch hier sortieren wir unser Array, nutzen dann CopyBuffer, um anhand der hier oben getroffenen Definition unser Array mit Werten zu füllen. Und um den dreißig Minuten Wert zu ermitteln, greifen wir auch wieder auf die aktuelle Kerze null in unserem Array zu. Die Berechnung für sechzig Minuten ist jetzt keine Überraschung mehr. Vom Prinzip wiederholt sich alles. Nur, dass wir diesmal für sechzig Minuten den Wert PERIOD_H1 benutzen. Und auch hier greifen wir auf die aktuelle Kerze null in unserem Array zu, um den Wert zu ermitteln. Da wir ja alle Signale miteinander kombinieren möchten,
    11 min
  • MQL5 TUTORIAL GRUNDLAGEN – 63 SIMPLER CHECK FUER NEUE KERZEN
    In diesem Video wollen wir uns einmal anschauen, wie man mit einem Expert Advisor für den Metatrader5 herausfinden kann, ob eine neue Kerze auf dem Chart aufgetaucht ist. Schauen wir uns also einmal an, wie man das macht. Dazu 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 mal den Namen SimplerCheckForNewBars, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion gelöscht werden. Und auch die zwei Kommentarzeilen hier können weg. Wir starten damit, dass wir die aktuelle Anzahl der Kerzen auf dem Chart berechnen. Das übernimmt die eingebaute MQL5 Funktion Bars. Die benötigt hier zwei Parameter für das aktuelle Währungspaar auf dem Chart und die aktuell auf dem Chart eingestellte Zeiteinheit. Und die wird uns einen integer Wert, also einen ganzzahligen Wert für die Kerzenanzahl liefern. Danach erstellen wir eine string Variable. Die heißt NeueKerzeAufgetaucht. Wir weisen hier aber noch keinen Wert zu, denn den möchten wir ja gleich noch ermitteln. Und um das zu tun, rufen wir eine benutzerdefinierte Funktion mit dem Namen PruefeObNeueKerze auf und übergeben ihr die Kerzenanzahl, die wir hier oben berechnet haben. Diese Funktion hier existiert noch nicht, die müssen wir gleich programmieren. Aber damit wir auch was sehen, möchten wir gerne mit dem Comment Befehl hier noch eine Chartausgabe erstellen. Die wird uns anzeigen: Kerzen auf dem Chart… gefolgt von dieser Berechnung. Da wir die aber hier oben schon machen, können wir das hier auch austauschen. Und in einer neuen Zeile soll stehen, ob eine neue Kerze aufgetaucht ist. Und dazu erstellen wir jetzt die entsprechende Funktion. Unsere Funktion soll den Namen PruefeObNeueKerze haben. Die wird uns einen Text zurückgeben und übernimmt hier als Parameter die Kerzenanzahl, die wir bereits oben berechnet haben. Im ersten Schritt erstellen wir uns eine statische integer Variable für die letzte Anzahl der Kerzen. So eine statische Variable ist solange gültig, wie diese Funktion hier existiert. Und wir nutzen sie, um lokal innerhalb der Funktion die letzte Kerzenanzahl seit dem letzten Aufruf der Funktion vorzuhalten. Danach erstellen wir uns eine string Variable mit dem Namen NeueKerzeVorhanden. Der Standardwert ist, dass wir keine neue Kerze haben. Und danach prüfen wir, ob die aktuelle Kerzenanzahl größer ist als die Kerzenanzahl beim letzten Aufruf. Sollte das der Fall sein, dann geben wir unserem Rückgabewert hier einen positiven Wert: JA, EINE NEUE KERZE IST AUFGETAUCHT. Und für den nächsten Aufruf unserr Funktion weisen wir jetzt die aktuelle Kerzenanzahl dem Wert für die letzte Kerzenanzahl zu. Denn der wird ja beim nächsten Mal wieder benötigt. Zum Schluss setzten wir noch unsere Klammer und geben den ermittelten Wert zurück an die Hauptfunktion. Das machen wir mit dem return Befehl. Bitte vergessen Sie nicht hier die letzte schließende Klammer. Und soweit war es das jetzt auch. Wenn Sie nicht wissen, was diese ganzen Funktionen hier machen oder wenn Ihnen das zu schnell ging, dann möchten Sie sich vielleicht zunächst eines der anderen Videos aus der Grundlagenserie einmal anschauen. Oder vielleicht ist auch der Premiumkurs auf unserer Webseite interessant für Sie. Das hier war übrigens ein Vorschlag von einem Premiumkurs Mitglied. Und wenn Sie bereits Mitglied im Premiumkurs sind und eine Idee für so ein Video haben, dann schicken Sie mir doch einfach ein E-Mail. Für dem Moment klicken wir hier mal auf Kompilieren oder drücken die F7 Taste. Hier gibt es einen Fehler. Ich habe hier eine Klammer zu viel. Die habe ich beim Löschen vergessen. Wiederholen wir den Kompilieren Vorgang. Dann geht das hier ohne Fehler. Und wenn das bei Ihnen auch der Fall ist, dann können Sie jetzt hier oben klicken oder die F4 Taste drücken, um in den Metatrader zurückzukehren.
    7 min
  • MQL5 TUTORIAL GRUNDLAGEN – 62 SIMPLER MARGIN MONITOR
    In diesem Video wollen wir uns einmal einen Monitor bauen, der in der Lage ist, alle Informationen zum Thema Margin direkt auf dem Chart auszugeben. Also schauen wir uns einmal an, wie man so etwas 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, neue Datei, Expert Advisor aus Vorlage, weiter. Ich vergebe hier einmal den Namen SimplerMarginMonitor, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb der OnTick-Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen hier können wir entfernen. Um an die gewünschten Informationen zu kommen, nutzen wir AccountInfoDouble. Das ist eine Funktion, die uns kontospezifische Informationen zurückliefert. Beispielsweise in diesem Fall die AccountMargin. Um die zu ermitteln, nutzen wir AccountInfoDouble mit einem Parameter. In diesem Fall, großgeschrieben, ACCOUNT_MARGIN. Wenn man das hier einmal ausschneidet, dann sieht man, dass es hier eine proberty_id aus einer Enumeration, also aus einer Sammlung gleichartiger Eigenschaften gibt. So bald man hier anfängt zu tippen, bekommt man diese Auswahlliste gezeigt. Wiederholen wir das Ganze also, für die anderen Informationen, die uns interessieren. Und da gibt es einige. Zum Beispiel die freie AccountMargin. Soll man mit ACCOUNT_MARGIN_FREE ermitteln. Dann gibt es eine sogenannte InitialAccountMargin. Auch hier ist das Verfahren genau so wie oben, aber wenn man hierfür den Wert ermittelt, dann werden Sie vermutlich feststellen, dass Sie hier einen Nullwert zurückgeliefert bekommen. Ich habe dieses Video auch schon für MQL4 aufgenommen und da steht in der Referenz, dass diese Eigenschaft hier nicht unterstützt wird. Vielleicht ist sie aber auch kontenabhängig. In der Referenz wird es jedenfalls beschrieben als reservierte Mittel für dem Konto also die Garantie für alle ausstehenden Aufträge. Das ist eindeutig nicht die beste mögliche Übersetzung. Der nächste Wert wäre ein AccountMarginLevel-Wert. Dafür sehen wir hier auch tatsächlich eine aktuelle Berechnung. Und wenn Sie unten in der Toolbox mal nach ganz unten scrollen, dann sollte der Wert hier unten übereinstimmen mit dem was hier berechnet wird. Außerdem bietet MQL5 einen sogenannten MarginMaintenance-Wert an. Auch hier ist die Übersetzung sehr seltsam: Die reservierte Mittel auf dem Konto als ein Sicherheitsmindestbetrag für alle offenen Positionen. Auch hier ist in meinem Fall der Rückgabewert 0. Aber jetzt kommen wir zu den Werten, die wirklich interessant sind. Und zwar ist das der StopoutCall-Level. Den bekommt man über ACCOUNT_MARGIN_SO_CALL. Das ist die Schwelle, bei der man vom Broker aufgefordert würde, mehr Geld einzuzahlen. In meinem Fall liegt diese Schwelle bei 40 %. Und noch interessanter ist der finale Stopout-Level. Und das ist, wenn ihr Broker alle Ihre offenen Positionen schließt. In meinem Fall liegt der hier bei 10 %. Sollte meine Acquity unter 10 % sinken, dann würden unabhängig vom aktuellen Zustand alle meine Positionen vom Broker geschlossen. Das kann je nach Kontentyp stark variieren. Bei anderen Konten, die ich betreibe, ist dieser Lever zum Beispiel bei 40 % und der StopoutCall würde schon bei 60 % kommen. Außerdem möchte ich mir hier noch gerne den AccountProfit anzeigen lassen. Den erhalten wir ebenfalls über AccountInfoDouble. Wenn Sie AccountInfoDouble einmal markieren und F1 drücken, dann sehen Sie hier die Aufzählung aller möglichen Werte. Und da lassen sich schon eine ganze Menge Informationen ermitteln. Eine Sache ist mit dem Metatrader 5 neu dazugekommen und das ist der sogenannte Margin Modus. Den gab es in MQL4 so noch nicht. Und den können wir ermitteln mit AccountInfoInteger. Hier übergeben wir als Parameter ACCOUNT_MARGIN_MODE. Und das was uns da zurückgeliefert wird, ist eine ganze Zahl. Ich hätte das Ganze gerne in lesbarer Form.
    10 min
  • MQL5 TUTORIAL GRUNDLAGEN – 61 SIMPLE FUNKTIONS UEBERLADUNG
    In diesem Video wollen wir uns einmal anschauen, wie man eine Funktion überladen kann. Überladen bedeutet, dass eine Funktion mit dem gleichen Funktionsnamen in der Lage ist, eine unterschiedliche Anzahl und unterschiedliche Typen von Parametern zu verarbeiten. Also schauen wir uns einmal an, wie man so etwas in MQL5 programmieren kann. Um das zu tun, klicken Sie im Metatrader bitte 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 vergeben hier mal den Namen SimpleFunktionsÜberladung, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb dieser OnTick-Funktion gelöscht werden und auch die zwei Kommentarzeilen werden entfernt. Wir starten damit, dass wir uns in der OnTick-Funktion zunächst den Ask-Preis berechnen lassen. Das übernimmt die Funktion SymbolInfoDouble für das aktuell Währungspaar auf dem Chart. Und wir verwenden SYMBOL_ASK, alles in Großbuchstaben. Die Funktion NormalizeDouble in Verbindung mit _Digits sorgt dann dafür, dass das Ergebnis auch mit der richtigen Anzahl von Nachkommastellen angezeigt wird. Das Ganze wiederholen wir hier nochmal für den Bid-Preis. Ansonsten ist soweit alles gleich, bis auf diesen Parameter. SYMBOL_BID. Und da wir noch einen dritten Parameter brauchen, berechnen wir hier einfach mal die Differenz, in dem wir den Bid-Preis vom Ask-Preis abziehen. Ich möchte gerne eine Funktion aufrufen, die AddValues, also addiere Werte heißt. Und im ersten Fall übergeben wir hier zwei Parameter. Den Ask-Preis und den Bid-Preis. Als letzten Schritt in der OnTick-Funktion brauchen wir noch eine Ausgabe auf unserem Chart. Die Comment-Funktion wird uns den Text „das Resultat ist“ gefolgt von dem berechneten Wert ausgeben. Fangen wir mal an mit der ersten Funktion. Die ist hier in der Lage, jeweils einen double-Wert für den Ask- und für den Bid-Preis zu übernehmen. Ich möchte gerne im Journal den Eintrage sehen, dass das die Funktion ist, die nur zwei Parameter verarbeitet. Das übernimmt hier die Printausgabe. Wir addieren hier die beiden übergebenen Parameterwerte, weißen sie der Variable ReturnValue zu und zum Schluss nutzen wir den return-Befehl, um den ermittelten Wert wieder an die Hauptfunktion zurückzugeben. So weit so gut. Wir können das jetzt schon kompilieren und das geht ohne Fehler. Aber das ist noch keine Überladung. Wenn man sich aber mal hier oben diese Funktion anschaut und die Parameter ausschneidet, dann sieht man, dass man nach dem Setzen der ersten Klammer hier, diese Hilfe aufgezeigt bekommt. Das ist Möglichkeit eins von zwei. Und wenn ich darauf klicke, dann sehe ich, dass sich hier die Anzahl der Parameter verändert. Genau für so etwas ist eine Überladung gedacht. Und dazu erstellen wir uns hier einfach nochmal die gleiche Funktion, aber mit einem kleinen Unterschied. Denn jetzt soll unsere Funktion AddValues in der Lage sein, drei Parameter zu verarbeiten. Den Aks-Wert, den Bid-Wert und den Differenz-Wert. Falls sie sich wundern warum hier die Bezeichnung abweichend ist, von dem was wir hier berechnet haben: Die Namen die Sie für die übergebenen Parameter in der Funktion nutzen, sind frei wählbar. Auch hier möchten wir gerne mit dem Print-Befehl eine Ausgabe im Journal. Diesmal werden wir den Text sehen „diese Funktion verarbeitet drei Parameter“. Auch hier addieren wir einfach alle übergebenen Parameter zu einem Wert und nutzen zum Schluss den return-Befehl, um das Ergebnis an die Hauptfunktion zurückzuliefern. So weit so gut. Das hier ist nicht wirklich ein praktisches Beispiel, aber wenn Sie jetzt hier auf kompilieren klicken oder die F7-Taste drücken, dann werden Sie sehen, dass wir nach dem Setzen der ersten Klammer genau diese Anzeige bekommen. Wir haben eine Funktionsüberladung und können uns jetzt hier unterschiedliche Parameter für die Übergabe aussuchen. Falls Ihnen das hier zu schnell ging oder falls Sie nicht wissen,
    7 min

About MQL5 Tutorial - Automatisch traden mit Metatrader5

From the publisher's feed

Metatrader5 MQL5 Expert Advisor Tutorial