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 – FORTGESCHRITTENER STOCHASTIC EA
    In diesem Video schauen wir uns einmal den StochasticIndikator an. Der Stochastic Indikator ist ein Oszillator, man sieht hier diese beiden bunten Linien, die sich zwischen zwei Extremen hin und her bewegen. Hier oben werden Kaufen und Verkaufen Signale erzeugt. Immer, wenn sich die beiden Linien oberhalb der gestrichelten Linie kreuzen, dann erzeugt das ein Verkaufen Signal. Wenn die Überkreuzung unterhalb der gestrichelten unteren Linie stattfindet, dann hätten wir ein Kaufen Signal. Wir handeln hier den Stochastic Indikator automatisch im ForexTradingFramework, das ist eine Sammlung von Funktionen, die das Öffnen und die Verwaltung von Trades automatisch durchführen kann. Wir wollen uns jetzt einmal anschauen: Wie kann man einen Stochastik Indikator in einem Expert Advisor für das Einstiegssignal programmieren. Um das zu tun, klicken Sie bitte auf diesen kleinen Button hier oder drücken F4 im Metatrader. Dann sollten Sie dieses Metaeditor Fenster sehen, hier wählen wir Datei, Neu, Expert Advisor aus Vorlage, Weiter, ich vergebe hier den Namen CheckEntry_Stochastic, denn das ist das Modul, das ich gleich im Framework aufrufen möchte, klicke auf Weiter, Weiter, und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden, das gilt auch für die zwei Kommentarzeilen. Statt der OnTick Funktion möchten wir in diesem Fall eine String Funktion mit dem Namen CheckEntry erstellen. Dort benötigen wir zunächst einmal einen String für das Signal, der bekommt auch den Namen signal, aber wir weisen zunächst noch keinen Wert zu, denn der wird noch berechnet. Da wir zwei Linien haben, brauchen wir auch jeweils ein Array, jeweils für die K und die D Linie. Diese beiden Arrays sortieren wir jetzt mit ArraySetAsSeries von der aktuellen Kerze an abwärts und danach definieren wir unseren Stochastic nach Standard. Dazu nutzen wir die Funktion iStochastic. Die benötigt hier einige Parameter, der erste Parameter ist das Chart, das wir nutzen. Der zweite Parameter steht für die auf dem Chart ausgewählte Zeiteinheit, diese restlichen Parameter 5, 3, 3, MODE_SMA, STO_LOWHIGH bekommt man auch zu sehen, wenn man auf Einfügen, Indikatoren, Oszillatoren, Stochastic Oszillator klickt. Unsere K Periode ist 5, unsere D Periode ist 3, die Verlangsamung steht ebenfalls auf 3. 5, 3, 3, das sind die ersten Parameter. Unsere Methode steht auf Simple für simple moving average und für den Preisbereich wird der Wert Low/High genutzt, das sind diese beiden Parameter hier: MODE_SMA und STO_LOWHIGH. Jetzt füllen wir unsere beiden Arrays, das K Array für Buffer 0 und das D Array für Buffer 1. Jeweils ab der aktuellen Kerze 0 für 3 Kerzen im K Array beziehungsweise im D Array für jeweils eine Linie. Nun berechnen wir den jeweiligen Wert für die Kerze 0, indem wir auf Kerze 0 in unserem K Array zugreifen und das Ergebnis einer Variablen mit dem K Wert 0 zuweisen, das gleiche machen wir hier mit dem D Wert und danach nochmal jeweils dieselbe Berechnung für die Kerze davor, also für Kerze 1. Jetzt können wir die Werte für Kerze 0 und Kerze 1 vergleichen und berechnen, ob wir eine Überkreuzung haben. Wenn beispielsweise beide Werte unter 20 sind, also der K Wert 0 ist kleiner als 20 und der D Wert 0 ist ebenfalls kleiner als 20, dann befinden wir uns unterhalb der gestrichelten unteren Linie. Jetzt möchten wir wissen, ob der K Wert den D Wert von unten überschneidet. Wenn also der K Wert für die Kerze 0 größer ist, als der aktuelle D Wert, und der K Wert für die letzte Kerze noch kleiner war, als der D Wert von der letzten Kerze, dann haben wir eine Überkreuzung und möchten unserem Signal den Wert Kaufen zuweisen. Im anderen Fall haben wir ein Verkaufssignal, wenn beide Werte über 80 sind, also der aktuelle K Wert und der aktuelle D Wert größer sind als 80. Wenn der K Wert den D Wert dann von oben überschneidet, wenn der aktuelle K Wert also kleiner ist, als der D Wert und der K Wert bei der Kerze davor noch größer war, als der D Wert,
    7 min
  • MQL5 TUTORIAL DEUTSCH – FORTGESCHRITTENER IAD EXPERT ADVISOR
    Diesmal möchten wir uns den Accumulation Distribution Oszillator anschauen, das ist diese schnell zuckende Oszillatorlinie im unteren Fensterteil. Wir bremsen unseren Test mal etwas, dann kann man hier sehen, dass diese hellblaue Linie von der einen zur anderen Seite wandert. Wir möchten uns in diesem Video einmal anschauen, wir man den Accumulation Distribution Indikator automatisiert handeln kann. Um das zu tun, 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 klicken wir auf Datei, Neu. Expert Advisor aus Vorlage, Weiter, ich vergebe hier einmal den Namen CheckEntry_IAD, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion gelöscht werden, auch die zwei Kommentarzeilen werden entfernt. Aus der OnTick Funktion machen wir in unserem Fall eine CheckEntry Funktion, die einen String, also eine Textkette zurückliefern kann. Im ersten Schritt erstellen wir hier eine String Variable für unser Signal, die bekommt auch den Namen signal und ist vom Typ String. Den Wert weisen wir noch nicht zu, denn den möchten wir gleich ermitteln, dazu erstellen wir uns zunächst ein Array für die Preisdaten. Das ist vom Typ Double, damit es auch Nachkommastellen aufnehmen kann und bekommt den Namen myPriceArray. Dieses Array wird jetzt im nächsten Schritt mit dem Befehl ArraySetAsSeries abwärts von der aktuellen Kerze an sortiert. Jetzt können wir mit der Funktion iAD eine entsprechende Definition für unseren IAD Expert Advisor erstellen. Die integrierte MQL5 Funktion iAD benötigt mehrere Parameter. Als ersten Parameter übergeben wir das Chart Symbol. Der zweite Parameter ist die auf dem Chart eingestellte Zeiteinheit und der dritte Parameter ist der Volumentyp für die Berechnung. In unserem Fall nutzen wir VOLUME_TICK. Es gibt das Tickvolumen und das Handelsvolumen, wir benötigen das Tickvolumen. Damit unser Expert Advisor auch mit Daten handeln kann, nutzen wir den Befehl CopyBuffer, um anhand der IAD-Definition, die wir hier oben getroffen haben, für unser Preis Array für den Buffer null, das ist die eine Linie, die hier gezeichnet wird. Von der aktuellen Kerze null für drei Kerzen unsere Preisdaten in unserem Array zu speichern. Jetzt können wir den Wert für die aktuelle Kerze berechnen, indem wir einfach auf Kerze null in unserem Preis Array zugreifen. Kerze null ist immer die aktuelle Kerze, die sich hier im Aufbau befindet. Das hier wäre Kerze eins, danach kommt Kerze zwei und so weiter. Wenn der Wert unterhalb von null liegt, dann ist unser IAD Wert kleiner als null und wir möchten gerne kaufen, also weisen wir das entsprechende Signal unserer Variable hier zu. Im anderen Fall, wenn der Wert über null ist, der IAD Wert wäre in diesem Fall größer als der Wert null, dann weisen wir unserer Signalvariable den Wert Verkaufen zu. Im letzten Schritt übergeben wir mit der Funktion return unser Signal zurück an das Hauptmodul, speichern unsere Datei, in meinem Fall ist das Hauptmodul das ForexTradingFramework. Hier importiere ich die ausgewählte Datei indem ich den include Befehl nutze. Dieses ForextradingFramework hier ist eine Sammlung von Funktionen, um Funktionen und Positionen zu öffnen und göffnete Positionen zu verwalten. Sie können aber auch Ihr eigenes Hauptmodul nutzen oder sich das ForexTradingFramework von meiner Website herunterladen. Dieses Hauptmodul hier muss jetzt mithilfe dieses Buttons hier oder über die F7 Taste kompiliert werden. Das hat ohne Fehler und Warnungen funktioniert und in dem Fall kann ich hier oben klicken oder F4 drücken, um in den Metatrader zurückzukehren. Im Metatrader klicken wir auf Ansicht und Strategietester oder drücken die Tastenkombination Strg und R. Hier wähle ich mein Hauptmodul aus, in meinem Fall das ForexTradingframework, markiere hier die Option für die Visualisierung und starte meinen Test. Wie man sieht wurde hier bereits der erste Trade eröffnet.
    7 min
  • MQL5-TUTORIAL-DEUTSCH-SIMPLES-MODUL-SYSTEM
    In diesem kurzen Video geht es um den modularen Aufbau von einem System. Wir haben hier beispielsweise gerade den MACD Einstieg, der wird aus einer externen Datei importiert und zeigt hier oben Kaufen oder Verkaufen Signale an. Immer wenn diese Balken hier unterhalb der gestrichelten Linie gebildet werden, dann ist es ein Kaufen Signal. Wenn sich die Balken oberhalb der gestrichelten Linie bewegen, dann ist es ein Verkaufen Signal. Jetzt stoppen wir den Expert Advisor einmal, starten einen neuen Test mit der gleichen Datei und diesmal wird hier der Accelerator Einstieg getradet. Wir möchten uns jetzt anschauen, wie man in MQL5 einen Expert Advisor erstellen kann, der in der Lage ist, solche Einstiege aus externen Modulen zu lesen. Um das zu tun, klicken Sie bitte im Metatrader auf diesen kleinen Button hier oder drücken die F4 Taste. Das ruft dann hier den Metaeditor auf und hier klicken wir auf Datei, Neu, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier mal den Namen SimplesModul, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser onTick Funktion hier entfernt werden, auch die zwei Kommentarzeilen werden gelöscht. Vor unserer OnTick Funktion, die immer aufgerufen wird, wenn eine Preisänderung auf dem Chart stattfindet, benötigen wir noch eine Funktion zum Inkludieren, also zum Einbinden, einer externen Datei, das geht hier mit #include. Damit importieren wir den Inhalt einer Datei, die CheckEntry_MACD.mq5 heißt, das hier ist diese Datei. Sie wird in einem anderen Video behandelt und liefert ein Einstiegssignal, das möchten wir in der OnTick Funktion aus der externen Datei laden. Dazu erzeugen wir hier eine String Variable mit dem Namen signal, die wir hier in der inkludierten Datei finden, ein Signal ermittelt und in diesem einfachen Beispiel begnügen wir uns mit der Chart Ausgabe des Signals. Wir geben also hier in der Comment Funktion signal und das von uns ermittelte Signal aus. Das war´s auch schon: Wenn wir hier auf Kompilieren klicken, dann sollte das nun ohne Fehler und Warnungen über die Bühne gehen. Natürlich braucht man die Datei, die importiert wird. Diese sollte im gleichen Verzeichnis liegen, wie in diesem Fall, oder man muss explizit ein Verzeichnis angeben. Wenn der Kompiliervorgang funktioniert hat, dann können wir hier oben klicken oder F4 drücken, um in den Metatrader zurückzukehren. Im Metatrader selbst klicke ich auf Ansicht, Strategietester oder drücke die Tastenkombination Strg und R. Das ruft dann hier den Strategietester auf und hier wähle ich die Datei SimplesModul.ex5 aus und starte einen Test. Jetzt wird hier der MACD gezeichnet und ich bekomme Kaufen und Verkaufen Signale, die auf diesem Signal basieren. Ich habe aber noch einen anderen Einstieg für den Accelerator. Der heiße CheckEntry_IAC.mq5, ich tausche das jetzt einfach in meiner Hauptdatei aus, kompiliere den Quelltext erneut. Auch das hat funktioniert, stoppe den aktuellen Test, starte mit dem gleichen Programm einen neuen Test und schon habe ich mein Signal verändert. Auf diese einfache Art und Weise lassen sich externe Dateien in einen Expert Advisor einbauen, das war jetzt ein sehr einfach gehaltenes Beispiel, in dem das Signal ausgetauscht wurde. Man kann das gleiche aber auch tun mit anderen Dingen wie beispielsweise einem Stopploss Modul für einen Trailingsstopp, einem festen Stopp, einem BreakEven Stopp oder einem Equity Stopp. Man könnte ein weiteres Modul austauschen für eine feste Lot Größe, die Berechnung einer dynamischen Lot Größe oder man könnte ein dynamisches Modul erzeugen, das die Anzahl der maximal erlaubten Trades bestimmt. Ich mache alle diese Dinge im ForexTradingFramework selbst und importiere unterschiedliche Funktionen, die in der Lage sind, Positionen zu öffnen und zu verwalten. Wie man sieht gibt es durchaus noch mehr Einstiege, das Prinzip ist dabei immer das gleiche . Ändern wir hier z.B. den Accelerator einfach mal und nehmen das Beispiel RSI,
    6 min
  • MQL5 TUTORIAL DEUTSCH – FORTGESCHRITTENER ACCELERATOR EA
    In diesem Video wollen wir uns einmal diesen Indikator hier anschauen. Es handelt sich um den sogenannten Accelerator Oscillator, der zeigt entweder oberhalb oder unterhalb dieser gestrichelten Linie Balken an, das erzeugt dann „Kaufen“ oder „Verkaufen“ Signale. In diesem Video wollen wir uns einmal anschauen, wie man diesen Indikator hier in MQL5 programmieren und automatisch mit einem Expert Advisor handeln kann. Um das zu tun, klicken Sie im Metatrader bitte auf diesen kleinen Button hier oder drücken die F4-Taste. Das ruft dann hier den Metaeditor auf und hier klicken wir auf „Datei“, „Neu“, „Expert Advisor“ aus Vorlage, „Weiter“. Ich vergebe hier den Namen „CheckEntry_IAC“, klicke auf „Weiter“, „Weiter“ und „Fertigstellen“. Jetzt kann alles oberhalb dieser „OnTick“ Funktion hier gelöscht werden, das gilt auch für die beiden Kommentarzeilen. Im ersten Schritt benennen wir diese „void OnTick“ Funktion um in „string CheckEntry“. String ist hier der Rückgabewert der Funktion, die wird eine Textkette zurückliefern und CheckEntry ist hier die Funktion, die ich aus meinem Hauptmodul aufrufe, um den Einstieg zu ermitteln. In meinem Fall ist das Hauptmodul wieder das „ForexTradingFramework“. Das besteht aus einer Sammlung von Funktionen, die in der Lage sind, Trades zu eröffnen und geöffnete Trades zu verwalten. Sie können aber auch Ihr eigenes Hauptmodul verwenden oder das „ForexTradingFramework“ zu Testzwecken von meiner Seite herunterladen. Aber zurück zu unseren Einstiegsmodul. Hier erstellen wir uns zunächst eine String variable für das Signal. Die ist auch von Typ „string“, heißt „signal“ und hat hat zunächst einmal keinen Wert zugewiesen, denn den möchten wir gleich ermitteln. Wir brauchen außerdem ein Preis-Array, das hat auch den Namen „PreisArray“ und ist vom Typ „double“, damit es auch Nachkommastellen verarbeiten kann. Jetzt geht es um die Definition vom IAC Expert Advisor, dazu nutzen wir auch die MQL5 Funktion IAC, die benötigt genau zwei Parameter, der erste Parameter ist für das Währungspaar auf dem Chart und der zweite Parameter für die auf dem Chart ausgewählte Zeiteinheit. Wir sortieren das Array von der aktuellen Kerze an abwärts, indem wir „ArraySetAsSeries“ benutzen und füllen dann mit dem Befehl “CopyBuffer“ unser Preis Array mit Daten für drei Kerzen, beginnend von der aktuellen Kerze null, das ganze tun wir für Buffer null, ein Buffer steht für ein Signal. In unserem Fall ist es diese Linie, die hier mittels dieser Balken gebildet wird. Wir sehen hier einen Wert von 0,0000767 und das entspricht auch exakt dem Wert dieses letzten Balkens hier. Um den letzten Wert zu ermitteln, greifen wir hier einfach auf die aktuelle Kerze null aus unserem Preis-Array zu und weisen diesen ermittelten Wert der Variable „IACWert“ zu. Kommen wir zur eigentlichen Ermittlung, denn wenn der Wert über null ist, wenn sich also die Balken oberhalb dieser gestrichelten Linie befinden, dann weisen wir den Wert „Verkaufen“ unserem Signal zu, denn wir erwarten, dass sich der Wert wieder nach unten bewegt. Im anderen Fall, wenn der Wert über null ist, und im umgekehrten Fall, wenn der Wert unter null ist, wenn sich also unsere Balken hier unterhalb der gestrichelten Linie befinden, dann ist das für uns ein „Kaufen“ Signal, und darum weisen wir diesen Wert auch unserer „signal“ Variable zu. Im letzten Schritt nutzen wir die Funktion „return“, um das Signal an das Hauptmodul zurückzuliefern. Wenn Sie soweit fertig sind, dann können Sie diese Datei speichern, das Hauptmodul, in meinem Fall das „ForexTradingFramework“ aus Oktober 2017, muss noch kompiliert werden. Das hat hier ohne Fehler und Warnungen funktioniert und darum kann ich jetzt hier oben klicken oder F4 drücken, um in den Metatrader zurückzukehren. Im Metatrader klicke ich auf „Ansicht“, „Strategietester“, oder drücke die Tastenkombination „Strg“ und „R“, wähle hier mein Hauptmodul aus, setze den Haken für die Visualisierung und starte einen Test.
    6 min
  • MQL5 TUTORIAL DEUTSCH – SIMPLER MAUSKLICK EVENT
    In diesem Video geht es um eine ziemlich banale Sache und zwar um einen simplen Mausklick. Wir möchten an dieser Stelle einmal einsteigen in das Thema Event Behandlung. Ein Event, also ein Ereignis wird immer ausgelöst, wenn ich mit dem Chart in irgendeiner Form interagiere. In diesem Fall möchten wir einmal mit der Maus irgendwo klicken und wenn ich das tue, wird hier oben ein Text angezeigt. Die Maustaste wurde an folgenden Koordinaten gedrückt x= 370, y=110. Wenn ich hier oben links in die Ecke klicke, dann sieht man dass die Koordinaten deutlich kleiner sind. Klicken wir mal hier in die Mitte vom linken Rand, dann sieht man, dass x=0 und y= 282 ist. Wenn ich hier oben an den Rand klicke dann ist Y=1 und X=444. Und so gibt es hier für jede Position auf dem Chart Koordinaten, mit denen man bestimmte Punkte ansteuern kann und wir wollen uns in diesem Video einmal anschauen, wie man so einen Mausklick und die entsprechenden Koordinaten über sogenannte Events in MQL5 verarbeiten kann. Um das zu tun, klicken Sie bitte hier oben auf diesen kleinen Button, oder drücken Sie die F4 Taste auf Ihrer Tastatur. 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: „Simpler Mausklick“, klicke auf weiter, weiter und Fertig stellen und jetzt kann alles oberhalb dieser OnTick Funktion gelöscht werden. Das gilt auch für die zwei Kommentarzeilen. OnTick nutzen wir ja immer dann, wenn wir darauf warten, dass eine Preisänderung auf dem Chart ausgelöst wird. Auch das ist eine Art von Ereignis. Dieses Ereignis brauchen wir diesmal gar nicht. Wir nutzen OnChartEvent. Hier werden mehrere Parameter übergeben. Der erste Parameter ist die sogenannte Event ID, als zweiter Parameter wird ein Long Wert übergeben. Der dritte Wert ist ein Double Wert und der vierte Wert ist ein String. Alle diese Werte bekommen einen entsprechenden Namen. Der Long Wert heiß lparam, der Double Wert heißt dparam und der String Wert heißt sparam. Das L steht für Long, das D für Double und das S für String. Jetzt möchten wir gerne etwas auslösen, wenn die linke Maustaste auch geklickt wurde. Um das herauszufinden, prüfen wir, ob die ID das Ereignis ChartEvent_Click übergeben hat. Wenn man das einmal markiert und die F1 taste drückt, dann sieht man hier in der Hilfe, dass es durchaus noch andere Events gibt, zum Beispiel, wenn die Maus bewegt wird, oder wenn eine Taste gedrückt wird. Auch für Objekte gibt es für das Erstellen Verändern, Löschen Anklicken und auch für das Ziehen entsprechende Ids. In unserem Fall eben auch für den Klick und wenn wir einen Klick feststellen, dann möchten wir mit der Comment Funktion auf unserem Chart den Text:“ Die Maustaste wurde an folgenden Koordinaten gedrückt“ ausgeben. Die X-Koordinate liefert uns unser Long-Parameter, die Y-Koordinate liefert der D-Parameter. Bitte nicht hier unten die schließende Klammer vergessen und wenn Sie soweit fertig sind, dann können Sie hier oben auf kompilieren klicken, oder die F7 Taste drücken. Das hat hier ohne Fehler und Warnungen funktioniert, also können wir auf diesen kleinen Button hier drücken, oder mit F4 zurückkehren in den Metatrader. In den meisten Fällen würden wir jetzt auf Ansicht und Strategietester klicken. Hier lässt sich auch unser Programm auswählen. Wenn wir hier den Test aber starten, dann bekommen wir bei Mausklicks keinerlei Ausgabe auf dem Chart, deswegen ziehen wir in unserem Fall einfach hier aus dem Fenster unseren Expert Advisor rechts auf das Chart, werden gefragt, ob wir die aktuelle Version austauschen möchten. Ich bestätige erst mal mit Ja. Im Moment steht noch hier oben, dass dies ein Demo Account ist, aber sobald ich hier irgendwo mit der Maus klicke, kommt mein Text: „Die Maustaste wurde an folgenden Koordinaten gedrückt“ und Sie haben in diesem kleinen Video gelernt, wie Sie mit der Maus jeden einzelnen Punkt auf dem Chart ansteuern und die Koordinaten auslesen können.
    6 min
  • MQL5 TUTORIAL – Simples Rechteck Objekt
    In diesem Video möchten wir uns einmal ansehen, wie man Objekte wie dieses blaue Rechteck hier automatisiert auf dem Chart ausgeben lassen kann, das Rechteck wird von MQL5 immer neu berechnet, die Oberkante richtet sich hier nach der höchsten und die Unterkante nach der niedrigsten Kerze innerhalb der letzten dreißig Kerzen. Und wir sehen uns jetzt einmal an, wie man so etwas programmiert. Um das zu tun, klicken Sie im Metatrader hier oben auf diesen kleinen Button, oder drücken die F4-Taste. Das ruft dann hier den Metaeditor auf und hier klicken wir auf Datei – Neu – Expert Advisor aus Vorlage – weiter. Ich vergebe hier einmal den Namen Simples Rechteck, klicke auf weiter, weiter, fertigstellen und jetzt kann alles oberhalb dieser OnTick-Funktion hier gelöscht werden und das gilt auch für die zwei Kommentarzeilen. Im ersten Schritt erstellen wir uns erstmal Variablen für die höchste und die niedrigste Kerze, die bekommen auch die entsprechende Bezeichnung. Ausserdem brauchen wir jeweils ein Array für die höchsten und die niedrigsten Preise innerhalb der letzten dreissig Kerzen. Die bekommen den Namen High und Low und jedes dieser beiden Arrays wird jetzt mit ArraysetasSeries von der aktuellen Kerze an abwärts sortiert. Diese Zeile hier ist für unsere Höchstpreise, diese für die Niedrigstpreise. Mit CopyHigh speichern wir für das aktuelle Chart und die auf dem Chart ausgewählte Zeiteinheit von der aktuellen Kerze 0 für 30 Kerzen alle Höchstpreise im Array High. In dieser Zeile machen wir mittels CopyLow das Gleiche nochmal für die niedrigsten Preise. Und jetzt, da wir alle Höchst- und Niedrigstpreise haben, nutzen wir die Funktion ArrayMaximum um aus unserem Array High von der aktuellen Kerze 0 für 30 Kerzen die höchste Kerze zu ermitteln und in dieser Variable hier zu speichern. Denn ArrayMaximum sucht in einem eindimensionalen numerischen Array das maximale Element, genau wie ArrayMinimum den kleinsten Wert sucht. Jetzt haben wir unsere höchste und unsere niedrigste Kerze ermittelt. Mit MQLRates erstellen wir uns jetzt noch ein Array für Preisdaten. Auch das wird von der aktuellen Kerze an absteigend sortiert indem wir ArraySetAsSeries verwenden. Mit der Funktion CopyRates füllen wir jetzt unser Preisinformattions-Array für das aktuelle Chart und die auf dem Chart eingestellte Periode, von der Kerze 0 an für alle auf dem Chart verfügbaren Kerzen und falls es bereits ein Rechteck auf unserem Chart gab, löschen wir die alte Version indem wir ObjectDelete benutzen. ObjectDelete braucht nur zwei Parameter und das ist das aktuelle Chart und der Name von dem Objekt welches zu löschen ist. Danach können wir uns ein neues, aktuelles Rechteck erstellen. Das funktioniert mittels ObjectCreate für das aktuelle Chart. Der Name unseres Objektes soll Rechteck heissen, mit OBJ_RECTANGLE legen wir hier den Objekttyp fest. OBJ_TRIANGLE wäre zum Beispiel ein Dreieck und da gibt es noch einige Objekttypen mehr, wir bleiben aber in diesem Fall bei unserem Rechteck. Das soll im Hauptfenster 0 gezeichnet werden, die linke Kante wird bei der dreissigsten Kerze gezeichnet. Man zählt immer von der aktuellen Kerze an rückwärts. Das wäre Kerze 0, danach kommt Kerze 1, Kerze 2 und so weiter. Die obere Kante wird an der höchsten Kerze gezeichnet. Mit diesem Ausdruck holen wir uns die höchste Kerze aus unserem Preisinformations-Array. Hier sehen wir jetzt, dass diese Kerze hier den längsten Docht hat, damit ist sie die höchste Kerze und anhand dieser Daten wird die Oberkante ausgerichtet. Die rechte Kante unseres Rechteckes soll für Kerze 0 gezeichnet werden, also hier die aktuelle Kerze und für die untere Kante ermitteln wir mit diesem Ausdruck hier den niedrigsten Wert der niedrigsten Kerze innerhalb der letzten 30 Kerzen. Okay, das hier ein wenig komplex aus und das Zeichnen von Objekten gehört auch nicht gerade zu meinen Lieblingsaufgaben, aber es funktioniert. Machen wir noch ein bisschen Kosmetik. Mit ObjectSetInteger lassen sich diverse Eigensch...
    6 min
  • MQL5 TUTORIAL DEUTSCH – Backtesting Fehler und Probleme
    In diesem Video geht es um das Thema Backtest und um Fehler, die den Backtest verfälschen oder verhindern können. Sowas kommt immer wieder vor, und regelmäßig kommen Fragen dazu herein, warum denn Dinge nicht so funktionieren, wie man sich das vorgestellt hat. Und in diesem Video möchten wir einmal ein paar von den häufigsten Problemen im Backtest durchgehen. Das, was ich hier gerade trade, ist ein Indikator, der „Bollinger-Bänder“ heißt. Der Expert Advisor selbst ist das Forex Trading Framework. Dort kann man beliebige Einstiege handeln. Und hier im Strategiefenster sehen wir gerade, was vor sich geht. Derzeit funktioniert der Test, wie er soll. Jetzt ändern wir mal die Positionsgröße auf einen Wert, den man nicht handeln kann, kompilieren das Ganze, starten hier einen neuen Test, und wie man sieht, passiert hier überhaupt nichts. Weder Balance- noch Equity-Wert ändern sich; es gibt keine Historie. Und auf den ersten Blick würde man sich fragen, warum das jetzt nicht funktioniert. Aber wenn man hier auf die Reiterkarte “Journal” klickt, dann sehen wir, dass wir Fehlermeldungen bekommen. Wir haben versucht, eine Order mit einer ungültigen Lot-Größe zu eröffnen, deswegen steht hier im Hintergrund auch “invalid volume”. Und viele Fehler lassen sich hier über die Reiterkarte Journal bereits relativ einfach identifizieren. Man kann aber auch bei Google einfach nach dem Begriff “mql5 error codes” googlen. Dann kommt man hier auf dieser Webseite “Codes of Errors and Warnings” raus. Wenn man da auf “Return codes” klickt, dann sieht man hier eine relativ lange Liste mit möglichen Fehler-Codes, die vom Server kommen können. Zum Beispiel hier: “invalid request”, oder “invalid volume in the request”. Klickt man mit der rechten Maustaste in das Journal, gibt’s hier die Möglichkeit, einen Ordner zu öffnen, der heißt “Logs”, und hier werden auch die Log-Dateien gespeichert. Die kann man sich mit einem entsprechenden Editor anschauen und nach den Fehlern suchen, die man vielleicht auf der Journal-Reiterkarte nicht mehr sieht. Ändern wir die Positionsgröße wieder auf ihren ursprünglichen Wert, starten einen neuen Test, dann werden hier auch wieder Positionen eröffnet. Eine andere mögliche Fehlerursache ist diese Reiterkarte für „Eingaben“. Im Forex Trading Framework kann ich hier den Wert für das Trading-Risiko einstellen. Den setze ich jetzt hier mal auf 1. Damit das Ganze schneller geht, nehme ich hier mal den Haken für die Visualisierung raus, starte einen Test. Jetzt werden hier über die Reiterkarte “Diagramm” die Ergebnisse angezeigt. Das ist nicht sehr aufregend. Wir haben jetzt zum Ende hin in einem kompletten Jahr gerade mal 425,- EUR gemacht. Ändern wir das Trading-Risiko mal auf 10 -das ist ein hoher Wert- und handeln das gleiche Jahr, dann sind wir bereits im Mai auf 2.000,- EUR Plus. Im September sind es 5.000,- EUR Plus. Und zum Ende hin sind es 7.720,- EUR Plus; und das Einzige, was wir verändert haben, ist dieser Eingabewert hier. Bei vielen Programmen lassen sich einer oder mehrere Werte verändern, indem man hier einfach auf der Reiterkarte „Eingaben” die entsprechenden Einstellungen vornimmt; aber viele Leute wissen das nicht. Außerdem gibt es auch logische Fehler: ändern wir die Kontogröße hier einmal von 300.000,- auf 30.000,- USD und starten einen Test, dann wird ziemlich schnell unser Konto hier komplett planiert. Wir haben bei einer Ersteinlage von 30,- USD ein Minus von 34,- USD gemacht. Ändern wir mal auf 300,- USD, starten einen erneuten Test, dann hält das Konto gerade mal 19 Tage durch, und auch diesmal haben wir einen Verlust von 259,- USD gemacht. Machen wir mal 3.000,- USD aus der Kontogröße, dann sieht das schon besser aus. Jetzt hat unser Expert Advisor etwas Luft. Hier ist es ziemlich knapp, aber alles in allem entwickelt er sich ganz gut. Jetzt dürfte unser Test gleich beendet sein. Und zum Ende haben wir einen guten Gewinn gemacht. Trotzdem ist die Belastung der Einlage an dieser Stelle hier viel zu hoch....
    9 min
  • MQL5 Tutorial DEUTSCH – Fortgeschrittener Adaptive Moving Average EA
    In diesem Video schauen wir uns diesen Indikator hier an. Der wird durch eine rote Linie symbolisiert, und es handelt sich um den Adaptive Moving Average. Der sieht zwar aus, wie ein normaler gleitender Durchschnitt, tatsächlich ist er aber gewichtet. Erfunden hat diesen Indikator Perry Kaufman. Und er soll weniger Fehlsignale produzieren, als ein normaler gleitender Durchschnitt. Darum wollen wir uns in diesem Video einmal anschauen, wie man einen Expert Advisor erstellen kann, der mit diesem Adaptive Moving Average Signal automatisch handeln kann. Um das zu tun, klicken wir hier oben auf diesen kleinen Button, oder drücken die F4-Taste im MetaTrader. Das ruft dann hier den Meta-Editor auf. In meinem Fall nutze ich das Forex Trading Framework als Hauptmodul. Vom Prinzip handelt es sich um eine Sammlung von Funktionen, die in einer Bibliothek importiert werden. Z.B. hier wird die Positionsgröße gesetzt. Und mit dieser kompletten Handelsbibliothek ist man dann in der Lage, so ziemlich jeden Einstieg zu handeln, denn alle diese einzelnen Funktionen hier sorgen zusammen dafür, dass einmal geöffnete Positionen verwaltet werden. In unserem Fall möchten wir den Einstieg für den Adaptive Moving Average erstellen und handeln. Das entsprechende MQ5-Modul wird “CheckEntry_AMA.mq5” heißen. Und um das zu erstellen, klicken wir jetzt auf “Datei/ Neu/ Expert Advisor (Vorlage)/ Weiter”. Ich vergebe hier den Namen “CheckEntry_AMA”, wie es hier unten steht, klicke auf “Weiter/ Weiter/ Fertigstellen”. Und jetzt können alle Einträge über dieser OnTick-Funktion hier entfernt werden, und das gilt auch für die beiden Kommentarzeilen. Diese Funktion hier benennen wir um, denn wir rufen im Hauptmodul eine Funktion mit dem Namen „CheckEntry“ auf. Die wird uns eine String-Variable für den Einstieg zurückliefern. Im ersten Schritt erstellen wir uns ein PreisArray. Das geht mit MqlRates, das ist eine eingebaute Funktion von MQL5, die die Information über Preise, Volumen und Spread für alle Kerzen aufbewahrt. Danach sortieren wir das Array von der aktuellen Kerze an abwärts. Das tun wir mit dem Befehl ArraySetAsSeries, der gehört ebenfalls zu MQL5. Und um unser Array mit Preisdaten zu füllen, nutzen wir noch einen Befehl, der heißt CopyRates. Der wird für das aktuelle ausgewählte Chart und die auf diesem Chart ausgewählte Zeiteinheit, von der aktuellen Kerze 0 für alle Kerzen auf dem Chart, die Preisinformationen in unserem Array speichern. Mit diesem Ausdruck hier bekommt man alle Kerzen, die das Chart hergibt. Wenn Sie für Ihren Expert Advisor weniger als alle Kerzen brauchen, dann können Sie hier auch einfach eine Zahl wie 20 oder 50 eingeben; das macht den Expert Advisor hinterher schneller. Jetzt brauchen wir noch eine String-Variable, die nennen wir “Signal”. Ein Wert wird noch nicht zugewiesen, denn der wird gleich berechnet. Für unseren Expert Advisor brauchen wir noch ein Array, das bekommt den Namen “meinPreisArray” und ist vom Typ Double, damit es auch Nachkommastellen für die Preise aufnehmen kann. Jetzt definieren wir die Eigenschaften für unseren Expert Advisor. Dazu nutzen wir die MQL5-Funktion iAMA, die gibt uns das Handle für den Adaptive Moving Average zurück. Als Parameter übergeben wir das aktuelle Währungspaar auf dem Chart, die auf dem Chart eingestellte Zeiteinheit. Und Sie werden sich fragen, was diese drei Zahlen hier bedeuten: nun, wenn man sich die Eigenschaften vom Adaptive Moving Average einmal genauer ansieht, dann sieht man eine 9 für die Periode, auf die der Expert Advisor berechnet werden soll. Hier gibt es eine 2 für den Schnellen Exponentiellen Moving Average und eine 30 für den Langsamen Exponentiellen Moving Average, und darum finden sie sich auch in dieser Form bei uns in den Parametern wieder. Hier gibt es noch eine 0 und einen Eintrag “PRICE_CLOSE”. Das bedeutet, wir nutzen eine Verschiebung von 0, und unsere Werte werden berechnet aufgrund der Schlusskurse. Alles in allem kommt dann ein einziger Wert raus,
    8 min
  • MQL5 Tutorial – Simpler Höchst, Niedrigst- und Durchschnittspreis
    In diesem Video schauen wir uns einmal an, wie man für eine bestimmte Anzahl von Kerzen den höchsten, den niedrigsten und den Durchschnittspreis errechnen kann. In diesem Fall haben wir hier einen niedrigsten Preis von 1.20083. Der Höchstpreis liegt bei 1.20089, und der Durchschnitt liegt in der Mitte bei 1.20086. Ein solcher Expert Advisor kann beispielsweise dazu genutzt werden, um intelligente Handelsentscheidungen zu treffen, wenn sich der Durschnitt, der Höchstpreis oder der Niedrigstpreis sehr stark verändert, z.B. wenn die Volatilität steigt. Wir ermitteln die Preisdaten hier anhand der letzten 10 Minuten-Kerzen. Und in diesem Video wollen wir einmal anschauen, wie man in MQL5 einen Expert Advisor programmieren kann, der uns diese Preisdaten hier berechnet und anzeigt. Um das zu tun, klicken Sie bitte im Meta-Editor auf diesen kleinen Button hier, oder drücken die F4-Taste. Das ruft dann hier den Meta-Editor auf, und hier klicken wir auf “Datei/ Neu/ Expert Advisor (Vorlage)/ Weiter”. Ich vergebe hier mal den Namen “SimplerHoechstNiedrigstUndDurchschnittspreis”, klicke auf “Weiter/ Weiter/ Fertigstellen”. Und jetzt kann alles oberhalb dieser OnTick-Funktion hier entfernt werden; und auch die zwei Kommentarzeilen werden gelöscht. Zunächst erstellen wir uns einmal eine Variable für die höchste und niedrigste Kerze. Beide Variablen sind vom Typ “Int” und bekommen die Bezeichnung “HoechsteKerze” und “NiedrigsteKerze”. Das sind deshalb Int-Variablen, weil sie die Nummer für die höchste oder niedrigste Kerze aufnehmen werden. Zusätzlich brauchen wir noch zwei Arrays für die höchsten und niedrigsten Kerzen. Die bekommen den Namen “High” und “Low”, und anhand dieser eckigen Klammern hier kann man erkennen, dass sie mehrere gleichartige Werte aufnehmen werden. Sie sind vom Typ Double, damit sie Preisdaten mit Nachkommastellen verarbeiten können. Mit dem MQL5-Befehl ArraySetAsSeries sortieren wir ein Array von der aktuellen Kerze an abwärts. In diesem Fall für das High-Array, welches die Höchstpreisdaten aufnimmt; und das Ganze machen wir nochmal genauso für das Low-Array. Hier kommen die Niedrigstpreise rein. Und mit dem integrierten MQL5-Befehl CopyHigh kopieren wir für das aktuelle Währungspaar und die auf dem Chart ausgewählte Periode von der aktuellen Kerze 0 für 10 Kerzen die Höchstwerte in unser High-Array. Das Ganze machen wir dann nochmal; diesmal nutzen wir das Low-Array und den MQL5-Befehl CopyLow. Und um die höchste der 10 Kerzen zu berechnen, nutzen wir den Befehl ArrayMaximum. Der sucht in unserem Array nach dem maximalen Element. Da wir im High-Array von der aktuellen Kerze für 10 Kerzen suchen, liefert uns ArrayMaximum die höchste Kerze zurück. Natürlich gibt es auch noch den Befehl ArrayMinimum; der macht das gleiche im Low-Array, ebenfalls von der aktuellen Kerze für 10 Kerzen und liefert uns die niedrigste Kerze. Jetzt brauchen wir noch ein Array für die Preisdaten. Das wird mit MqlRates erstellt und soll mein PreisArray heißen, denn die „HoechsteKerze“ und die „NiedrigsteKerze“ enthalten nur die Nummer. Also wenn das hier die aktuelle Kerze 0 ist, und das hier die niedrigste Kerze ist, dann würden wir hier die Nummer der niedrigsten Kerze zurückgeliefert bekommen, aber jede Kerze hat natürlich auch noch Preisdaten. Und MqlRates bewahrt die Information über Preise, Volumen und Spread auf. Dazu gehören die Höchst- und die Niedrigstpreise, der Eröffnungskurs und der Schlusskurs; und diese Daten benötigen wir gleich. Auch unser PreisArray wird mit ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Danach kopieren wir die Preisdaten in unser PreisArray. Das macht die Funktion CopyRates. Die liefert uns für das aktuelle Währungspaar und die auf dem Chart ausgewählte Zeiteinheit von der aktuellen Kerze 0 mit diesem Ausdruck hier sämtliche verfügbaren Kerzen und speichert alle diese Preisdaten in unserem PreisArray. Um den höchsten Preis zu ermitteln, greifen wir auf den höchsten Punkt der “HöchsteKerze”...
    8 min
  • MQL5 Tutorial – Der unbekannte Risiko-Multiplikator
    Diesmal geht es um das Thema Backtesting in größeren Größenordnungen. Wie Sie sehen, läuft hier oben ziemlich schnell ein automatisiertes Handelssystem. Das handelt hier gerade den Chaikin-Oszillator. Und es kann mehrere Positionen gleichzeitig eröffnen und verwalten. Die blaue Linie hier stellt unser Bruttoguthaben, also unsere Balance-Kurve dar, und die grüne Linie hier unten ist das nicht gebundene Netto-Guthaben. Und ich möchte gerne, dass meine Systeme so aussehen, dass die blaue Linie möglichst gleichmäßig nach oben geht, und die grüne Linie so nah wie möglich parallel dazu verläuft. Der Grund dafür ist, dass größere Drawdowns hier eine höhere Kapitalbindung bedeuten und ein psychologisches Problem darstellen. Wir haben jetzt über ein halbes Jahr lang gehandelt, und zum ersten Mal geht hier die grüne Equity-Linie unter die 300.000,- $ Grenze, erholt sich aber ziemlich schnell wieder und steigt weiterhin an. Jetzt im August sind wir an der 320.000,- $ Grenze. Im Oktober sind wir bei 330.000,- $. Und in einigen Sekunden sollte unser Test beendet sein. Jetzt ist das der Fall: wir haben ein Ergebnis von 39.513,- $ Profit. Insgesamt haben wir 3.416 Trades gemacht, 1.694 Sell-Positionen und 1.722 Buy-Positionen. Und wenn Sie glauben, das sind viele Trades, dann werfen Sie mal einen Blick auf diese Ergebnisse hier. Das hier ist ein System von 2010 – 2017 gehandelt. Man kann erkennen, dass die grüne Equity-Linie ziemlich parallel zur blauen Balance-Kurve verläuft. Und das ist das, was wir wollen. Das läuft nicht immer so glatt; in diesem Fall hier gibt es einen großen Drawdown, so in der Jahresmitte von 2013, aber wäre dieser Drawdown hier am Anfang aufgetreten, dann hätte das einen massiven Verlust bedeutet. Schauen wir uns doch einmal an, was passiert, wenn wir das gleiche System für den EUR-USD handeln. Auch hier geht es erst unspektakulär los. So im April werden dann ein paar Trades mehr gehandelt. Jetzt sind wir über die Jahresmitte hinaus. Die Equity hat hier zu kämpfen. Das hier ist ein Drawdown, der geht so bis auf 230.000,- $ runter, aber es geht noch schlimmer. Hier sind wir bei 190.000,- $; und auch, wenn sich das System hier wieder erholt, werden Sie als menschlicher Trader ein Problem damit haben, über Wochen hinweg zuzuschauen, wie Ihr Netto-Guthaben in den Keller geht. Wir sind jetzt im November, und zum Jahresende haben wir hier einen Verlust gemacht, und zwar einen satten Verlust von -62.165,- $. Das ist das gleiche System wie eben, aber es hat hier einen Verlust produziert. Und die meisten Leute würden jetzt den Einstieg ändern. Aber schauen wir doch mal, was passiert, wenn wir das Trading-Risiko hier von 10 auf 5 verringern und starten einen neuen Test mit dem gleichen System. Die ersten 3 Monate passiert nicht viel Interessantes. Zur Jahresmitte nimmt das Ganze hier etwas Fahrt auf. Die Equity tut sich noch immer etwas schwer. Gleich ist unser Test hier beendet. Und hier ist unser Endergebnis: diesmal haben wir einen Profit von 13.439,- $ gemacht, und zwar mit dem identischen System und den gleichen Einstellungen. Das Einzige, was wir verändert haben, war das Trading-Risiko. Im Forex Trading Framework geht das ganz einfach über diesen Schalter hier. Wenn Sie in der Lage sind, beim automatischen Handel das Risiko dem Währungspaar entsprechend anzupassen, dann lassen sich damit durchaus beeindruckende Ergebnisse erzielen.
    5 min

About MQL5 Tutorial - Automatisch traden mit Metatrader5

From the publisher's feed

Metatrader5 MQL5 Expert Advisor Tutorial