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 DEUTSCH – 97 SIMPLE REVERSE POSITION
    In diesem Video wollen wir uns einmal anschauen, wie man einen Expert Advisor erstellen kann, der in der Lage ist, für jede Position die Trade Richtung umzukehren. Also lassen Sie uns einmal schauen, wie man so etwas mit MQL5 programmieren kann. Um das zu tun, klicken Sie bitte im Metatrader 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 SimpleReversePosition, Klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden. Und wir entfernen auch direkt die zwei Kommentarzeilen. Wir starten mit einer include Anweisung. Damit importieren wir die Datei Trade.mqh. Die gehört mit zu MQL5 und stellt vereinfachte Funktionen für Positionseröffnungen und Positionsbehandlung bereit.   Dazu erstellen wir uns aus der Klasse CTrade hier eine Instanz mit dem Namen Trade. Wir brauchen auch ein paar Variablen. Die erste Variable ist vom Typ string, hat den Namen direction, für Richtung und bekommt von uns den initialen Wert buy zugewiesen. Die nächste Variable hat einen Zusatz, der heißt input. Das sorgt dafür, dass man die Werte dieser Variable ohne Neukompilierung auch während der Laufzeit als Benutzer verändern kann, indem man einfach die Eigenschaften im Expert Advisor einstellt.   Diese Variable ist vom Typ integer und hat den Namen TakeProfitPoints. Der initiale Wert ist hier fünfzig. Jetzt wiederholen wir das Ganze nochmal für die StopLoss Punkte. Auch hier nutzen wir den input Zusatz. Und der initiale Wert für den StopLoss wird hier dreißig Punkte sein. Innerhalb der OnTick Funktion möchten wir zunächst einmal den Ask Preis berechnen. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart.   Wir nutzen hier SYMBOL_ASK. Und mit NormalizeDouble und _Digits stellen wir sicher, dass die richtige Anzahl für die Nachkommastellen berechnet wird. Das ist abhängig von der genutzten Währung. Das Gleiche müssen wir hier nochmal für den Bid Preis machen. Im Großen und Ganzen ist die Zeile identisch, bis auf den Namen und den hier genutzten Parameter SYMBOL_BID. Und jetzt möchten wir gerne prüfen, ob wir keine geöffneten Positionen haben.   Das wäre der Fall, wenn die Funktion PositionsTotal einen Wert von null zurückliefert. Gleichzeitig möchten wir gerne wissen, ob die direction, also die Richtung, auf buy steht. Falls beides zutrifft, eröffnen wir eine buy Position. Das geht mit trade.Buy. Wir möchten gerne eine Position in der Höhe von zehn Mikrolot eröffnen für das aktuelle Währungspaar auf dem Chart zum Ask Preis. Dieser Ausdruck hier wird die gewünschte Anzahl von StopLoss Punkten für uns setzen. Der darauffolgende Parameter hier ist für den TakeProfit Wert. Auch hier werden die gewünschten Punkte eingesetzt. Und der letzte Parameter hier wäre für einen Kommentar. Der wird aber nicht benötigt, darum setzen wir den auf null. Nachdem wir die Position eröffnet haben möchten wir die Richtung umkehren, setzen also hier den Wert für die Variable direction auf sell. Für die sell Trades sieht das ähnlich aus.   Zunächst prüfen wir hier, ob wir geöffnete Positionen haben. Dann, ob die Richtung auf sell steht. Und wenn beides zutrifft, nutzen wir trade.Sell, um zehn Mikrolot zu verkaufen. In diesem Fall müssen wir den Bid Preis nutzen. Und natürlich sind bei einem sell Trade die StopLoss Punkte oberhalb des aktuellen Preises und der TakeProfit muss darunterliegen. Nachdem wir dann unsere sell Position eröffnet haben, setzen wir hier die Variable direction für die Richtung auf buy. Und jetzt fehlt uns eigentlich nur noch eine Chart Ausgabe. Das übernimmt der Comment Befehl. Der gibt uns hier den Text: die aktuelle Richtung ist… gefolgt von der Variable direction aus. Soweit so gut. Wenn Ihnen das hier zu schnell ging oder wenn Sie keine Ahnung haben, was alle diese Codezeilen bewirken sollen,
    7 min
  • MQL5 TUTORIAL GRUNDLAGEN 96 SIMPLES MOVING TEXT OBJEKT
    In diesem Video wollen wir uns einmal anschauen, wie man ein solches bewegtes Textobjekt hier erstellen kann. Das zeigt uns den aktuellen Niedrigstpreis der aktuellen Kerze an und verändert jeweils den Text entsprechend. Also lassen Sie uns einmal schauen, wie man so etwas mit MQL 5 programmieren kann. 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 SimplesMovingTextObjekt, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb der OnTick-Funktion hier gelöscht werden und wir entfernen auch die zwei Kommentarzeilen. Im ersten Schritt nutzen wir MqlRates, um uns ein Array mit Preisdaten zu erstellen. MqlRates speichert neben den Informationen über Preise, Volumen und Spread nämlich auch Zeitpunkte und die benötigen wir gleich, wenn wir das Objekt bewegen wollen. Danach nutzen wir ArraySetAsSeries, um das aktuelle Array von der aktuellen Kerze an abwärts zu sortieren und mit dem Befehl CopyRates füllen wir jetzt unser Preis Array mit Daten, und zwar für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit. Wir starten hier mit der aktuellen Kerze 0. Kopieren uns die Daten für drei Kerzen und speichern sie in unserem PriceInfo-Array. Jetzt können wir unser Objekt erstellen. Das geht mit der Funktion ObjectCreate. Wenn man die einmal markiert und F1 drückt, dann sieht man, dass es da jede Menge Parameter gibt. Der erste Parameter hier steht für das aktuelle Währungspaar. Der zweite Parameter ist der Name des Objektes. Der dritte Parameter ist der Objekttyp. Wir haben hier OBJ_TEXT und wenn man da mal F1 drückt, dann sieht man, es gibt noch jede Menge andere Objekttypen. Wir werden diesen Objekttyp hier nutzen. Der ist in der Lage, solche Texte hier auszugeben. Die letzten drei Parameter stehen auf 0. Wenn ich die einmal ausschneide, dann sieht man, dass der Parameter hier, der fett markiert ist, für das aktuelle Fenster steht. Das ist in unserem Fall Fenster 0. Wir nutzen hier eine 0. Das ist das Hauptfenster mit den Kerzen. Und außerdem muss ich hier einen Zeitpunkt und einen Preis übergeben. Das mache ich aber nicht. Ich hab beides auf 0 gesetzt, denn wir werden gleich Objekt Move nutzen, um das Objekt entsprechend zu bewegen. Vorher ändern wir noch ein paar Objekteigenschaften. Das geht zum Beispiel mit ObjectSetInteger. Für die Chart-ID 0 möchten wir für das Objekt mit dem Namen MovingText diese Eigenschaft für die font size, also die Schriftgröße verändern und die setzen wir hier auf 8. Wir nutzen ebenfalls ObjectInteger, um für die Objekteigenschaft Color, also die Farbe, die Farbe auf Rot zu setzen. Wenn wir das markieren und F1 drücken, dann sehen wir, es gibt jede Menge Farben die zur Auswahl stehen. Und damit unsere Schrift vertikal angezeigt wird, setzen wir jetzt den Objektwinkel. Das geht mit ObjektSetDouble. Auch hier für das Chart 0 und das Objekt mit dem Namen MovingText, möchten wir diesmal die Objekteigenschaft OBJPROP_ANGLE, also Winkel verändern. Und die setzen wir hier auf 90 Grad. Und letztendlich brauchen wir ja noch den Objekttext. Den setzen wir mit der Funktion ObjectSetString. Auch hier sind die ersten Parameter identisch. Die Eigenschaft, die wir ändern möchten, heißt OBJPROP_TEXT. Hier verwenden wir den Text LOW gefolgt von einem Doppelpunkt und dieser Ausdruck hier wird uns den aktuellen Low Price für die aktuelle Kerze liefern. So weit sind die Objekteigenschaften fertig. Und jetzt verschieben wir das Objekt mit ObjectMove. Auch hier sind die ersten beiden Parameter gleich. Parameter 3 ist der Ankerpunkt. Grundsätzlich kann man sagen, dass es die Ausrichtung des Objektes ist. Der folgende Parameter steht für den Zeitpunkt der aktuellen Kerze 0. Und das Objekt soll auf dem Low Price für die Kerze 0 gezeichnet werden. So weit so gut.
    7 min
  • MQL5 TUTORIAL GRUNDLAGEN – 95 SIMPLER LOW GANN FAN
    In diesem Video wollen wir uns einmal anschauen, wie man ein solches Gann Fan-Objekt hier von der niedrigsten Kerze zur aktuellen Kerze zeichnen kann. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 programmiert. 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 Metaeditor auf und hier klicken wir auf Datei, neue Datei, Expert Advisor aus Vorlage, weiter. Ich vergebe hier einmal den Namen SimplerLowGannFan, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb der OnTick-Funktion gelöscht werden und auch die zwei Kommentarzeilen werden entfernt. Im ersten Schritt möchten wir die Anzahl der Kerzen auf dem Chart berechnen. Das übernimmt die Funktion ChartGetInteger für die Chart-ID 0. Wir nutzen hier CHART_FIRST_VISIBLE_BAR, bitte alles in Großbuchstaben und mit Unterstrichen, und der letzte Parameter steht für das Unterfenster 0, das ist das mit den Kerzen. Danach erstellen wir uns eine Variable für die niedrigste Kerze. Und außerdem brauchen wir noch ein Array. Das wird alle Preise für jede Kerze aufnehmen. Jetzt sortieren wir unser Array mit der Funktion ArraySetAsSeries von der aktuellen Kerze an abwärts und danach nutzen wir eine Funktion mit dem Namen CopyLow. Diese Funktion liefert uns die Minimalpreise für die Kerzen für das aktuelle Währungspaar auf dem Chart und die aktuell eingestellte Zeiteinheit. Wir starten mit der aktuellen Kerze 0 und gehen alle Kerzen auf dem Chart durch. Die Ergebnisse landen dann in unserem Array mit dem Namen Low. Und um die niedrigsten Kerze zu ermitteln nutzen wir jetzt diese Funktion. ArrayMinimum gibt uns das minimale Element in einem Array. Und zwar suchen wir hier in unserem LowArray von der aktuellen Kerze an, für alle Kerzen auf dem Chart, nach der niedrigsten Kerze und weisen dann das Ergebnis dieser Variable zu. Wichtig ist, dass das nicht der Wert sondern die Nummer für die niedrigste Kerze ist. Wir brauchen noch ein weiteres Array. Das erstellen wir uns mit MqlRates. MqlRates hat neben den Werten für die Kerzen auch noch die Zeitpunkte. Auch dieses Array sortieren wir mit ArraySetAsSeries von der aktuellen Kerze an abwärts. Und mit der Funktion CopyRates füllen wir unser PriceInformation-Array für das aktuelle Währungspaar auf dem Chart und die auf dem Chart eingestellte Zeiteinheit, von der Kerze 0 für alle Kerzen auf dem Chart und speichern die Werte in unserem Array. Bevor wir ein neues Objekt zeichnen nutzen wir ObjectDelete, um für das aktuelle Währungspaar auf dem Chart alle Objekte zu löschen, die diesen Namen hier tragen. Beim allerersten Aufruf gibt es so ein Objekt noch nicht, aber danach möchten wir sicherstellen, dass vor dem Neuzeichnen eines Objektes das alte Objekt zunächst gelöscht wird. Danach erstellen wir ein neues Objekt. Das übernimmt die Funktion ObjectCreate. Die benötigt einige Parameter. Der erste Parameter 0 steht für das aktuelle Chart. Parameter Nummer 2 ist der Objektname. Sie können das Objekt so nennen wie sich möchten, aber es sollte überall gleich geschrieben sein. Der dritte Parameter steht für den Objekttypen. Wir nutzen hier OBJ_GANNFAN. Wenn man das einmal markiert und die F1-Taste drückt, dann gibt es jede Menge weiter Objekttypen. Wir möchten diesen Objekttypen hier nutzen. Im nächsten Parameter geben wir an, dass unser Objekt im Hauptfenster gezeichnet werden soll. Das ist hier Fenster 0. Jetzt folgen noch einige Koordinaten. Und zwar ist die erste Koordinate die Zeit zu der die niedrigste Kerze in unserem PriceInformation-Array gezeichnet wurde. Hier unten sind immer die Zeiten und hier immer die Werte angegeben. Und im nächsten Parameter übergeben wir für die gleiche Kerze jetzt hier den Wert für die niedrigste Kerze auf unserem Chart. Wir möchten das Objekt gerne bis zu dem Zeitpunkt zeichnen, wo die aktuelle Kerze erstellt wird. Der letzte Referenzpunkt ist hier der niedrigste Preis der aktuellen Kerze.
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 94 SIMPLER SPREADSHEET FILE WRITER
    In diesem Video wollen wir uns einmal anschauen, wie man die Preisdaten direkt vom Chart in so eine Tabellenkalkulation hier übertragen kann. Wir machen das aus einem Expert Advisor. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 programmieren kann. Um das zu tun, klicken Sie auf dieses kleine Symbol oder drücken Sie die F4 Taste. Das öffnet dann hier den Metaeditor. Und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier mal den Namen SimplerSpreadSheetWriter, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion hier gelöscht werden. Und wir entfernen auch die zwei Kommentarzeilen. Wir starten damit, dass wir uns zunächst zwei statische Variablen erstellen. Statische Variablen erkennt man an dem Zusatz static. Sie behalten ihren Wert innerhalb der Funktion, solange wie der Expert Advisor läuft. Wir erstellen hier jeweils eine Variable für den letzten Höchst- und den letzten Niedrigstpreis. Außerdem benötigen wir ein Array für Preisdaten. Dafür nutzen wir hier MqlRates. MqlRates bewahrt Informationen über Preise, Volumen und Spread auf. Unter anderem aber auch den Zeitstempel für die Kerze. Unser Array wird jetzt mit ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Und dann nutzen wir CopyRates für das aktuelle Währungspaar und die auf dem Chart eingestellte aktuelle Zeiteinheit, um von der aktuellen Kerze null für drei Kerzen die Preisdaten in unser Preisinfo Array zu kopieren. Um herauszufinden, ob wir eine neue Kerze haben und sich die Preise geändert haben, vergleichen wir jetzt die Variable LastHigh. Und wenn die ungleich ist zu dem, was der Höchstpreis für Kerze eins in unserem Preisinfo Array sagt und wenn auch die Variable LastLow ungleich ist zu dem Niedrigstpreis für Kerze eins in unserem Preisinfo Array, dann haben wir eine neue Kerze. Und für die wollen wir jetzt die Werte in eine Datei schreiben. Ich nenne meine Datei hier Spreadsheet.csv. csv steht für Comma-separated Values, soweit ich weiß. Und dieses Dateiformat wird von den meisten Tabellenkalkulationsprogrammen wie Excel oder Libreoffice automatisch erkannt. Danach nutzen wir FileOpen und versuchen diese Datei zu öffnen. Wenn die Datei nicht existiert, wird sie durch FileOpen angelegt. Hier kommen noch ein paar Angaben, wie mit der Datei umgegangen werden soll. Wir möchten sie mit FILE_READ und FILE_WRITE zum Lesen und zum Schreiben öffnen. FILE_CSV legt das Dateiformat fest. Und der letzte Parameter hier FILE_ANSI sagt aus, in welcher Zeichencodierung wir die Datei beschreiben möchten. Wenn man das einmal markiert und die F1 Taste drückt, dann sieht man, dass es neben ANSI auch UNICODE gibt. UNICODE würde man verwenden, wenn man Sonderzeichen wie Umlaute verarbeiten möchte. Und wir könnten nicht nur eine csv Datei, sondern auch eine Textdatei erstellen. Aber für dieses einfache Beispiel soll uns das hier so reichen. Der Rückgabewert hier ist ein File Handle. Und das brauchen wir jetzt, indem wir mit FileSeek für das File Handle vom ersten Eintrag der Datei nach dem Ende suchen. Das finden wir mit SEEK_END. Und wir machen das deswegen, weil wir an den bestehenden Inhalt der Datei etwas anhängen möchten und nicht den Dateiinhalt ersetzen wollen. Im Anschluss können wir mit FileWrite, auch wieder mit unserem Spreadsheet Handle Werte und Texte in unsere Datei schreiben. Die einzelnen Werte werden hier mit einem Komma getrennt. Erst kommt der Text für den Zeitstempel, gefolgt von dem Zeitwert für Kerze eins in unserem Preisinfo Array, dann kommt der Text High. Und in der nächsten Spalte folgt dann der Höchstpreis für Kerze eins in unserem Preisinfo Array. Und das Ganze wiederholen wir hier nochmal für die niedrigsten Preise der letzten Kerze. Sie können diese FileWrite Zeile auch nach eigenen Wünschen erweitern. Jedes Komma steht hier für eine neue Spalte. Nachdem Sie geschrieben haben, möchten Sie die Datei aber mit FileClose auch wieder schließen.
    9 min
  • MQL5 TUTORIAL GRUNDLAGEN – 93 SIMPLER HIGH GANN FAN
    In diesem Video wollen wir uns einmal anschauen, wie man ein solches Objekt hier auf das Chart zeichnen kann. Es handelt sich um ein Gann Fann Objekt. Und wir wollen uns einmal anschauen, wie man so etwas in MQL5 programmiert. Um das zu tun, klicken Sie im Metatrader bitte hier oben auf dieses kleine Symbol oder drücken Sie die F4 Taste. Das öffnet den Metaeditor. Und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier mal den Namen SimplerHighGannFan, 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 uns die Anzahl der Kerzen auf dem Chart berechnen. Das funktioniert mit der Funktion ChartGetInteger für das Chart mit der ID null. Im zweiten Parameter nutzen wir CHART_FIRST_VISIBLE_BAR. Wenn man das einmal markiert und die F1 Taste drückt, dann lernen wir, dass wir die Nummer des ersten sichtbaren Balken auf dem Chart zurückerhalten. Das ist nicht der Wert, sondern tatsächlich die Nummer für die Kerze. Anschließend erstellen wir uns eine Variable für die höchste Kerze. Und um die zu ermitteln brauchen wir noch ein entsprechendes Array. Das habe ich hier mal High genannt. Dieses Array wird jetzt mit ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Danach nutzen wir CopyHigh. Wenn man das markiert und F1 drückt, dann ist das in der Hilfe total falsch beschrieben. Es liefert uns nämlich die Höchstpreise und nicht die Eröffnungszeit. Und zwar für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit. Wir starten mit der aktuellen Kerze null und kopieren für alle Kerzen auf dem Chart die Ergebnisse in unser High Array. Und das ermöglicht es uns, jetzt die höchste Kerze zu ermitteln. Und zwar mit der Funktion ArrayMaximum. Die sucht nämlich in unserem Array das maximale Element. Und da wir in unserem High Array nur Höchstpreise haben, suchen wir von der aktuellen Kerze null für alle Kerzen auf dem Chart. Und das Ergebnis ist dann die Nummer der höchsten Kerze. Jetzt erstellen wir mit MqlRates ein weiteres Array, das neben den Preisdaten auch die Zeitpunkte für die Kerzen speichert. Dieses Array nenne ich PriceInformation. Auch das wird mit ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Danach nutzen wir CopyRates, um für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit, von der aktuellen Kerze null für alle Kerzen auf dem Chart, die Preisdaten und die Zeitpunkte in unser Preisinformations-Array zu kopieren. Bevor wir jetzt unser Objekt erstellen, nutzen wir ObjektDelete, um für das aktuelle Währungspaar bereits bestehende Objekte mit diesem Namen hier zu löschen. Beim allerersten Aufruf haben wir natürlich noch kein Objekt auf dem Chart. Aber danach möchten wir sicherstellen, dass jeweils, bevor wir ein neues Objekt zeichnen, das alte Objekt entfernt wird. Und das übernimmt hier diese Funktion ObjektDelete. Und nachdem das alte Objekt weg ist, können wir mit Hilfe von ObjectCreate ein neues erstellen. Dazu müssen wir einige Parameter übergeben. Der erste Parameter hier ist eine Null. Der steht für die Chart-ID. Parameter Nummer zwei ist der Objektname. Hier ein Text. Sie können das Objekt so nennen, wie Sie das möchten. Hauptsache, Sie nennen es an allen Stellen gleich. Parameter Nummer drei ist der Objekttyp. In unserem Fall nutzen wir OBJ_GANNFAN. Wenn man das einmal markiert und die F1 Taste drückt, dann sehen wir, dass es hier eine ganze Reihe von anderen Objekttypen gibt, die wir ebenfalls nutzen könnten. Wir nutzen aber dieses Objekt hier. Das wird uns dann diese Linien auf das Chart zeichnen. In Parameter Nummer vier geben wir an, dass wir das gerne auf dem Kerzenchart zeichnen möchten. Das ist Chart null. Jetzt folgen die Koordinaten. Und zwar nehmen wir aus dem Preisinformations-Array die höchste Candle, also die höchste Kerze.
    9 min
  • MQL5 TUTORIAL GRUNDLAGEN – 92 SIMPLER DEVIATION CHANNEL
    In diesem Video wollen wir uns einmal anschauen, wie man ein solches Objekt hier zeichnen kann. Es handelt sich um einen sogenannten Diviation Channel. Der zeigt uns hier grade die Trendrichtung an. Und wir wollen uns einmal anschauen, wie man so etwas in MQL5 programmieren kann. Um das zu tun, klicken Sie 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 SimplesDevChannelObjekt, 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 die Anzahl der Kerzen auf dem Chart berechnen. Das geht mit der Funktion ChartGetInteger für die Chart-ID null. Und wir möchten gerne diese Eigenschaft hier ermitteln. Die nennt sich CHART_FIRST_VISIBLE_BAR. Der letzte Parameter steht für das Fenster, das ist Fenster null. Damit wird das Fenster bezeichnet, in dem sich die Kerzen befinden. Jetzt erstellen wir uns mal eine Variable für die niedrigste Kerze. Außerdem benötige ich noch ein Array für die niedrigsten Kerzenpreise. Das Ganze wiederholen wir nochmal, denn wir möchten auch die höchsten Kerzenpreise ermitteln. Mit ArraySetAsSeries werden jetzt beide Arrays von der aktuellen an abwärts sortiert. Und mit CopyLow können wir jetzt für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit, von der aktuellen Kerze null für alle Kerzen auf dem Chart, die niedrigsten Preise ermitteln. Die werden dann in unserem Array Low gespeichert. Das Gegenstück dazu heißt CopyHigh. Auch hier für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit, von der aktuellen Kerze null für alle Kerzen auf dem Chart werden die höchsten Preise ermittelt und in unserem Array mit dem Namen High gespeichert. Jetzt können wir die niedrigste Kerze auf dem Chart berechnen. Das übernimmt die Funktion ArrayMinimum. Die schaut in unserem Array mit dem Namen Low von der aktuellen Kerze null für alle Kerzen auf dem Chart nach dem minimalen Wert und speichert ihn in dieser Variable. Das gibt es natürlich dann auch noch für die höchste Kerze. Da heißt die Funktion ArrayMaximum. Die schaut in dem High Array, auch von der aktuellen Kerze null für alle Kerzen auf dem Chart nach dem höchsten Wert und speichert ihn in dieser Variable. Zusätzlich nutzen wir jetzt noch MqlRates. MqlRates speichert nämlich neben den Preisinformationen auch die Zeitinformationen. Auch dieses Array wird mit ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Im Anschluss nutzen wir CopyRates für das aktuelle Währungspaar auf dem Chart und die aktuell ausgewählte Zeiteinheit, um von der aktuellen Kerze für alle Kerzen auf dem Chart die Preisinformationen in unserem Array zu speichern. Jetzt haben wir die grundlegenden Daten, die wir zum Zeichnen unseres Kanal Objektes benötigen. Bevor wir das aber tun, nutzen wir hier ObjectDelete, um für das aktuelle Währungspaar alle alten Objekte zu löschen, die diesen Namen hier haben. Beim allerersten Aufruf dieser Funktion gibt es noch kein Objekt. Aber danach soll immer der alte Kanal gelöscht werden, bevor ein neuer gezeichnet wird. Das machen wir mit Hilfe der Funktion ObjectCreate. Die braucht einige Informationen. Der erste Parameter steht für die Chart-ID. Das wird hier mit null angegeben. Also ändern wir das mal entsprechend. Parameter Nummer zwei steht für den Objektnamen. Ich habe dieses Objekt SimpleChannelObject genannt. Im dritten Parameter wird der Typ des Objektes angegeben. Wenn wir das mal markieren und die F1 Taste drücken, dann sehen wir, dass es unterschiedliche Objekttypen gibt, die unterschiedliche Parameter benötigen. In unserem Fall ist es ein Diviation Channel, also ein Kanal für die Abweichung, hier übersetzt mit Kanal der Standardabweichung.
    9 min
  • MQL5 TUTORIAL GRUNDLAGEN – 91 SIMPLES CHANNEL OBJEKT
    In diesem Video wollen wir uns einmal anschauen, wie man ein Channel-Objekt darstellen kann. Dieser Channel zeigt hier die niedrigste und die höchste Kerze. Also lassen Sie uns einmal schauen, 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 SimplesChannelObjekt, 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 mit einer Funktion die uns die Anzahl der Kerzen auf dem Chart zurückliefern wird. Das geht über ChartGetInteger. Der erste Parameter hier steht für die Chart-ID. Parameter Nummer 2, CHART_FIRST_VISIBLE_BAR, liefert uns die Nummer der ersten sichtbaren Balken auf dem Chart, ich denke hiermit sind Kerzen gemeint. Der letzte Parameter steht für das Unterfenster. In unserem Fall verwenden wir Unterfenster 0. Das bedeutet, dass ist das Fenster mit den Kerzen. Wenn Sie hin und wieder mit Oszillatoren arbeiten, dann wissen Sie, dass diese Oszillatoren in einem weiteren Fenster dargestellt werden. Das hat dann eine andere ID. Jetzt erstellen wir uns eine Variable für die Nummer der niedrigsten Kerze und ein dazu passendes Array mit dem Namen Low, dass die Preise für die niedrigsten Kerzen aufnehmen kann. Das Ganze wiederholen wir noch einmal für die Variable der höchsten Kerze und das dazu passende Array. Im Anschluss nutzen wir ArraySetAsSeries, um unser Array von der aktuellen Kerze an abwärts zu sortieren. Auch das wiederholen wir nochmal für das Array mit den Höchstpreisen. Und nun können wir unser Array mit Daten füllen. Das übernimmt die Funktion die CopyLow für das aktuelle Währungspaar auf dem Chart und für die auf dem Chart ausgewählte Zeiteinheit. Wir starten von der aktuellen Kerze 0. Wir hätten gerne die Preise für alle Kerzen auf dem Chart und möchten diese in unserem Array Low speichern. Wenn man CopyLow einmal markiert und die F1-Taste drückt, dann sieht man, dass wir hier die Minimalpreise der Bars, also der Kerzen für das angegeben Paar bekommen. Das Ganze gibt es auch für die Höchstpreise der Kerzen. Die entsprechende Funktion heißt CopyHigh. Auch die nutzen wir für das aktuelle Währungspaar auf dem Chart und die auf dem Chart angegeben Zeiteinheit, von der aktuellen Kerze 0, für alle Kerzen auf dem Chart, um die Höchstpreise in unser Array mit dem Namen High zu kopieren. Und jetzt ermitteln wir die höchste aller Kerzen indem wir diese Funktion hier nutzen. Die heißt ArrayMaximum. Die liefert uns das maximale Element in unserem Array. Das Ganze gibt’s auch noch mal als ArrayMinimum für die niedrigste Kerze. Und diese Parameter hier bedeuten: Bitte such im Array mit dem Namen aus Parameter 1 von der aktuellen Kerze 0 für alle Kerzen auf dem Chart das Maximum bzw. hier das Minimum. Um unser Kanalobjekt zu zeichnen benötigen wir jetzt die Preisinformation die wir über MqlRates bekommen. MqlRates bewahrt diverse Informationen zu den Kerzenpreisen auf. Unter anderem auch die Zeitpunkte und die brauchen wir, um das Objekt zu zeichnen. Auch dieses Array wird mit ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Und dann befüllen wir es mit der Hilfe der Funktion CopyRates mit Daten für das aktuelle Währungspaar auf dem Chart und die dort ausgewählte Zeiteinheit. Möchten wir startend mit Kerze 0 für alle Kerzen auf dem Chart die Daten in unser PriceInformation-Array kopieren. Damit haben wir soweit alles was wir brauchen, um das Objekt zu zeichnen, aber bevor wir das tun, möchten wir erst eventuell vorhandene alte Objekte löschen. Das übernimmt die Funktion ObjectDelete. Für das aktuelle Währungspaar werden alle alten Objekte mit dem SimpleChannelObject entfernt. Beim ersten Aufruf werden wir so ein Objekt nicht haben,
    10 min
  • MQL5 TUTORIAL – 90 SIMPLE LOW PREIS TREND LINIE
    In diesem Video wollen wir uns einmal anschauen, wie man von der niedrigsten Kerze, vom niedrigsten Preis aus, eine Linie zum aktuellen Niedrigstpreis der aktuellen Kerze und darüber hinaus erstellen kann. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 programmieren kann. 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 vergeben hier einmal den Namen SimpleLowPriceLinie, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb dieser OnTick-Funktion hier gelöscht werden und wir entfernen auch die beiden Kommentarzeilen. Im ersten Schritt möchten wir erst einmal ermitteln, wie viele Kerzen wir denn auf dem Chart haben. Das geht mit der Funktion ChartGetInteger und zwar für die aktuelle Chart-ID 0 möchten wir gerne die Eigenschaft CHART_FIRST_VISIBLE_BAR haben, bitte alles in Großbuchstaben und mit Unterstrichen. Das hätten wir gerne für das Fenster Nummer 0, also hier wo die Kerzen sind, das ist das Fenster 0. Wenn man hier einen Wert für den MACD anzeigen lässt, dann wäre darunter noch ein weiteres Fenster. Ich glaube das wäre ID 1. Jetzt haben wir auf jeden Fall die Anzahl der Kerzen auf dem Chart. Danach brauchen wir noch eine Variable für die niedrigste Kerze und wir erstellen uns ein Array. Das bekommt den Namen Low, denn es soll die Werte für die niedrigsten Preise unserer Kerzen aufnehmen. Das Array wird jetzt im Anschluss mit der Funktion ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Und jetzt nutzen wir die Funktion CopyLow. Die liefert uns die Minimalpreise der Kerzen, für das aktuelle Währungspaar und die auf dem Chart ausgewählte Zeiteinheit. Angefangen von der aktuellen Kerze bis hin zur Anzahl der sichtbaren Kerzen und speichert uns das Ergebnis in unserem Array ab. Und das ermöglicht es uns jetzt die niedrigste Kerze zu ermitteln, in dem wir eine weitere Funktion einsetzen, die heißt ArrayMinimum. Und ArrayMinimum macht das was wir schon vermuten, es liefert uns den niedrigsten Wert innerhalb eines Arrays. In diesem Fall durchsuchen wir das Array mit dem Namen Low von der aktuellen Kerze 0 für alle sichtbaren Kerzen auf dem Chart und speichern das Ergebnis als Nummer der niedrigsten Kerze. Das hier ist noch nicht der Wert den wir benötigen, sondern nur die Nummer der Kerze auf dem Chart. Mit Hilfe von MqlRates erstellen wir jetzt ein Array für die Preisinformation der Kerzen auf dem Chart. Auch dieses Array wird mit ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Danach füllen wir mit CopyRates unser Array mit Daten, und zwar für das aktuelle Währungspaar auf dem Chart und die auf dem Chart eingestellte Zeiteinheit. Auch hier starten wir von der aktuellen Kerze 0. Wir möchten gerne die Daten für alle Kerzen auf dem Chart haben und die speichern wir in unserem PriceInformation-Array. Jetzt nutzen wir ObjectDelete für das aktuelle Währungspaar auf dem Chart, um ein Objekt mit dem Namen SimpleLowLineTrend zu löschen, falls schon eines existiert. Beim allerersten Aufruf wird das nicht der Fall sein, aber danach möchten wir immer zunächst die alte Linie löschen bevor wir eine Neue zeichnen. Und um diese Linie zu zeichnen nutzen wir ObjectCreate. Hier müssen wir noch einige Parameter übergeben. Der erste Parameter steht für das aktuelle Währungspaar. Parameter Nummer 2 gibt den Namen des Objekts an. In unserem Fall SimpleLowLineTrend. Mit Parameter Nummer 3 legen wir den Objekttyp fest. Wir nutzen hier OBJ_TREND. Es gibt aber noch eine ganze Menge weiterer Objekttypen die man hier nutzen könnte. Je nach Objekttyp müssen wir unterschiedliche Parameter übergeben. Für unsere gerade Linie brauchen wir Koordinaten. Und die hätten wir gerne für unser Kerzenchart. Darum übergeben wir hier bei Parameter 4 die 0. Das wird hier mit Index des Fensters übersetzt.
    10 min
  • MQL5 TUTORIAL GRUNDLAGEN – 89 SIMPLE HIGH PRICE LINIE
    In diesem Video wollen wir uns einmal anschauen, wie man eine Linie zeichnen kann, von der höchsten Kerze auf dem Chart bis zum Höchstpunkt der aktuellen Kerze, um einen groben Trend zu bestimmen. Es handelt sich hier um einen Objekttypen, also lassen Sie uns einmal schauen, wie man so etwas mit MQL5 programmieren kann. Um das zu tun, klicken Sie bitte hier oben auf dieses kleine Symbol oder drücken Sie die F4-Taste. Das öffnet dann hier den Metaeditor und wir klicken auf Datei, neue Datei, Expert Advisor aus Vorlage, weiter. Ich vergebe hier einmal den Namen SimpleHighPriceLinie, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles gelöscht werden was oberhalb der OnTick-Funktion ist und auch die zwei Kommentarzeilen werden gelöscht. Je nachdem wie viel Kerzen wir hier auf dem Chart angezeigt bekommen, bekommen wir andere Ausgaben0. Das bedeutet, zunächst einmal müsse wir die Anzahl der Kerzen auf dem Chart ermitteln. Denn nur für die sichtbaren Kerzen möchten wir gerne die höchste Kerze ermitteln. Das übernimmt die Funktion ChartGetInteger für uns. Die wird für das aktuelle Chart, die Eigenschaft CHART_FIRST_VISIBLE_BAR ermitteln. Die weisen wir hier der Variable CandlesOnChart, also Kerzen auf dem Chart zu. Außerdem brauchen wir eine Variable für die höchste Kerze. Die habe ich hier HighestCandle genannt. Und wir möchten ja alle Höchstpreise der sichtbaren Kerzen miteinander vergleichen, darum erstellen wir uns hier noch ein Array mit dem Namen High. Dieses Array sortieren wir jetzt mit der Funktion ArraySetAsSeries von der aktuellen Kerze an abwärts. Und jetzt holen wir uns die Höchstpreise für die Kerzen. Das übernimmt die Funktion CopyHigh. Die hat einige Parameter. Der erste Parameter steht für das aktuelle Währungspaar auf dem Chart. Der zweite Parameter für die Zeiteinheit, die wir auf dem Chart verwenden. Wir starten von der aktuellen Kerze 0 und möchten gerne für die Anzahl der Kerzen auf dem Chart alle Daten in unser HighArray kopieren. Und jetzt ermitteln wir die höchste Kerze mit der Funktion ArrayMaximum. Die wird in unserem Array alle Kerzen überprüfen und auch hier von der aktuellen Kerze 0 für alle auf dem Chart sichtbaren Kerzen die Werte durchgehen und den höchsten Wert dieser Variable hier zuweisen. Jetzt brauchen wir noch ein Array. Diesmal nutzen wir MqlRates, um uns die Preisinformationen für alle Kerzen zu holen. Auch dieses Array wird mit ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Und mit CopyRates kopieren wir, für das aktuelle Chart und die auf dem Chart eingestellte Zeiteinheit, von Kerze 0 für alle auf dem Chart sichtbaren Kerzen die Preisdaten und speichern diese in unserem PriceInformations-Array. Im nächsten Schritt möchten wir gerne mit ObjectDelete alle vielleicht bereits vorher gezeichneten Linien auf dem Chart löschen. Und zwar tun wir das für das aktuelle Chart und für Linien, die diesen Namen hier haben, SimpleHIghLineTrend, denn dafür möchten wir jetzt ein neues Objekt erstellen. Das geht mit der Funktion ObjectCreate. Auch hier müssen wir eine ganze Menge Parameter übergeben. Der erste Parameter steht für das aktuelle Chart. Der zweite Parameter ist der Name des Objektes. Ich hab hier den Namen SimpleHighLineTrend gewählt, aber vom Prinzip ist der Name egal. Sie müssen Ihn nur immer gleich schreiben. Parameter Nummer drei steht für den Objekttypen. Wir nutzen hier OBJ_TREND. Parameter Nummer vier steht für unser Hauptfenster. Das Hauptfenster mit den Kerzen ist Fenster 0. Der Startpunkt für unsere Linie soll bei der höchsten ermittelten Kerze auf dem Chart liegen. Dazu übergeben wir hier die Zeitangabe von dieser Kerze. Und wir möchten gerne, dass die Linie vom höchsten Punkt dieser Kerze gezeichnet wird, also übergeben wir als zweiten Parameter hier den Höchstpreis. Wir könnten für jede Kerze auch den Schlusskurs angeben, aber uns interessiert in diesem Fall halt der Höchstpreis. Jetzt müssen wir noch die Endpunkte für unsere Linie festlegen.
    10 min
  • MQL5 TUTORIAL GRUNDLAGEN – 88 SIMPLER ALLIGATOR INDIKATOR
    In diesem Video wollen wir uns mal anschauen, wie man diesen Indikator hier programmieren kann, damit zumindest die Werte ausgegeben werden. Es handelt sich um den Alligator Indikator von Bill Williams. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 realisiert. 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 vergeben hier mal den Namen SimplerAlligator, klicke auf weiter, weiter und fertigstellen. Jetzt kann hier alles oberhalb der OnTick-Funktion gelöscht werden und auch die zwei Kommentarzeilen werden entfernt. Da der Alligator Indikator drei unterschiedliche Werte hat, brauchen wir hier drei Arrays. Das Erste ist für den Jaw-Wert. Jaw steht für Kiefer. Das zweite Array für die Teeth, also für die Zähne. Und das dritte Array ist für die Lippen. Wenn man mal mit der rechten Maustaste auf die Eigenschaften des Alligator Indikators klickt, dann sehen wir hier, diese drei Werte. Im nächsten Schritt geht es darum die Definition für den Alligator Indikator durchzuführen. Das übernimmt die in MQL5 eingebaute Funktion iAlligator und die kommt mit einer ganzen Menge Parametern. Der erste Parameter ist für das aktuelle Währungspaar auf dem Chart, der zweite Parameter steht für die auf dem Chart gerade ausgewählte Zeiteinheit, der dritte Parameter ist die Anzahl der Kerzen für die Berechnung des Kiefers, also der Jaw Periode. In diesem Fall nutzen wir 13 Kerzen. Parameter Nummer vier steht für die Verschiebung. Wir nutzen hier keine Verschiebung. Im Original wird die Jaw Periode um 8 Kerzen verschoben berechnet. Das macht aber die Kontrolle für den aktuellen Wert schwierig. Darum machen wir das hier ohne Verschiebungswerte. Der nächste Parameter ist für die Zähne, also die Teeth Periode. Dieser Wert wird anhand von 8 Kerzen ermittelt. Auch hier setzen wir den Verschiebungswert wieder auf 0. Die dritte Linie ist die Lips Periode. Hier nutzen wir 5 Kerzen für die Berechnung. Auch das machen wir hier wieder ohne Verschiebung. Der nächste Parameter steht für die Wahl des gleitenden Durchschnittes. Ich hab jetzt hier MODE_SMA gewählt und wenn man da einmal F1 drückt, dann findet man heraus, dass es unterschiedliche Möglichkeiten gibt. Die Originalversion von Bill Williams nutzt hier eine geglättete Version. Man könnte auch einen exponentiellen Moving Average wählen. Und der letzte Parameter steht für den angewendeten Preis. Wir möchten das gerne anhand er Schlusspreise ermitteln. Machen wir noch die Klammer zu und setzen ein Semikolon. Dann ist die Definition soweit beendet. Im nächsten Schritt sortieren wir unsere drei Arrays, die wir hier oben erstellt haben, mit Hilfe der Funktion ArraySetSeries von der aktuellen Kerze an, abwärts. Und jetzt nutzen wir CopyBuffer, um anhand er Alligatordefinition, die wir hier oben getroffen haben, unser JawArray mit Werten zu füllen. Für den Jaw-Wert nutzen wir den ersten Buffer. Das ist Buffer 0. Der wird uns den Jaw-Wert ermitteln. Buffer 1 steht für Teeth, also für die Zähne und Buffer 2 liefert den Lips-Wert für die Lippen. Wir machen das in diesem Wert für den Jaw-Wert, also nutzen wir Buffer 0 und kopieren uns von der aktuellen Kerze 0 für 3 Kerzen die Werte, die wir dann in unserem JawArray speichern. Für das TeethArray, also für die Zähne, sieht das ganz ähnlich aus. Mit dem Unterschied, dass wir hier Buffer 1 benutzen. Und für die Lips, also für die Lippen, machen wir das Ganze nochmal mit Buffer 2. Danach können wir die jeweiligen Werte ermitteln, in dem wir einfach auf den Wert von Kerze 0 auf unserem JawArray zugreifen. Das gibt uns hier den AlligatorJaw-Wert. Ich nutze NormalizeDouble und fünf Nachkommastellen, um die Ausgabe entsprechend zu formatieren. Ähnlich sieht das aus, um den Wert für Teeth, also für die Zähne, zu ermitteln. Gleiches Verfahren,
    9 min

About MQL5 Tutorial - Automatisch traden mit Metatrader5

From the publisher's feed

Metatrader5 MQL5 Expert Advisor Tutorial