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 – Bessere Ergebnisse durch Statistiken
    Dieses Mal geht es um das Thema Statistiken und gute Statistiken werden mit zunehmender Komplexität eines Handelssystems immer wichtiger. In diesem Fall zum Beispiel handeln wir ein Einstiegssignal, das hier ist ein gleitender Durchschnitt. Und hier werden Signale zum kaufen oder verkaufen generiert. Und das hier unten ist der so genannte „Awesome Oszillator“. Der wird als Filter eingesetzt und immer dann, wenn der Signalfilter auf „Kaufen“ und auch das Signal auf „Kaufen“ stehen, würden wir eine Position eröffnen, wenn unsere anderen Filterkriterien wie beispielsweise die Anzahl der Positionen für diese Währung und die maximale Positionsanzahl für unser Handelssystem nicht überschritten werden. Das sind eine ganze Menge Kriterien. Und um zu messen, welches Kriterium denn positive oder negative Veränderungen herbeiführt, macht es Sinn, solche Tests immer und immer wieder in gleicher Weise durchzuführen und die statistischen Ergebnisse aus diesen Tests miteinander zu vergleichen. Um das zu beschleunigen, schalten wir hier mal die Visualisierungsoption aus und testen das Jahr 2016 für den Euro US Dollar. Starten wir den Test. Und auf dem Diagramm kann ich erkennen, dass sich die Equity in die falsche Richtung bewegt und zum Ende des Jahres 2016 hätten wir jetzt einen Verlust gemacht. Unter der Reiterkarte „Ergebnisse“ kann ich mit der rechten Maustaste einen Bericht erzeugen, zum Beispiel hier als HTML Bericht. Und wenn ich dieses Format wähle, dann bekomme ich nach einigen Sekunden eine Webseite angezeigt und auf dieser Webseite hier im Strategietesterbericht gibt es diverse Kennzahlen. Viele von Ihnen werden diesen Bericht bereits kennen, aber ich kann auch hier mit der rechten Maustaste als Bericht das Format Open XML wählen. Speichern wir das mal. Und öffnen das in diesem Fall mit Libre Office. Dann lassen sich in diesem Fall auch Berechnungen durchführen und Summen bilden. Wer sich mit Excel auskennt, kann anhand dieser Zahlen hier eine ganze Menge Erkenntnisse gewinnen. Und grundsätzlich empfehle ich auch immer, die Gegenprobe vorzunehmen und den Einstieg herum zu drehen. Jetzt würden wir bei einem negativen Trend kaufen und bei einem positiven Trend verkaufen. Speichern wir das mal ab, kompilieren unser Hauptmodul und starten einen neuen Test. Dann sieht man bereits in der Diagrammansicht, dass die Ergebnisse deutlich positiver ausfallen. Aber spätestens wenn man erst mal zehn oder 15 unterschiedliche Parameter verändert hat, dann werden Sie froh sein, wenn Sie auch später noch auf Berichte in Ihrer Tabellenkalkulation oder Ihrem Internetbrowser zurückgreifen können.
    4 min
  • MQL5 TUTORIAL DEUTSCH – BESSERE BACKTEST RESULTATE DURCH OPTIMIERUNG
    Diesmal geht es um das Thema Backtest. Und wenn wir hier auf Ansicht klicken und uns mit Steuerung und R oder einem Klick auf Strategietester hier unten dieses Strategiestester-Panel anzeigen lassen, dann gehen wir in der Regel immer gleich vor. Wir suchen uns hier unseren Expert Advisor aus, wählen ein Währungspaar und einen Zeitraum, den wir testen möchten. In der Regel ist hier dieser Haken für die Visualisierung aktiviert und viele Leute wählen hier jeden Tick aus, weil sie glauben, dass sie damit die beste Datenqualität erzielen. Wenn man sich allerdings diese Seite hier auf mql5.com anschaut, dann lernt man: Der Strategietester des MetaTrader5 Terminals nutzt nur eine Art der Preismodellierung und das ist die Erzeugung von Ticks auf Basis bestehender historischer Daten auf minütlichen Timeframes. Wer möchte, kann sich den kompletten Text hier einmal anschauen und dann wird er feststellen, dass die Ticks zwischen den einzelnen Minutendaten aufgrund von Regeln erzeugt werden. Wenn es genügend Punkte zwischen den Unterstützungspunkten gibt, dann wird eine lineare Sequenz von Ticks erzeugt, im anderen Fall eine Säge. So oder so, die Ticks sind nicht identisch mit den Ticks der Minutendaten, als diese Daten aufgezeichnet wurden, sondern sie werden berechnet. Man kann also in den allermeisten Fällen hier von jeder Tick auf eine Minute OHLC Daten umstellen. OHLC bedeutet: Open high low and close. Und diese Daten sehen Sie auch, wenn Sie Ihre Maus mal über eine bestimmte Kerze auf ihrem Chart halten. Das spart schon einmal eine ganze Menge Zeit beim Test. Aber auch, wenn wir hier unseren Test sehr stark beschleunigen können, würde es doch eine ganze Zeit lang dauern, bis wir ein ganzes Jahr durchgerechnet hätten. Darum nutze ich diese Visualisierungsoption immer um festzustellen, ob meine Einstiege so funktionieren, wie sie sollen. Aber sobald ich ein Jahr oder mehr testen möchte, schalte ich diese Visualisierungsoption hier aus, starte meinen Test. Und jetzt muss der MetaTrader nur dieses Diagramm hier erzeugen und es muss nicht jede Kerze einzeln, optisch berechnet werden. Das geht dann sehr schnell und man erhält innerhalb sehr kurzer Zeit ein entsprechendes Endergebnis. Auf der Reiterkarte Ergebnisse sehen wir, dass wir in diesem Fall 1341 Euro plus gemacht hätten. Das ist der Nettogewinn aus 112 Trades. Und wenn Sie hier mit der rechten Maustaste in den Report klicken und auf Bericht HTML klicken, dann lässt sich hier ein Dateiname vergeben, der für eine HTML-Datei verwendet wird. Und nach einigen Sekunden sehen wir hier unseren Strategietesterbericht. Der beinhaltet nicht nur die Ergebnisse aus unserem Test und die grafische Darstellung des Verlaufs. Es gibt auch diese Infografiken hier unten, mit weiteren nützlichen Daten. Und Sie können für jeden einzelnen, der getätigten Trades, alle Daten auf der Webseite abrufen und mit anderen Daten vergleichen. Es ist durchaus sinnvoll, solche Webseiten auch länger aufzubewahren, denn sie ermöglichen es, die Ergebnisse aus vielen 100 Trades nicht nur zu vergleichen, sondern auch langfristig zu verbessern. Man kann aber sogar noch mehr Zeit im Backtesting sparen. Und das geht, indem man hier eine Optimierung auswählt. Derzeit ist die Optimierung deaktiviert. Aber wenn wir hier klicken und die Option: alle in der Marktübersicht ausgewählten Symbole auswählen, dann wird der Test für alle diese Währungspaare, hier in diesem Fenster, durchgeführt. Ich starte das jetzt hier einmal. Man sieht, hier wurden bereits die ersten vier Währungspaare durch gehandelt. Und unter dem Fenster, Ergebnisse der Optimierung, sehen wir jetzt, wie die Ergebnisse für alle Währungspaare nach und nach errechnet werden. Noch ein paar Sekunden, dann ist unser Test beendet. Und wir haben die Ergebnisse für 14 Währungspaare vom ersten Januar 2017 bis heute. Wenn wir jetzt hier mit der rechten Maustaste in dieses Fenster klicken, dann gibt es hier unten eine Funktion, die nennt sich: Exportieren zu XML,
    8 min
  • MQL55 TUTORIAL DEUTSCH – FORTGESCHRITTENER WPR EXPERT ADVISOR
    Name der Datei: Mql5 TUTORIAL DEUTSCH – FORTGESCHRITTENER WPR EXPERT ADVISOR Das was hier so schön handelt, das ist ein Expert-Advisor für den Williams-Percent-Range Indikator. Es handelt sich dabei um einen Oszillator, der auch im MetaTrader enthalten ist. Man sieht, dass diese blaue Linie hier ständig hin und her wechselt. Es gibt einen Bereich oberhalb dieser gestrichelten Linie und einen Bereich unterhalb der anderen gestrichelten Linie. Und wann immer dieser Bereich überschritten wird, haben wir entweder einen Kauf- oder ein Verkaufssignal. Das führt dann hier oben zu Cashflow positiven Ergebnissen in diesem Fall und wir möchten uns jetzt anschauen, wie wir einen Expertadvisor in Mql5 programmieren können, der in der Lage ist diesen Williams Percent Range Oszillator automatisch zu handeln. Um das zu tun klicken wir hier oben im MetaTrader auf diesen kleinen Button oder drücken die F4-Taste, um den Meta-Editor aufzurufen. Und im Meta-Editor erstellen wir uns ein Einstiegsmodul mit dem Namen „Checkentry_WPR.mq5“ dieses Einstiegsmodul wird später dann in unserem Hauptmodul importiert und da wir unser Signal über eine Funktion Checkentry holen, erstellen wir hier im ersten Schritt erst einmal die entsprechende Funktion. Außerdem benötigen wir eine Stringvariable, denn die wird später unser Signal aufnehmen. Darum bekommt sie auch den Namen Signal, aber zunächst einmal keinen Wert zugewiesen, denn den möchten wir später noch errechnen. Außerdem benötigen wir ein Array, das wird den Namen WPR-Array für Williams Percent Range Array bekommen. Und es soll unsere Preisdaten aufnehmen. Jetzt definieren wir mit der in Mql5 eingebauten Funktion iWPR für das aktuelle Währungspaar auf dem Chart und die auf diesen Chart eingestellte Zeiteinheit, die Eigenschaften für den WPR-Expert-Advisor. Das Ergebnis kommt in diese Definition und dieser dritte Parameter hier 14, den sieht man auch hier in diesem Fenster von dem Indikator. Und wenn man hier mit der rechten Maustaste auf Eigenschaften von Williams Percent Range klickt, dann sieht man, dass der Oszillator auf 14 Kerzen berechnet wird. Darum also hier diese 14. Gut, jetzt sortieren wir die Preise von der aktuellen Kerze an abwärts. Das macht die Funktion ArraySetAsSeries für das WPR-Array, das wir hier oben erstellt haben. Jetzt nutzen wir die Funktion „CopyBuffer“, um mit unserer WPR-Definition, die wir hier erstellt haben für den ersten Buffer mit der Nummer Null und die aktuelle Kerze Null, den Wert für drei Kerzen, darum diese drei, in unserem WPR-Array zu speichern. Und nachdem wir das getan haben, erstellen wir eine Variable vom Typ double mit dem Namen WPR-Wert und der weisen wir dann den aktuellen Wert von Kerze Null aus unserem WPR-Array zu und mit NormalizeDouble und mit dieser zwei hier, sorgen wir dafür dass unsere berechneten Werte hier nur zwei Nachkommastellen haben. Mittlerweile haben wir gleich tausend Euro brutto erreicht. Allerdings befinden wir uns hier bei der Equity gerade in einem Drawdown, der ist jetzt vorbei. Aber die Ergebnisse schauen wir uns später an. Jetzt machen wir zunächst hier einmal weiter. Denn es ist jetzt an der Zeit das Kaufsignal zu berechnen. Ein Kaufsignal entsteht immer, wenn sich die Indikator-Linie hier unten in diesem Bereich zwischen der minus 80 und der minus 100 befindet. Um das zu prüfen arbeiten wir in Mql5 mit einer If-Abfrage und fragen „Ist der WPR Wert kleiner als minus 80 und gleichzeitig größer als minus 100?“. Wenn das so ist, dann haben wir ein Kaufsignal und weisen den Wert „kaufen“ unserer Variable für das Signal zu. Natürlich gibt es auch ein Verkaufssignal. Immer wenn unser errechneter Wert größer ist als minus 20 und kleiner ist als Null, dann möchten wir verkaufen. Das wäre dann in diesem Bereich hier oben. Im letzten Schritt geben wir unser Signal noch an unser Hauptmodul zurück, das wird dann hier ausgewertet und mit Check for Tick an unser Golden Goose Trading Network übergeben.
    11 min
  • MQL5 Tutorial – Fortgeschrittene Trading Bibliothek
    Das hier ist ein Expert Advisor, der diese Buy-Stops hier eröffnet, indem er eine selbst geschriebene Bibliothek benutzt. Und in dieser Bibliothek gibt es eine entsprechende Funktion, um die Trades hier auszulösen. Wir möchten uns jetzt einmal anschauen, wie man so was im MQL5 programmieren kann. Dazu klicken wir im MetaTrader hier oben auf diesen kleinen Button oder drücken die F4-Taste. Das ruft dann hier den MetaEditor auf. Und hier habe ich bereits ein Hauptmodul erstellt. Und in diesem Modul nutze ich eine Datei, die nennt sich MeineBibliothek.ex5. Eine Bibliothek können Sie sich als eine Sammlung von Funktionen vorstellen, die immer wieder genutzt werden und die man in einer Datei bereitstellt. Und aus dieser Datei importieren wir uns hier, mit diesen beiden Importbefehlen, eine Funktion um den Profit für unser Währungspaar zu berechnen und eine weitere Funktion, die den Buy-Stop öffnet. In der OnTick-Funktion prüfen wir dann, ob wir bereits geöffnete Orders haben, und falls nicht, eröffnen wir einen Buy-Stop. Und hier ermitteln wir uns den Profit, indem wir die Methode GetProfitWährungspaar aufrufen, die wir oben aus unserer Bibliothek importiert haben. Zu guter Letzt geben wir hier mit dem Comment-Befehl noch unseren Profit aus. Alles das ist nicht weltbewegend, aber es geht in diesem Fall ja auch um die Bibliothek selber. Wir möchten uns jetzt also diese Bibliothek hier erstellen. Dazu klicken wir auf Datei, Neu, Bibliothek, Weiter. Ich vergebe hier den Namen Meine Bibliothek und klicke auf Fertigstellen. Und der MetaEditor erstellt mir jetzt hier so ein leeres Gerüst und die property library hier oben muss stehen bleiben, damit wir unsere Bibliothek später kompilieren können. Der Rest kann gelöscht werden. Und damit wir uns die Buy-Stops öffnen können, benötigen wir zunächst einmal die Funktionen aus der Datei Trade.mqh. Die importieren wir mittels des Include-Befehls und danach erstellen wir uns eine Instanz von der Klasse CTrade, die erhält den Namen Trade. Jetzt erstellen wir uns hier unsere Funktion GetProfitWährungspaar. Und der Unterschied zu einer herkömmlichen Funktion ist, dass unsere Bibliotheksfunktion um diesen Begriff Export hier erweitert wird. Wenn man sich das einmal in der MQL5-Hilfe ansieht, dann sieht man, dass man damit Funktionen aus anderen Programmen aufrufen kann. Ansonsten tickt sie wie jede andere Funktion. Wir erstellen uns hier eine double-Variable für den Profit, zählen alle Positionen von PositionsTotal aus runter, bis wir bei Null angelangt sind, beschaffen uns über PositionGetSymbol für den aktuellen Zähler i das entsprechende Währungspaar. Und wenn unser Währungspaar auf dem Chart übereinstimmt mit dem Währungspaar aus der aktuellen Position, dann ermitteln wir hier uns mit PositionGetDouble den Positionsprofit, beziehungsweise den Positions-Swap. Und als Endergebnis ermitteln wir die Summe aus diesen beiden Werten. Hier wird der for loop beendet und hier formatieren wir das berechnete Ergebnis, indem wir mit NormalizeDouble für den errechneten Wert die Zahl auf zwei Nachkommastellen begrenzen. Im letzten Schritt geben wir hier den Profit für das Währungspaar zurück. Damit wir überhaupt einen Profit haben, benötigen wir noch eine weitere Funktion, die heißt OpenBuyStop. Und hier ermitteln wir den Ask-Wert über SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart, benutzen SYMBOL_ASK, weil wir den Ask-Preis benötigen, und formatieren mit NormalizeDouble die Nachkommastellen, indem wir _Digits benutzen. Das liefert uns für die entsprechenden Währungspaare entweder drei oder fünf Nachkommastellen zurück. Mit AccountInfoDouble ACCOUNT_BALANCE holen wir uns das Bruttoguthaben auf unserem Konto. Entsprechend liefert AccountInfoDouble ACCOUNT_EQUITY uns das Nettoguthaben. Und wenn Netto- und Bruttoguthaben gleich sind, dann eröffnen wir mit dieser Zeile hier einen Buy-Stop für zehn Micro-Lot einhundert Punkte über dem Ask-Preis für das aktuelle Währungspaar.
    7 min
  • MQL5 Tutorial – Deutsch Simpler Triple SMA Expert Advisor
    Diesmal schauen wir uns einen Triple SMA Expert Advisor an. Dieser Expert Advisor hier nutzt drei Simple Moving Averages um den Trend zu bestimmen und hier ein Signal für den Kauf oder den Verkauf zu generieren. Ein Verkaufssignal wir bei einem Abwärtstrend generiert. Wir sehen hier einen Simple Moving Average, der auf 10 Kerzen basiert, der liegt unter einem Moving Average der für 50 Kerzen berechnet wurde und die beiden liegen wiederum unter dem Moving Average für 100 Kerzen. Im anderen Fall, wenn es stabil nach oben geht und wir ein Kaufen-Signal sehen, dann liegt der Moving Average für 10 Kerzen oben, der Moving Average für 50 Kerzen in der Mitte und der Moving Average für 100 Kerzen ist unten. Wie können wir uns jetzt einen Expert Advisor erstellen der auf Grund dieser 3 gleitenden Durchschnitte das entsprechende Signal berechnet? Um das zu tun klicken Sie im Metatrader bitte hier oben auf diesen kleinen Button 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 – Wir vergeben hier den Namen „SimplerTripleSMA“ – klicken auf Weiter – Weiter – Fertigstellen. Und jetzt kann alles gelöscht werden was sich oberhalb der OnTick Funktion befindet und auch die beiden Kommentarzeilen kommen weg und das erste was wir in der OnTickFunktion tun ist uns eine leere Chart Ausgabe zu generieren, das machen wir mit dem „Comment“ Befehl. Danach benötigen wir eine String Variable, die bekommt von uns den Namen „Signal“ und wir weisen zunächst einmal keinen Wert zu. Später bekommt diese Variable hier den Wert für die Berechnung zugewiesen. Da wir 3 gleitende Durchschnitte hier berechnen, benötigen wir auch erst einmal 3 Arrays, die sollen dann jeweils mehrere Preise aufnehmen. Unsere Arrays sind vom Typ double, damit sie auch Fließkommazahlen aufnehmen können und bekommen den Namen „SMA10Array“, „SMA50Array“ und „SMA100Array“. Zunächst einmal definieren wir die Eigenschaften für den ersten SMA, dieser wird auf 10 Kerzen berechnet und für unsere SMA10Definition nutzen wir die Funktion „iMA“, für das aktuelle Chart und die auf dem Chart eingestellte Zeiteinheit. Wir berechnen für 10 Kerzen, dieser Parameter hier steht für eine Verschiebung nach rechts oder links, das brauchen wir nicht, darum verwenden wir hier eine 0. Mit „MODE_SMA“ berechnen wir einen einfachen gleitenden Durchschnitt, „MODE_EMA“ würde zum Beispiel einen exponentiellen gleitenden Durchschnitt berechnen. Und wir verwenden „PRICE_CLOSE“, das liefert uns den Schlusskurs, auch hier sieht man wieder die niedrige Qualität der deutschen Übersetzung in der MQL5-Hilfe, denn sowohl der Schlusspreis als auch der Eröffnungspreis werden beide hier mit Eröffnungspreis übersetzt und das führt oft zu großer Verwirrung. Gut, wo waren wir? Natürlich benötigen wir das auch noch für unsere beiden anderen Arrays. Für unseren 50er SMA und für unseren 100er SMA, das sieht ziemlich gleich aus, nur die Anzahl der Kerzen auf die der SMA berechnet wird, wird hier entsprechend angepasst. Jetzt verwenden wir „ArraySetAsSeries“ um alle 3 Arrays, von der aktuellen Kerze an abwärts zu sortieren und mit der Funktion „CopyBuffer“ füllen wir jedes unserer 3 Arrays, für die jeweilige Definition, die wir hier oben getroffen haben, für jeweils einen Buffer, also eine Linie, von der aktuellen Kerze an und berechnen für die letzten 10 Kerzen den Wert der dann im jeweiligen Array gespeichert wird. Gut, jetzt möchten wir das Kaufsignal berechnen. Wenn der SMA10Array für die aktuelle Kerze 0 größer ist als der SMA50Array für die aktuelle Kerze 0 und wenn der SMA50Array für Kerze 0 größer ist als der SMA100Array für Kerze 0, dann haben wir hier ein Kaufsignal. Und um unser Verkaufssignal zu berechnen prüfen wir ob der SMA10Array für die aktuelle Kerze kleiner ist als der SMA50Array für die aktuelle Kerze und ob der SMA50Array für Kerze 0 kleiner ist als der SMA100Array für die gleiche Kerze.
    8 min
  • MQL5 Tutorial Deutsch – Simpler Envelopes Expert Advisor
    Mit MQL5 und Metatrader5 kann man den Envelopes Indikator in weniger als 5 Minuten für einen Trading Robot programmieren, mit dem man automatisch traden kann. Die MQL5 Funktion iEnvelopes kommt mit dem Metatrader5, damit programmieren wir in diesem Video einen Envelopes Expert Advisor für den Metatrader5… Diesmal sehen wir uns den sogenannten “Envelopes Indicator” an. Envelope bedeutet Umschlag und wenn man ein wenig hineinzoomt, dann kann man sehen, dass auf diesem Chart der Kurs zum überwiegenden Teil hier innerhalb dieser beiden Linien verläuft. Die Idee ist jetzt, bei einer Überschreitung einer dieser Linien in die entsprechende Richtung einen Trade zu eröffnen. Beispielsweise sehen wir hier, dass die Kerzen oberhalb des oberen Bandes geschlossen wurden. Wir würden also jetzt einen Short-Trade eröffnen und hätten auf dieser Strecke hier ganz ordentlich Profit gemacht. Außerdem ermöglicht uns der Envelope-Indicator uns in den langweiligen Seitwärtsphasen ohne richtige Trends herauszuhalten. Wir würden jetzt darauf warten, dass eines dieser Bänder hier überschritten wird und dann einen Trade in die entsprechende Richtung eröffnen. Der sogenannte Moving Average Envelope Indicator ist ein Instrument für die technische Analyse und ähnelt den Bollinger Bändern. Genau wie bei den Bollinger Bändern gibt es die eine Fraktion die sagt, dass ein Überschreiten des oberen Bandes ein Signal für einen starken Aufwärtstrend ist und die andere Fraktion hält das Überschreiten des oberen Bandes für ein Signal dafür, dass wir eine Situation des Überverkaufs haben und der Trend sich umkehren wird nach unten. Sie können das natürlich selbst entscheiden, aber wenn wir uns das hier ansehen, oder diesen Bereich hier, dann würde ich eher glauben, dass sich der Kurs häufiger vom einen Band zum anderen Band bewegt. Wie können wir jetzt einen Expert Advisor für diesen Indikator hier erstellen? Zunächst einmal klicken wir hier oben auf diesen kleinen Knopf oder drücken die F4 Taste. Das ruft hier den MetaEditor auf und dort klicken wir auf Datei – Neu – Expert Advisor aus Vorlage – weiter, vergeben den Namen SimplerEnvelopesEA, klicken auf Weiter – Weiter – Fertig stellen. Jetzt löschen wir alles oberhalb der OnTick-Funktion und entfernen diese beiden Kommentarzeilen hier und im ersten Schritt erstellen wir ein Array für Preisdaten. Das geht mit der Funktion MqlRates und wir nutzen ein Array mit dem Namen Preisinformationen. Danach sortieren wir die Preise abwärts von der aktuellen Kerze, das macht der Befehl ArraySetAsSeries und dann kopieren wir unsere Preisdaten in das Array, indem wir die Funktion CopyRates benutzen. In diesem Fall möchten wir die Preise für das aktuell ausgewählte Währungspaar auf dem Chart und die auf dem Chart eingestellte Zeiteinheit – wie beispielsweise das Minutenchart – von der aktuellen Kerze angefangen, für alle Kerzen die auf dem Chart zu sehen sind, die Preise in unser Array Preisinformationen kopieren, das wir hier oben definiert haben. Jetzt wo wir unsere Preisdaten von den Kerzen haben, brauchen wir nochmal zwei Arrays für die Expert Advisor Preisdaten. Wir brauchen für das obere und für das untere Band jeweils einen Array, denn unser Indikator hat zwei Linien. Und auch hier sortieren wir die Preisdaten absteigend von der aktuellen Kerze für unsere beiden Bänder. Und jetzt definieren wir die Eigenschaften für unseren EnvelopesEA. Dazu nutzen wir die Funktion iEnvelopes, die eingebaut ist in MQL5. Auch wieder für das aktuell eingestellte Währungspaar und die auf dem Chart ausgewählte Zeiteinheit. Hier wählen wir vierzehn Kerzen, denn wenn man hier über einfügen – Indikatoren – Tendenz – Envelopes diesen Indikator einfügt und sich die Eigenschaften ansieht, dann haben wir auch hier vierzehn Kerzen. Wir möchten keine Verschiebung nach rechts oder links, nutzen den SMA, also den Simple Moving Average Modus, möchten unseren Wert gerne auf die Schlusskurse der Kerzen berechnen lassen und das hier am Ende ist die Deviatio...
    9 min
  • MQL5 Tutorial Deutsch – Fortgeschrittener MACD Expert Advisor
    Diesmal sehen wir uns den MacD an, derzeit handeln wir den MacD hier in unserem Forex Trading Framework. Das Framework können Sie sich im Prinzip wie eine Tradeverwaltung vorstellen, die in der Lage ist mehrere Positionen zu verwalten und wenn wir das hier einmal beschleunigen und uns hier unten die Verlaufskurve anzeigen lassen, dann sehen wir dass das durchaus funktioniert. Wenn wir mit maximaler Geschwindigkeit traden, dann sehen wir hier sogar dass das ganz gut funktioniert. Wie können wir jetzt einen solchen MacD Einstieg für unser Trading Framework erstellen? Um das zu tun klicken wir hier oben auf den kleinen Button oder drücken die F4-Taste im Metatrader, das ruft dann hier den Metaeditor auf und hier klicken wir auf Datei – Neu – Expert Advisor aus Vorlage – Weiter – Ich nenne unser Modul an der Stelle „CheckEntry_MacD“ – klicke auf Weiter – Weiter und Fertig stellen. In unserem neuen Modul können wir diesmal komplett alles löschen denn dies ist kein eigenständig lauffähiges Programm sondern es wird an dieser Stelle vom Trading Framework aufgerufen. Ein Trading Framework können Sie sich als Verwaltungsprogramm für offene Positionen vorstellen. Hier werden diverse Funktionen importiert, die hier in einer vorher erstellten Bibliothek bereits programmiert wurden. Das einzige was Sie noch in diesem Trading Framework machen müssen ist sich für einen Einstieg zu entscheiden und dann wird hier unten in der OnTick Funktion eine String Variable mit dem Namen „Signal“ erzeugt und die ruft dann hier die CheckEntry Funktion auf. Also erstellen wir jetzt hier eine CheckEntry Funktion und in dieser Funktion benötigen wir zunächst einmal eine String Variable mit dem Namen „signal“. Die bekommt zunächst einmal einen leeren Wert zugewiesen. Außerdem benötigen wir ein Array für unsere Preisdaten, das ist vom Typ double und bekommt den Namen „myPriceArray“ und im nächsten Schritt definieren wir uns die Eigenschaften für den MacD EA. Das geht mit der Funktion „iMACD“, für das aktuelle Symbol und die aktuell auf dem Chart eingestellte Zeiteinheit und diese drei Zahlen: 12, 26, 9 und PRICE_CLOSE, finden Sie auch wieder wenn Sie in ihrem Metatrader auf Einfügen – Indikatoren – Oszillatoren – MACD klicken. Dann sehen wir hier, es gibt einen schnellen EMA mit dem Wert 12, einen langsamen EMA mit dem Wert 26 und einen MACD SMA mit dem Wert 9. Das Ganze wird auf den Close Preis angewendet, deswegen nutzen wir hier auch „PRICE_CLOSE“. Danach sortieren wir unser Array von der aktuellen Kerze abwärts, das geht mit der Funktion „ArraySetAsSeries“, die wir hier auf unser Price Array anwenden, welches wir uns hier oben erstellt haben. Und mit „CopyBuffer“ kopieren wir die MacD Definition aus dieser Zeile, für den MacD Wert aus dem ersten Buffer, von der Kerze null, für drei Kerzen und speichern das Ergebnis im Array „MyPriceArray“. Danach berechnen wir uns den Wert für die aktuelle Kerze. Aus unserem Price Array holen wir uns also die Kerze Null und speichern das Ergebnis in einer float Variable mit dem Namen „MacDValue“. Und wenn unser Wert größer ist als Null, dann möchten wir verkaufen, das ermitteln wir mit dem Ausdruck „if (MacDValue>0)“ und wenn das so ist setzen wir unser Signal auf Sell. Im Gegenzug, wenn unser MacD Value kleiner ist als die Zahl Null, dann möchten wir kaufen. Und im letzten Schritt liefern wir unser Signal noch an das Hauptmodul zurück. Wir würden also hier jetzt den Wert zuweisen und rufen unsere Tradeverwaltung aus dem Framework über die Funktion „CheckForTick“ mit dem von uns ermittelten Signalwert für Buy oder Sell auf. Falls Sie selbst kein Framework, also keine Tradeverwaltung haben, dann können Sie über den Kurs auf meiner Webseite lernen wie man sich eine erstellt und demnächst biete ich auch mein Framework an. Aber in diesem kurzen Video geht es nur um den Einstieg für den MacD. Speichern wir also alle Datein, kompilieren hier nochmal unser Framework, das hat hier ohne Fehler funktioniert,
    8 min
  • MQL5 Tutorial Deutsch – Simpler Order Cancels Order Expert Advisor
    Heute möchten wir uns mit einem Expert Advisor beschäftigen der oberhalb und unterhalb des aktuellen Kurses eine pending Order in Form eines Buy Stop oder eines Sell Stop erstellt und sobald hier unser Preis eine der beiden Linien erreicht, wird aus der Order eine Position erstellt und die jeweils andere Order soll gelöscht werden. Diese Technik nennt man „Order cancels Order“. Wir beschleunigen das hier mal ein wenig um zu zeigen wie das funktioniert. Und jetzt ist hier unten eine Buy Position erstellt worden und die offene Order ist verschwunden. Wie können wir jetzt einen Expert Advisor erstellen der genau diese Funktionalität bereit stellt? Um das zu tun klicken wir hier oben auf den kleinen Button 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 „SimplerCancelOrderEA“ – klicke auf Weiter – Weiter – Fertigstellen. Jetzt können wir alles oberhalb der OnTick Funktion löschen und auch die Kommentarzeilen werden entfernt. Damit wir etwas haben, was wir handeln können, importieren wir zunächst einmal die Datei „Trade.mqh“ und erstellen uns, aus der dort enthaltenen Klasse CTrade, eine Instanz mit dem Namen „trade“. In der OnTick Funktion möchten wir zunächst einmal die Konto Balance ermitteln. Das machen wir mit „AccountInfoDouble“ und dafür benutzen wir die Konstante „ACCOUNT_BALANCE“. Ähnlich wird die Equity ermittelt, auch hier nutzen wir „AccountInfoDouble“ und die Konstante „ACCOUNT_EQUITY“. Die Variable Balance nimmt also unser Brutto Guthaben auf und die Variable Equity enthält unser nicht gebundenes Netto Guthaben, nach Abzug aller offenen Trades und Kosten. Für Long Trades benötigen wir den Ask Preis, der wird mit „SymbolInfoDouble“ für das aktuelle Chart und die Konstante „SYMBOL_ASK“ ermittelt. Die Funktion „NormalizeDouble“ in Verbindung mit „_Digits“ sorgt dafür, dass wir die richtige Anzahl von Nachkommastellen ermitteln, denn es gibt Währungspaare mit 3 und andere mit 5 Nachkommastellen. Ähnlich ermitteln wir den Bid Preis, allerdings nutzen wir hier „SYMBOL_BID“. Den Bid Preis benötigen wir für Short Trades. Wir möchten Test Orders eröffnen wenn keine Positionen und auch keine Order geöffnet sind, das ist der Fall wenn die Funktion „PositionsTotal“ und „OrdersTotal“ jeweils den Wert 0 ergeben. Und wenn das der Fall ist, dann eröffnen wir mit „trade.BuyStop“ und „trade.SellStop“ jeweils eine Order von 10 Microlot. Die Long Order wird 100 Punkte über dem derzeitigen Ask Preis liegen und die Short Order liegt 100 Punkte unterhalb des Bid Preises. Das gilt jeweils für das aktuelle Chart, wir haben keinen Stop Loss definiert und unser Take Profit soll für die Long Order 300 Punkte oberhalb des derzeitigen Ask Preises liegen und genauso gilt das für den Bid Preis, da liegt sie 300 Punkte darunter. Diese Konstante hier „ORDER_TIME_GTC“ wird benutzt wenn die Order solange gültig sein soll bis wir sie selbst löschen. In Deutsch ist das etwas unglücklich mit „Warteorder vor der Ablehnung“ übersetzt. Andernfalls würden wir hier und hier ein Ablaufdatum setzen, das wir aber in diesem Fall nicht nutzen und auch der letzte Parameter wird mit einer 0 besetzt, denn für dieses einfache Beispiel benötigen wir keinen Kommentar. Und wenn wir gerade traden, wenn also unser Brutto Guthaben ungleich ist zu unserem Netto Guthaben, dann rufen wir die noch zu erstellende Funktion „CancelOrder“ auf, die unsere offene Order löschen soll. Dazu erstellen wir hier eine neue Funktion vom Typ Void, da wir keine Rückgabewerte benötigen und diese Funktion bekommt den Namen „CancelOrder“. Das erste was wir in der Funktion tun, ist mit einer for-Schleife über den Zähler i, von der, mit OrdersTotal ermittelten Gesamtanzahl aller offenen Orders, abzüglich 1, solange wie noch offene Order bestehen, den Zähler herunter zu zählen und für den Zähler der jeweiligen Position mit OrderGetTicket,
    8 min
  • MQL5 Tutorial Deutsch – Fortgeschrittener Break Even Stop
    Heute möchten wir uns einmal einen Break Even Stop ansehen. Das bedeutet, sobald hier der Kaufpreis um 200 Punkte nach oben überschritten wird, wird der Stop auf den Kaufpreis gesetzt damit wir keine Verlust mehr machen. In diesem Fall warten wir jetzt hier bis die 200 Punkte erreicht sind, dann dürfte diese grüne Linie hier rot werden und sich vom Buypreis in den aktuellen Stop verwandeln, das ist jetzt hier gerade geschehen. Und ab hier kann man dann den Trade laufen lassen oder den Stop von Hand nachziehen. Wie kann man jetzt einen solchen Break Even Stop programmieren? Um das zu tun, klicken wir im Metatrader hier oben auf den kleinen Button oder drücken die F4-Taste. Das startet dann hier den Metaeditor und hier wählen wir, Datei – Neu – Expert Advisor aus Vorlage – Weiter – Ich vergebe hier einmal den Namen FortgeschrittenerBreakEvenStop – klicke auf Weiter – Weiter – Fertigstellen. Alles oberhalb der OnTick Funktion hier kann jetzt gelöscht werden und danach entfernen wir die zwei Kommentarzeilen. Damit wir etwas traden können, was einen Break Even Stop nachzieht, importieren wir erst einmal die Datei Trade.mqh. Es handelt sich hierbei um eine interne Bibliothek von MQL5 die Verwaltungs- und Öffnungs- und Schliess-Funktionen für Trades enthält. Und jetzt erstellen wir uns von Ctrade eine Instanz mit dem Namen trade. Hier steht es auch, Klasse CTrade: Ctrade ist eine Klasse für den vereinfachten Zugriff auf die Handelsfunktionen. Da wir uns eine Buyposition eröffnen möchten, holen wir uns zunächst einmal den Askpreis. Das machen wir mit der Funktion SymbolInfoDouble, für das aktuelle Währungspaar und wir nutzen die Konstante SYMBOL_ASK um den Askpreis zu ermitteln. Wenn man hier F1 drückt, dann sieht man dass man sich mit SYMBOL_BID, den Bidpreis, also das beste Verkaufsangebot, holen kann. Das würden wir brauchen wenn wir einen Shorttrade eröffnen möchten. Mit NormalizeDouble und _Digits stellen wir sicher, dass wir die richtige Anzahl von Nachkommastellen erhalten, denn es gibt Währungspaare mit drei oder mit fünf Nachkommastellen. Wenn keine Positionen geöffnet sind, wenn also die Funktion PositionsTotal kleiner eins ist, dann eröffnen wir eine Buyposition zu Testzwecken, deswegen bitte nicht auf einem Echtgeldkonto handeln. Wir machen das in diesem Falle mit Trade.Buy, unsere Positionsgröße beträgt zehn Microlot, wir handeln das auf dem aktuellen Chart, kaufen zum Askpreis, der initiale Stoploss wird 1000 Punkte unter unserem Askpreis gesetzt und unser Takeprofit liegt 500 Punkte darüber. Der letzte Parameter hier wäre ein Kommentar, den benötigen wir nicht, also nutzen wir hier NULL. Nachdem wir jetzt eine Position eröffnet haben rufen wir eine Funktion auf die den Break Even Stop setzen soll, die wird den Namen CheckBreakEvenStop haben und bekommt als Parameter den Askpreis, den wir hier oben ermittelt haben. Unsere neue Funktion ist vom Typ void, hat also keinen Rückgabewert, bekommt den Namen CheckBreakEvenStop und benötigt den Askpreis als übergebenen Parameter. Im ersten Schritt zählen wir hier alle offenen Positionen durch, das machen wir mit dieser for-Schleife hier, unser Zähler bekommt den Namen i, zählt von der Gesamtanzahl der Positionen minus 1 runter, solange wie i noch grösser ist als null, also wie wir noch offene Positionen haben wird von i eins abgezogen und die Schleife geht von vorne los. Und in dieser for-Schleife werden wir mit PositionGetSymbol für unseren Zähler das Währungspaar für die aktuelle Position ermitteln. Wenn das Währungspaar auf dem Chart mit dem Währungspaar für unsere aktuelle Position identisch ist, if, _Symbol==Symbol, dann ermitteln wir die aktuelle Ticket Nummer für die Position. Das geht mit PositionGetInteger und wir benutzen die Konstante POSITION_TICKET. Danach berechnen wir den Eröffnungspreis der Position, das geht mit PositionGetDouble und wir nutzen POSITION_PRICE_OPEN. Die beiden ermittelten Werte werden in der Variable PositionTicket und PositionBuyPrice gespeich...
    8 min
  • MQL5 Tutorial Deutsch – Simpler RVI Trend Trading Robot
    Das hier ist der RVI Indikator, der ist im Metatrader enthalten, wir haben hier einen kleinen Aufwärtstrend und das zeigt uns unser Indikator hier auch an. Und in dem Moment wo sich hier oben eine Korrektur im Aufwärtstrend entwickelt, wird das hier ebenfalls angezeigt. Liegen beide Linien unterhalb dieser gestrichelte Linie hier, dann befinden wir uns in einem Abwärtstrend und sobald hier eine Überkreuzung stattfindet, deutet das auf eine Korrektur im Abwärtstrend hin. Dieser RVI Indikator lässt es also zu, dass man immer ziemlich genau erkennen kann, in was für einer aktuellen Trendphase man sich befindet. Wie können wir jetzt mit MQL5 einen Expert Advisor erstellen der den RVI Indikator nutzt? Dazu klicken wir Metatrader hier oben auf diesen kleinen Knopf oder drücken die F4 Taste, das ruft dann hier den Meta Editor auf und dort klicken wir auf Datei – Neu – Expert Advisor aus Vorlage – Weiter. Ich vergebe hier mal den Namen simpler RVI, klicke auf Weiter – Weiter – Fertigstellen und jetzt kann alles oberhalb dieser OnTick Funktion gelöscht werden, genau wie die beiden Kommentarzeilen. Im ersten Schritt beginnen wir mit einer leeren Ausgabe auf unserem Chart und da unser Indikator in diesem Fall mit zwei Linien arbeitet die einen unterschiedlichen Wert haben, benötigen wir auch für dieses Beispiel zwei unterschiedliche PreiseArrays. Die erhalten den Namen Preisarray 0 und Preisarray 1 und jetzt definieren wir die Eigenschaften für den RVI Expert Advisor, indem wir die MQL5 Funktion iRVI aufrufen, und zwar für das aktuelle Chart und die auf dem Chart aktuell dargestellte Zeiteinheit. Unsere Berechnung soll aufgrund der letzten 10 Kerzen erfolgen, denn das ist doch das, was man bekommt, wenn man auf einfügen – Indikatoren – Oszillatoren – Relative Vigor Index klickt, dann sehen wir hier unsere 10 Kerzen für den RVI. Im nächsten Schritt sortieren wir die Preise abwärts von der aktuellen Kerze, das machen wir sowohl für unser PreisArray 0, als auch für unser PreisArray 1. Jetzt nutzen wir copy Buffer für unsere erste und für unsere zweite Indikator Linie, um aufgrund unserer iRVI Definition die wir hier oben getroffen haben, von der aktuellen Kerze für 3 Kerzen die Preis Daten in unserem PreisArray 0 bzw. für die andere Indikatorlinie unserem PreisArray 1 abzuspeichern. Und jetzt berechnen wir uns den Expert Advisor für die aktuelle Kerze aus dem Preisarray 0, holen wir von der aktuellen Kerze 0 den RVI Wert 0 mit drei Nachkommastellen und aus dem PreisArray 1 machen wir das gleiche, aber diesmal holen wir uns den RVI Wert 1 für unsere zweite Indikator Linie hier. Gut, kommen wir zur Chart Ausgabe. Zunächst berechnen wir hier die Werte für unseren Trend und wenn unser RVI Wert 0 kleiner ist als der RVI Wert 1 und der RVI Wert 1 unterhalb unserer gestrichelte 0 Linie liegt, also wir uns hier in diesem unteren Bereich befinden, dann haben wir einen Abwärtstrend. Im anderen Fall, wenn der RVI Wert 0 größer ist als der Wert 1 und sich der RVI Wert 0 oberhalb von unserer Nulllinie befindet, dann haben wir einen Aufwärtstrend und geben das mit Comment auf unserem Chart aus. Für die Korrekturen gilt in etwa die gleiche Formel, allerdings sind hier die Größer und Kleiner Zeichen umgekehrt, denn was oberhalb der gestrichelten Linie als Aufwärtstrend erkannt wird, wäre unterhalb der gestrichelten Linie hier eine Korrektur. Gut, das war es mit unserem Expert Advisor, wir klicken also jetzt hier auf kompilieren oder drücken die F7 Taste und dann sollte der Compiler keine Fehler und keine Warnungen auswerfen. Wenn das alles geklappt hat, klicken wir hier oben auf den kleinen Button oder drücken die F4 Taste um zurückzukehren in unserem Metatrader. Im MetaTrader klicken Sie auf Ansicht – Strategietester oder drücken Steuerung+R, dann wird hier unten dieses Strategietester Panel angezeigt und hier wählen wir die Datei simplerRVI.ex5 aus, setzen den Haken für die Visualisierung hier und starten unseren Test.
    6 min

About MQL5 Tutorial - Automatisch traden mit Metatrader5

From the publisher's feed

Metatrader5 MQL5 Expert Advisor Tutorial