MQL5 Tutorial - Automatisch traden mit Metatrader5

MQL5 Tutorial - Automatisch traden mit Metatrader5

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

MQL5 Tutorial - Automatisch traden mit Metatrader5 episodes

  • MQL5 TUTORIAl GRUNDLAGEN – 108 SIMPLER IOBVEA OSZILLATOR
    In diesem Video wollen wir uns einmal anschauen, wie man einen Expert Advisor erstellen kann, der in der Lage ist, aufgrund von maximalen oder minimalen Werten eines Oszillators Positionen zu eröffnen. Um das zu tun, klicken Sie im Metatrader bitte hier oben auf dieses kleine Symbol oder drücken Sie die F4 Taste. Das ruft hier dann den Metaeditor auf. Und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier einmal den Namen SimplerIOBVEA, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden. Und wir entfernen auch die Kommentarzeilen. Wir beginnen, indem wir mit Hilfe des include Befehles hier die Datei Trade.mqh importieren.   Die werden wir gleichen nutzen, um Positionen zu eröffnen. In der OnTick Funktion erstellen wir uns zunächst eine String Variable für das Signal. Und damit wir Positionen eröffnen können, benötigen wir noch den Ask Preise und den Bid Preis. Die berechnen wir mit Hilfe von SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen SYMBOL_ASK beziehungsweise SYMBOL_BID und mit Hilfe von NormalizeDouble und _Digits stellen wir sicher, dass wir die richtige Anzahl von Nachkommastellen je nach Währungspaar automatisch berechnen. Außerdem brauchen wir für unseren Expert Advisor ein Array für die Preisdaten. Das sortieren wir dann mit Hilfe von ArraySetAsSeries von der aktuellen Kerze an abwärts. Jetzt definieren wir unseren Oszillator. In unserem Fall nutzen wir den Oszillator On Balance Volume für das aktuelle Währungspaar auf dem Chart und die aktuell eingestellte Zeiteinheit. Der dritte Parameter hier VOLUME_TICK soll uns das Tickvolumen anzeigen. Danach nutzen wir CopyBuffer, um anhand der Definition die wir hier oben getroffen haben, für das Oszillatoren Signal, angefangen von Kerze null für 100 Kerzen, die Daten in unser Array kopieren zu können.   Und das ermöglicht es uns, den aktuellen Wert zu ermitteln, indem wir einfach auf den Wert Kerze null in unseren Array zugreifen. Jetzt brauchen wir noch den maximalen und den minimalen Wert. Dazu ermitteln wir mit Hilfe von ArrayMaximum zunächst die Nummer der Kerze, die in unserem EAArray, angefangen von Kerze null für das komplette Array den höchsten Wert hat. Entsprechend lässt sich mit ArrayMinimum auch die Nummer der Kerze ermitteln, die den minimalsten Wert in unserem Array hat. Und jetzt sind wir in der Lage, den tatsächlich maximalen Wert zu ermitteln, indem wir in unserem Array den Wert von der eben ermittelten Kerze auslesen. Das gleiche wiederholen wir dann nochmal und ermitteln den Wert für die minimale Kerze. Wie gesagt, es handelt sich immer um die letzten 100 Kerzen. Und wenn die aktuelle Kerze größer oder gleich ist zu dem bisher ermittelten Maximalwert in unserem Array, dann sehen wir das als Kaufen Signal und setzen unser Signal hier auf buy. Im anderen Fall, wenn der aktuelle Wert für Kerze null kleiner oder gleich ist zu bis jetzt minimal gemessenen Wert, dann ist das für uns ein Verkaufen Signal. Also setzen wir unser Signal hier auf sell.   Und wenn unser Signal auf Verkaufen steht und wir keine geöffneten Positionen haben, wenn also der Rückgabewert von PositionsTotal kleiner ist als eins, dann nutzen wir trade.sell um zehn Mikrolot zu verkaufen. Andernfalls, wenn unser Signal hier auf Kaufen steht und wir ebenfalls keine geöffnete Position haben, dann nutzen wir trade.buy um zehn Mikrolot zu kaufen. Zum Schluss erstellen wir uns noch eine Chartausgabe. Das macht der Comment Befehl. Der wird uns den aktuellen, den maximalen und den minimalen Wert auch auf unserem Chart anzeigen. Hier unten versteckt sich noch irgendwo die schließende Klammer. Und das war es im Großen und Ganzen. Wenn Ihnen das hier zu schnell ging oder wenn Sie keine Ahnung haben, was alle diese Codezeilen hier bewirken sollen, dann möchten Sie sich vielleicht zunächst ein anderes Video aus der Grundlagenserie noch einmal anschauen.
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 107 SIMPLE ARRAY REFERENZ
    In diesem Video wollen wir uns einmal anschauen, wie man ein Array deklarieren und einer Funktion als Parameter übergeben kann. Also lassen Sie uns einmal schauen, wie so etwas in MQL5 realisiert wird. Das Ganze sieht auf dem Chart relativ unspektakulär aus. Wir haben hier ein errechnetes Resultat. Das was wir gerne machen möchten ist, wir möchten eine Summe errechnen aus mehreren Werten, die Teile eines Arrays sind und dieses Array soll einer Funktion übergeben werden. Naja, wir schauen uns das mal an und 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 mal den Namen SimpleArrayReferenz, 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. In unserem einfachen Beispiel erstellen wir uns mal ein kleines definiertes Array für Integer-Werte, danach füllen wir das Array mit einigen Werten. Bitte denken Sie daran, dass jedes Array immer mit dem Index 0 startet. Das bedeutet, der erste Wert ist immer im Index 0 eines Arrays zu finden. Danach füllen wir aufsteigend drei weitere Array-Schubladen mit Werten. Man kann sich das tatsächlich wie ein Apothekerschrank vorstellen. Jeder Array-Index hier enthält einen bestimmten Typ von Wert. Wir haben jetzt hier einen einfachen Datentyp genommen. Denn dieses Beispiel soll nur zu Demonstrationszwecken dienen. Es macht aber Sinn sich solche kleinen Beispielprogramme immer wieder mal selbst zu schreiben, um bestimmte Dinge herauszufinden. Im Anschluss möchten wir gerne eine benutzerdefinierte Funktion mit dem Namen AddValues aufrufen. Die soll uns die Werte von unserem Array addieren. Und das Ergebnis weisen wir hier einer Variablen mit dem Namen ReturnedResult zu. Die ist auch vom Typ integer. Und damit wir überhaupt sehen, dass etwas passiert, fügen wir noch eine Comment-Ausgabe hinzu. Das könnten wir auch mal auf Deutsch machen. Die würde uns jetzt den Text „Das Rueckgabe-Resultat ist“ gefolgt von dem ermittelten Resultat ausgeben. So weit unser Testaufbau, aber diese Funktion hier existiert noch nicht, also müssen wir die jetzt erstellen. Und jetzt kommen wir zum eigentlich interessanten Teil, wir übergeben nämlich unser Array hier als Referenz. Normalerweise kennen wir das so, dass jede Funktion immer Parameter als einzelne Werte übergeben bekommt, aber mit diesem kaufmännischen Und-Symbol hier, können wir unser Array als Referenz übergeben. Und das ermöglicht es uns auf die einzelnen Werte hier in unserer Unterfunktion so zuzugreifen, wie wir das hier oben in der Funktion tun könnten, in der wir das Array definiert haben. Das Resultat liefern wir hier mittels Return-Befehl wieder zurück an unser Hauptmodul. Und das war´s so weit schon mit dem Quellcode. Wenn Ihnen das hier zu schnell ging oder wenn Sie keine Ahnung haben, was diese Zeilen hier bewirken sollen, dann möchten Sie sich vielleicht zunächst eines der anderen Videos aus der Grundlagenserie noch einmal anschauen. Zu diesen Videos gibt’s übrigens jetzt auch die Quelltexte in separaten Kursen. Den Link dazu finden Sie auf unserer Webseite. Da finden Sie auch den Premiumkurs. Und dieses Video hier war wieder ein Vorschlag von einem Premiumkursmitglied. Und wenn Sie ein Premiummitglied sind und eine Idee für so ein Video haben, dann lassen Sie es mich einfach wissen. Für den Moment klicken wir hier mal auf Ansicht, Werkzeugleiste und klicken dann auf Kompilieren. Sie können alternativ auch F7 drücken. Das hat hier ohne Fehler funktioniert und wenn das bei Ihnen auch so ist, dann können Sie jetzt hier oben auf dieses kleine Symbol klicken oder die F4-Taste drücken, um in den Metatrader zurückzukehren. Und im Metatrader klicken wir auf Ansicht, Strategietester oder drücken die Tastenkombination Steuerung und R.
    7 min
  • MQL5 TUTORIAL GRUNDLAGEN – 106 SIMPLER ICHIMOKU KINKO HYO
    In diesem Video wollen wir uns einmal anschauen, wie man für diesen Indikator hier die Werte ermitteln kann. Es handelt sich um den Ichimoku Kinko Hyo Indikator. Also lassen Sie uns einmal schauen, wie man so etwas für Metatrader 5 ermittelt. 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 SimplerIchimokuKinkoHyo, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb der OnTick-Funktion hier gelöscht werden und auch die zwei Kommentarzeilen können weg. Wir starten mit einer include-Anweisung und importieren uns hier die Inhalte der Datei Trend.mqh. Die ist Bestandteil von MQL5 und die stellt uns Klassen bereit für bestimmte Trendindikatoren. Eine dieser Klassen ist diese hier: CiIchimoku. Hier sieht man die Deklaration- und die Vererbungshierarchie. Die Klasse ist abgeleitet von Objekten und Indikatoren. Das bedeutet: Sie enthält diverse Methoden, die auch in anderen Klassen enthalten sind und die an diese Klasse vererbt worden sind. Wir möchten uns einmalig in der OnInit-Funktion ein Ichimoku-Objekt erzeugen lassen. Bitte vergessen Sie nicht diesen Stern hier oben. Das ist kein Schreibfehler. Der wird wirklich benötigt. Innerhalb der OnInit-Funktion erstellen wir uns jetzt eine Instanz mit dem Namen Ichimoku und wir tun das, indem wir ein neues Objekt über diese Konstruktor Methode hier aufrufen. Danach erzeugen wir das Objekt für das aktuelle Währungspaar auf dem Chart und die aktuell auf dem Chart ausgewählte Zeiteinheit. Diese drei Parameter, 9, 26 und 52, die sieht man auch, wenn man auf einem herkömmlichen Chart auf Indikatoren, Einfügen, Tendenz, Ichimoku Kinko Hyo klickt. 9 ist der Wert für den Tenkan-sen, 26 ist der Wert für den Kijun-sen, 52 ist der Wert für den Senkou Span B. Und das ist es auch, was wir hier verwenden. Innerhalb der OnTick-Funktion nutzen wir zunächst den Refresh-Befehl. Wenn man sich in der Referenz nochmal die vererbten Methoden anschaut, dann sieht man, dass diese Refresh-Funktion hier unten auftaucht. Sie dient zum Aktualisieren der Daten eines Indikators und es wird empfohlen Refresh vor der Verwendung von GetData aufzurufen. Nachdem wir das getan haben, fangen wir mit der Ermittlung der Werte an. Der TenkanSen-Wert ist ein double-Wert und wir erhalten ihn, indem wir auf die Methode ichimoku.TenkanSen zurückgreifen. Wir möchten hier den Wert für Kerze 0 ermitteln. Für den KijunSen-Wert ist das ähnlich, auch hier nutzen wir Ichimoku und diesmal die Methode für den KijunSen und Kerze 0. Zur Ermittlung des SenkouSpanA-Wertes greifen wir hier auf einen negativen Wert zu von minus 26. Das kann am Anfang etwas verwirrend sein, aber wenn man sich das einmal anschaut, dann sehen wir, dass diese Wolke hier vor den aktuellen Kerzen gezeichnet wird. Darum müssen wir auch auf einen negativen Wert für 26 Kerzen zugreifen, denn sonst würde immer der aktuelle Wert für Kerze 0 ermittelt. Wenn man das nicht weiß oder den Wert nicht kennt, dann wird man falsche Werte bei der Ermittlung erhalten. Das kann gerade am Anfang sehr verwirrend sein. Auch um den SenkouSpanB-Wert zu ermitteln greifen wir auf den negativen Wert für 26 Kerzen zu und für den ChinkouSpan-Wert wird die Ermittlung durchgeführt für die 26. Kerze. Diesmal nicht in die Zukunft, sondern für diese grüne Linie hier, denn die wird 26 Kerzen hinter der aktuellen Kerze ermittelt. Die Darstellung von dem Indikator ist genau so verwirrend, wie die Berechnung für die einzelnen Werte. Und wenn man das hier nicht weiß, dann kann das schon zu Problemen führen. Damit wir auch überprüfen können, ob wir die richtigen Werte berechnen, nutzen wir jetzt noch den Comment-Befehl und geben die ermittelten Bezeichnungen und die ermittelten Werte direkt auf dem Chart aus. Und das war es auch so weit.
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 105 SIMPLES SELL GRID SYSTEM
    In diesem Video wollen wir uns einmal anschauen, wie man einen Expert Advisor erstellen kann, der in der Lage ist, bei absteigenden Trends alle fünfzig Punkte einen neuen Sell Trade zu eröffnen. Also lassen Sie uns einmal schauen, wie man so etwas mit MQL5 realisieren 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 SimplesSellGridSystem, 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 den include Befehl, um die Datei Trade.mqh zu importieren. Die stellt uns vereinfachte Handelsfunktionen bereit. Und um die zu nutzen erstellen wir hier eine Instanz von der Klasse CTrade mit dem Namen trade. Außerdem nutzen wir  MqlRates für ein Array mit dem Namen PriceInfo, das unsere Preisdaten aufnehmen wird. Und im Anschluss erstellen wir uns eine Signal Variable vom Typ string. Der weisen wir hier aber noch keinen Wert zu, denn der wird gleich ermittelt. In der OnTick Funktion nutzen wir eine statische Variable vom Typ double. Die bekommt den Namen NextSellPrice. Und die werden wir verwenden, um den nächsten Sell Preis zu definieren. Und damit wir etwas verkaufen können brauchen wir den Bid Preis. Den ermitteln wir mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart.   Wir nutzen SYMBOL_BID. Und mit NormalizeDouble und _Digits lassen wir uns automatisch die richtige Anzahl von Nachkommastellen für das jeweilige Währungspaar ermitteln. Mit Hilfe der Funktion ArraySetAsSeries sortieren wir unser PriceInfo Array jetzt von der aktuellen Kerze an abwärts. Danach füllen wir es mit Daten. Das übernimmt die Funktion CopyRates für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit, möchten wir von der aktuellen Kerze null die Werte für drei Kerzen in unserem PriceInfo Array speichern. Sofern wir keine offenen Positionen haben, liefert uns die Funktion PositionsTotal einen Wert von null zurück. Dann setzen wir unseren NextSellPrice hier ebenfalls auf null. Um das Signal zu ermitteln möchten wir eine Funktion mit dem Namen CheckEntrySignal nutzen. Die existiert noch nicht.   Also müssen wir die gleich noch programmieren. Für die Einstiegsbedingungen möchten wir prüfen, ob unser Bid Preis kleiner ist als der NextSellPrice den wir definiert haben. Oder, ob unser NextSellPrice den Wert null hat. Die nächste Bedingung wäre zu prüfen, ob unser Signal auf sell steht. Und wenn beides zutrifft, dann nutzen wir hier trade.Sell, um zehn Mikrolot zu verkaufen. Danach setzen wir sofort den Level für den nächsten Sell Preis auf einen Wert, fünfzig Punkte unterhalb des aktuellen Bid Preises. Damit wir auch was sehen, nutzen wir hier die Comment Funktion. So weit, so gut. Aber da diese Funktion hier nicht existiert, müssen wir die jetzt noch programmieren. Unsere Funktion soll den Namen CheckEntrySignal bekommen und uns einen string Wert, also eine Textkette zurückliefern. Wir prüfen hier, ob der Schlusskurs für Kerze eins in unserem PriceInfoArray größer ist, als der Eröffnungskurs für Kerze eins im gleichen Array.   Wenn das so ist, ist das für uns ein Verkaufssignal. Und dann setzen wir hier unsere Signal Variable auf Buy. Im umgekehrten Fall, wenn der Schlusskurs für Kerze eins niedriger war, als der Eröffnungskurs für Kerze eins, dann wäre das ein Verkaufen Signal. Und dann setzen wir unsere Variable hier auf sell. Zum Schluss nutzen wir noch den return Befehl, um unser Signal an das Hauptmodul zurückzuliefern. Das war es soweit. Wenn Ihnen das zu schnell ging oder wenn Sie keine Ahnung haben, was diese Code Zeilen hier bewirken sollen, dann möchten Sie sich vielleicht zunächst eines der anderen Videos anschauen.
    6 min
  • MQL5 TUTORIAL GRUNDLAGEN – 104 SIMPLER CROSSOVER SELL STOP LOSS
    In diesem Video wollen wir einmal einen Expert Advisor erstellen, der bei sich überschneidenden gleitenden Durchschnitten in der Lage ist, Sell Position automatisch zu schließen. Das ist jetzt grade passiert. 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 vergebe hier den Namen SimplerSellCrossoverStopLoss, 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 mit einem include Befehl. Der wird uns die Inhalte der Datei Trade.mqh zur Verfügung stellen. Die enthält vereinfachte Handelsfunktionen. Und um die zu nutzen, erstellen wir uns jetzt von der Klasse CTrade eine Instanz mit dem Namen trade. Innerhalb der OnTick Funktion möchten wir den Ask Preis ermitteln. Das geht mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen SYMBOL_ASK. Und mit NormalizeDouble und _Digits stellen wir sicher, dass die richtige Anzahl von Nachkommastellen für das jeweilige Währungspaar ermittelt wird. Das Ganze wiederholen wir dann noch einmal für den Bid Preis. Da ist eigentlich nur der Name der Variable anders und wir nutzen hier SYMBOL_BID.   Außerdem brauchen wir eine Variable für unser Signal. Die nennen wir auch signal, weisen hier aber noch keinen Wert zu, denn der wird gleich noch ermittelt. Für die Preisdaten brauchen wir zwei Arrays, ein SmalMovingAverageArray und ein BigMovingAverageArray. Und die Definition für den SmallMovingAverageArray ersten wir mit Hilfe der Funktion iMA für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit möchten wir für zwanzig Kerzen einen Wert ermitteln. Wir nutzen hier keine Verschiebung. Dieser Parameter steht für SMA, also Smal Moving Average.   Sie könnten hier auch MODE_EMA für eine exponentiellen gleitenden Durchschnitt nutzen. Und das Ergebnis soll ermittelt werden anhand der Schlusspreise der Kerzen. Für den BigMovingAverage sieht das ganz ähnlich aus. Diesmal ermitteln wir hier den Wert für fünfzig Kerzen. Mit Hilfe von CopyBuffer können wir jetzt anhand der Definition die wir hier oben getroffen haben für Buffer null, also die einzige Signallinie von der aktuellen Kerze null für drei Kerzen die Daten kopieren und in unserem SmallMovingAveragerArray speichern. Für den BigMovingAverageArray wiederholen wir das Ganze nochmal. Und nachdem wir das alles durchgeführt haben sind wir in der Lage, herauszufinden, ob der Wert für Kerze eins in unserem BigMovingAverageArray kleiner ist, als der Wert für Kerze eins in unserem SmallMovingAverageArray. Falls das zutrifft, setzen wir hier unser Signal auf buy, also kaufen.   Im anderen Fall, wenn der Wert für Kerze eins im BigMovingAverageArray größer ist, als der Wert für Kerze eins im SmallMovingAverageArray, dann wäre das ein Verkaufssignal und dann setzen wir unsere Signalvariable hier auf sell. Und wenn wir ein kaufen Signal haben und die Anzahl unserer Positionen größer ist als null, dann möchten wir gerne alles Verkaufspositionen schließen, weil sich der Trend gedreht hat. Im anderen Fall, wenn unser Signal auf verkaufen steht und wir keine offene Position haben, dann eröffnen wir hier mit trade.sell eine Testposition für zehn Mikrolot. Wie gesagt, das hier ist nur für den Test. Man würde das auf einem Echtgeldkonto natürlich nicht machen. Damit wir sehen, wie das aktuelle Signal aussieht, fügen wir hier eine Comment Ausgabe für das Chart hinzu. Die wird uns den Text anzeigen: Das Signal ist jetzt… gefolgt von dem ermittelten Signal. Damit wir diese Position hier nutzen können, müssen wir die jetzt aber noch programmieren, denn die existiert noch nicht. Der Name unserer Funktion soll CloseAllSellPosit...
    9 min
  • MQL5 GRUNDLAGEN – 103 SIMPLES BUY GRID SYSTEM
    In diesem Video wollen wir uns einmal anschauen, wie man ein Buy Grid System in MQL5 programmieren kann. Hier werden Buy Positionen eröffnet, immer dann, wenn der Preis fünfzig Punkte steigt. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 programmieren kann. Um das zu tun, klicken Sie bitte im Metatrader 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 SimplesBuyGridSystem, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion gelöscht werden. Und wir entfernen auch die zwei Kommentarzeilen.   Zunächst importieren wir uns die Datei Trade.mqh. Die ist Bestandteil von MQL5 und stellt vereinfachte Handelsfunktionen bereit. Dazu erstellen wir uns eine Instanz von der Klasse CTrade. Die bekommt den Namen trade. Außerdem benötigen wir ein Array für Preisdaten. Das erzeugen wir mit MqlRates und der Name ist PriceInfo. Und für unser Signal erzeugen wir uns noch eine string Variable. Die bekommt den Namen Signal, aber noch keinen Wert zugewiesen. Innerhalb der OnTick Funktion erstellen wir uns eine statische Variable vom Typ double. Die hat den Namen NextBuyPrice und soll den Level für den nächste Kaufpreisaktion festlegen. Dieser Zusatz static, der sorgt dafür, dass diese Variable ihren Wert während der Laufzeit des Expert Advisors behält.   Im nächsten Schritt berechnen wir den Ask Preis. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen SYMBOL_ASK als Parameter. Und mit NormalizeDouble und _Digits stellen wir sicher, dass die richtige Anzahl von Nachkommastellen für das jeweilige Währungspaar automatisch berechnet wird. Mit Hilfe von ArraySetAsSeries sortieren wir unser PriceInfo Array jetzt von der aktuellen Kerze an abwärts. Und mit CopyRates füllen wir unser PriceInfo Array für das aktuelle Währungspaar und die aktuell ausgewählte Zeiteinheit. Wir starten mit Kerze null und kopieren die Preisinformationen für drei Kerzen in unser PriceInfo Array. Immer wenn wir keine geöffnete Position haben, das wäre der Fall, wenn PositionsTotal den Wert null zurückliefert, dann setzen wir den Preislevel für den nächsten Kauf auf null.   Um das Signal zu ermitteln rufen wir eine Funktion mit dem Namen CheckEntrySignal auf. Die existiert zu diesem Zeitpunkt noch nicht. Also müssen wir die gleich noch programmieren. Als Einstiegskonditionen prüfen wir hier, ob der Ask Preis größer oder gleich dem NextBuyPrice Level ist. Zweite Kondition ist, dass wir prüfen, ob unser Signal auf buy, also auf kaufen steht. Und wenn das der Fall ist, dann nutzen wir trade.Buy, um eine Position für zehn Mikrolot zu kaufen. Die ist gleichzeitig dann der Basiswert für unseren nächsten Kaufpreis. Den setzen wir jetzt nämlich auf den aktuellen Ask Preis plus fünfzig Punkte. Und damit wir auch was sehen, nutzen wir eine Comment Ausgabe. Die wird uns auf dem Chart den aktuellen Ask Preis und den NextBuyPrice anzeigen.   Soweit war es das mit der Hauptfunktion. Damit wir diese Funktion hier nutzen können, müssen wir die jetzt noch programmieren. Unsere Funktion soll CheckEntrySignal heißen und eine string Variable, also einen Text Wert zurückgeben. Dazu nutzen wir in unserem Beispiel eine ganz einfache Überprüfung. Und zwar prüfen wir, ob der Schlusskurs der letzten Kerze höher lag, als der Eröffnungskurs. Dann wäre die Kerze bullish und dann setzen wir unser Signal auf buy, also auf Kaufen. Im anderen Fall, wenn der Schlusskurs unter dem Eröffnungspreis liegt, dann wäre das ein Verkaufssignal. Und dann setzen wir unsere Signal Variable hier auf sell. Zum Schluss nutzen wir den return Befehl, um unser ermitteltes Signal an das Hauptmodul zurückzugeben. Das war es soweit. Wenn Ihnen das zu schnell ging oder wenn Sie nicht wissen, was alle diese Code Zeilen hier bewirken sollen,
    7 min
  • MQL5 TUTORIAL – 101 WELCHE HARDWARE FUERS ALGO TRADING
    In diesem Video möchte ich einmal über eine Frage sprechen, die mir immer wieder mal gestellt wird. Und zwar ist das die Frage: auf welcher Hardware kann man Metatrader vier oder fünf denn betreiben? Das hier ist gerade die neue Version vom CrowdAlgo Trading System. Das habe ich am 27.01.2001 neu erstellt. Und nächste Woche möchte ich damit starten, ein Live Experiment mit einem täglichen Video für den Februar zu starten. Und dafür brauche ich natürlich eine entsprechende Hardware. Darum habe ich mir für das neue Projekt einen Mini-PC gekauft. Der ist etwas größer als eine Zigarettenschachtel, ist bereits mit Windows 10 vorinstalliert und man kann den so um die hundert Euro bei Amazon oder anderen Online-Anbietern erwerben. Der Vorteil von so einem Mini-PC ist, dass er nicht viel Platz wegnimmt. Ich habe mal einen Kugelschreiber danebengelegt, dann kann man in etwa die Größe erkennen. Für meine tägliche Arbeit nutze ich Linux.   Und auf Linux habe ich eine Software installiert, die heißt Virtual Box. Es handelt sich dabei um eine sogenannte Virtualisierungssoftware. Die ist im Internet kostenlos erhältlich und damit kann man Windows in einem Fenster auf einer Linux Maschine laufen lassen. Ich nutze zum Beispiel gerade das Gastsystem mit Windows 10, um dieses Video hier auf meinem Linux PC aufzunehmen. Und mit Virtual Box lassen sich auch weitere Betriebssysteme in mehreren Fenstern gleichzeitig betreiben. Wer nicht zur Virtualisierung greifen will, der kann über eine Software namens VNC auch auf andere Geräte zugreifen und diese fernsteuern. Ich habe da eine Reihe von Geräten im Einsatz. Das hier ist so ein Gerät. Da läuft gerade die MQL4 Version vom CrowdAlgo Trading System. Tagesaktuell sind wir bei einem Bruttoprofit von 2.336 Dollar. Mit dieser Variante habe ich ein tägliches Video im Januar für YouTube erstellt.   Dieses Gerät hier hat 2 GB Arbeitsspeicher und läuft auf einem 32 Bit System. Und man kann jetzt hier über VNC auch andere Rechner auswählen. Das hier zum Beispiel ist noch ein Windows 8. Und dieser Rechner läuft ebenfalls mit 2 GB. Bei diesen beiden Varianten handelte es sich um sogenannte Compute Sticks. Ein Compute Stick ist in etwa so groß wie ein USB-Stick, vielleicht ein bisschen größer, hat einen HDMI Ausgang. Damit lässt er sich an jedem HDMI fähigen Bildschirm oder Fernseher betreiben. Und der Vorteil ist natürlich, dass aufgrund des geringen Platzbedarfes so ein Rechner quasi überall untergebracht werden kann. Solche Compute Sticks gibt es bei Online-Händlern für ungefähr hundert Euro zu kaufen. Die etwas coolere, aber auch deutlich teurere Variante sind sogenannte Mini Notebooks. Vielleicht kennen Sie diesen Formfaktor noch aus der Zeit, als man mit Pocket PCs gearbeitet hat. Die waren allerdings dann mit abgespeckten Windows CE oder Symbian Betriebssystemen bestückt. Diese beiden Rechner hier haben jeweils 8 GB Arbeitsspeicher. Und damit lässt sich der Metatrader schon sehr komfortabel betreiben.   Wem diese Variation zu teuer ist, der kann auch zu einem sogenannten Netbook greifen. Ich habe hier ein Netbook, das ist locker zehn Jahre alt mit 2 GB Arbeitsspeicher ausgestattet. Und das läuft jetzt hier mit MX Linux. Damit kann man mit einer Software die Wine oder Play on Linux heißt, den Metatrader vier ebenfalls betreiben. Das funktioniert selbst mit diesem alten (unv. #00:04:09-1#) Prozessor erstaunlich performant. Neben den hier vorgestellten Varianten gibt es natürlich auch noch die Desktop oder die Notebook Variante. Ich habe davon alles hier im Einsatz und nutze es für unterschiedliche Zwecke.   Mein Betriebssystem ist Linux und Windows läuft bei mir nur noch als Gastsystem in einer virtuellen Maschine. Und wenn man unterwegs mal schnell einen Blick auf das Konto werfen will, dann gibt es sogar noch eine mobile Version. Die lässt sich für Android und soweit ich weiß, auch für Apple Geräte herunterladen. Damit kann man sehen, was auf dem Konto gerade passiert.
    6 min
  • MQL5 TUTORIAL GRUNDLAGEN – 100 SIMPLES DREIECK OBJEKT
    In diesem Video wollen wir uns mal anschauen, wie man so ein dreieckiges Objekt auf einem Chart zeichnen kann. Es handelt sich hier um ein dynamisches Objekt, das immer wieder angepasst wird, wenn sich der Preis verändert. Also lassen Sie uns einmal schauen, wie man so etwas mit 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 Meta Editor auf. Und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage. Weiter. Ich vergebe hier mal den Namen SimplesDreieck, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen können Sie entfernen. Wir starten damit, dass wir uns zunächst Variablen für die höchste und für die niedrigste Kerze erstellen.   Außerdem brauchen wir für die Berechnung noch jeweils ein Array. Die Arrays bekommen den Namen High für die höchsten und Low für die niedrigsten Kerzenwerte. Mit Hilfe der Funktion ArraySetAsSeries sortieren wir jetzt unser High Array von der aktuellen Kerze an abwärts. Das Ganze wiederholen wir dann nochmal für das Low Array. Mit der Funktion CopyHigh lassen sich die Höchstpreise aus einer bestimmten Zeiteinheit kopieren. Und zwar für das aktuelle Währungspaar auf dem Chart, die aus dem Chart ausgewählte Zeiteinheit. Wir starten mit Kerze null und kopieren die Daten für die Höchstpreise von dreißig Kerzen in unser High Array. Eine entsprechende Funktion gibt es auch für die niedrigsten Preise. Die heißt dann CopyLow. Die tut das gleiche.   Und diesmal speichern wir die Ergebnisse im Array mit dem Namen Low. Um jetzt die höchste Kerze zu berechnen gibt es eine weitere nützliche Funktion mit dem Namen ArrayMaximum. Die liefert uns das maximale Element in unserem Array. Das Ergebnis speichern wir in dieser Variable. Das gibt es natürlich dann auch für die niedrigste Kerze. Hier heißt die Funktion dann ArrayMinimum. Der Rest ist gleich, bis auf den Namen des Arrays und der Variable. Jetzt brauchen wir ein Array für Preisinformationen. Das erstellen wir mit MqlRates. Auch das sortieren wir mit Hilfe des Befehls ArraySetAsSeries von der aktuellen Kerze an abwärts. Und mit der Funktion CopyRates können wir jetzt für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit, angefangen von Kerze null, Daten kopieren. Dieser Begriff hier gibt uns die Werte für alle verfügbaren Kerzen. Und diese Werte speichern wir in unserem Array Preisinformation. Bevor wir ein neues Objekt erstellen, möchten wir erstmal vorherige Objekte löschen. Das machen wir mit der Funktion ObjectDelete. Die soll hier für unser aktuelles Währungspaar alle Objekte mit dem Namen Dreieck löschen.   Danach nutzen wir ObjectCreate, um ein neues Objekt zu erstellen. Und zwar für das aktuelle Währungspaar auf dem Chart. Der Objektname soll Dreieck heißen. Der Typ des Objektes ist OBJ_TRIANGLE. Das Objekt soll auf dem Kerzenchart, also Chart null gezeichnet werden. Und zwar für den Zeitpunkt, an dem Kerze dreißig erscheint. Für den Schlusskurs von Kerze dreißig, das ist unser Ankerpunkt. Die eine Seite soll gezeichnet werden bis zu dem Zeitpunkt, wo die niedrigste Kerze der letzten dreißig Kerzen entsteht. Und zwar dort für den niedrigsten Preis der niedrigsten Kerze. Die andere Seite zeichnen wir bis zu dem Zeitpunkt, wo die höchste der letzten dreißig Kerzen entsteht. Und dort zum Höchstpreis der höchsten Kerze. Zum Schluss ändern wir noch zwei Objekteigenschaften. Das geht mit der Funktion ObjectSetInteger. Der erste Parameter hier ist null. Der steht für die Chart-ID. Und null steht für das laufende Chart. Hier möchten wir für das Objekt mit dem Namen Dreieck gerne die Eigenschaft OBJPROP_COLOR ändern.   Und zwar auf die Farbe Gelb. Das Ganze wiederholen wir dann nochmal für den Hintergrund. Das ist in etwa dieselbe Funktion. Aber diesmal ändern wir hier die Eigenschaft OBJPROP_FILL.
    7 min
  • MQL5 TUTORIAL 99 – NEUES LIVE CROWD ALGO TRADING SYSTEM
    In diesem Video wollen wir uns mal anschauen, wie so ein Algo Trading System im live Betrieb funktioniert und wie sich das über Tage hinweg entwickelt hat. Also lassen Sie uns mal schauen, wie sowas im Metatrader aussieht. Wie man erkennen kann, laufen hier eine ganze Menge Charts nebeneinander. Alle laufen mit dem gleichen System. Ich habe dieses System am 1. Januar 2021 online gestellt. Und derzeit bin ich gerade dabei, jeden Tag Videos aufzunehmen, um über den aktuellen Zustand und einige Dinge zu sprechen, die sich auf das System positiv oder negativ auswirken.   Eines dieser Dinge ist ein sehr unübliches Verhalten. Ich habe nämlich gestern Abend etwas getan, was ich normalerweise sonst nie machen. Und das ist: manuell offene Positionen zu schließen. Dazu habe ich mir eine Funktion eingebaut, wenn ich hier oben in der linken oberen Ecke klicke, kommt ein Fenster hoch, das mich fragt, ob ich alle Positionen schließen möchte. In dem Fall mache ich das jetzt nicht. Aber gestern Abend habe ich das getan. Und ich würde gerne darüber sprechen, warum ich das gemacht habe. Das hier ist die Webseite mit den Statistiken zu dem System. Wie man sieht, habe ich es Crowd Algo Trading System genannt. Meine Firma hießt Crowd Company. Crowd steht auch für eine größere Gruppe. Und wenn Sie nach dieser Bezeichnung mal googeln, dann werden Sie sehen, dass schon jede Menge Positionierungen vorhanden sind.   Das hier ist das Video von gestern. Wir sind heute am 12. Januar bei Tag zwölf. Und meine Statistik sieht jetzt so aus. Vermutlich fragen Sie sich jetzt, warum ich gestern manuell Positionen geschlossen habe, was für mich eigentlich sehr untypisch ist. Und der Grund dafür ist, dass ich festgestellt habe, dass die Zuwachskurve nach einigen Tagen immer flacher wird. Mir ist das 2016 schon aufgefallen, als ich das Brexit System live gestellt habe. Und gestern hat mich die Frage geplagt: Was wäre denn, wenn ich alle offenen Positionen schließe? Würde das dann den Steigungsverlauf der Equity und Balance Kurve positiv beeinflussen oder nicht? Normalerweise macht man sowas ja nicht im live Betrieb. Aber, da das hier ein experimentelles Echtgeldsystem auf einem Cent Konto ist und ich da sowieso jeden Tag dokumentiere, wollte ich auch mal etwas Neues ausprobieren.   Das System hier ist ein Klon. Das bedeutet, ich habe ein anderes System als Vorlage genutzt. Dieses System hat sich 2020 sehr, sehr gut verhalten. Man sieht hier eine Drowdown Situation im März, die sich aber schnell wieder gefangen hat. Und das sieht deutlich besser aus, als bei manchen anderen Systemen, die ich so getestet habe. Und wenn man mal genau hinsieht, dann kann man auch hier erkennen, dass am Anfang diese Steigungskurve etwas steiler war. Und da ich mit diesen Ergebnissen hier recht zufrieden war, probieren wir das mal mit diesem System hier aus. Wir haben in den letzten zwölf Tagen einen Profit von 450 Dollar gemacht. Das bedeutet, auch nach dem Schließen der Positionen gestern sind wir weiterhin Cash Flow positiv. Statistisch gesehen entspricht das momentan einem prozentualen Gewinn von 1,51 Prozent Netto wie Brutto. Wenn man das jetzt mal auf 120 Tage hochrechnen könnte, dann wären wir bei 15 Prozent. Und da ein Jahr 365 Tage hat, wären das 45 Prozent im Jahr.   Ich persönlich glaube nicht, dass wir so viel machen werden. Aber falls Sie sich mal von den aktuellen Statistiken überzeugen wollen, dann können Sie einfach nach dem System googeln. Wie gesagt, es gibt einen eigenen YouTube Kanal dafür. Und auf der passenden Webseite dazu kann man sich die Ergebnisse ansehen und sowohl den Metatrader, als auch die Testversion und die Statistiken herunterladen. Diese Videos hier sind automatisiert, weil ich jeden Tag eins davon machen muss. Aber falls Sie daran interessiert sind herauszufinden, was da funktioniert und warum, dann schauen Sie doch einfach mal rein und sehen Sie zu, wie sich das System in den nächsten Tagen und Wochen so entwickelt. Okay, das war es für heute.
    5 min
  • MQL5 TUTORIAL GRUNDLAGEN – 98 SO KLONEN SIE IHR MQL5 SYSTEM
    In diesem Video wollen wir uns einmal anschauen, wie man aus einer existierenden Installation von einem Metatrader 5, inklusive einer automatisierten Expert Advisor Lösung, die Daten so exportieren kann, dass man sie sogar portabel von einem USB-Stick laufen lassen kann. Also schauen wir uns einmal an, wie man sowas macht.   Wenn man im Metatrader hier oben auf Datenordner Öffnen klickt, dann sieht man normalerweise diese Ordner und die sind unterhalb eines Benutzerordners meistens in so einem verschlüsselten Ordner hier gespeichert. Es ist aber möglich, eine Version vom Metatrader über einen USB-Stick auf ein neues System zu kopieren, wo noch nichts installiert ist.   Dazu braucht man einige Dateien. Das hier ist ein brandneues Windows System. Und das hier ist ein USB-Stick. Hier habe ich eine portable Version für den Metatrader 5 und sogar für den Metatrader 4. Um diese Versionen zu erstellen, habe ich mir von meinem Linux System aus dem PlayOnLinux Ordner die entsprechenden Daten und Verzeichnisse kopiert und habe sie dann hier eingefügt. Hier in diesem Ordner findet man jetzt hier diese Datei. Die heißt terminal64.   Das ist eine exe-Datei. Und wenn ich die jetzt doppelklicke, dann würde der Metatrader starten. Derzeit wird hier nichts ausgeführt. Da der USB-Stick aber sehr langsam ist, kopiere ich mir das normalerweise komplett als Verzeichnis auf die C-Platte. Hier ist das entsprechende Verzeichnis. Ich habe das eben schon für das englische Video gemacht. Und wenn ich jetzt in das neu erstellte Verzeichnis wechsle und diese Datei terminal64 doppelklicke, dann kann man sehen, dass nach einiger Zeit hier der Metatrader auftaucht.   Beim ersten Start kann das eine ganze Zeitlang dauern. Hier kommt jetzt der Prozess für den Metatrader hoch. Und einige Sekunden später sollten wir dann auch dieses Fenster hier sehen. Ich habe jetzt schon meine Kontoinformationen hier eingegeben. Normalerweise ist beim ersten Start die Verbindung zum Konto unterbrochen. Und wenn man jetzt auf Datei Ordner öffnen klickt, dann sieht man, dass der Metatrader auch hier wieder auf dem neuen Rechner im Benutzerverzeichnis diesen kryptischen Ordner erstellt hat.   Alle Daten wurden rüber kopiert, inklusive der zip Datei und meiner selbstangelegten Ordner. Hier sind meine Quelldateien, meine kompilierten Dateien und auch der Ordner für die Libraries. Man kann den Expert Advisor jetzt auch von hier direkt auf das Chart ziehen. Ich starte jetzt mal hier einen Strategietest. Und auch das funktioniert wie es soll.   Und Sie haben das jetzt in wenigen Minuten von einem Rechner auf den anderen portiert. Denn in diesem kurzen Video haben Sie gelernt, wie Sie für eine bestehende Metatrader 5 Installation eine portable Version erstellen können, die sich sogar von einem USB-Stick aus starten lässt. Und falls Sie irgendwelche Fragen zu diesem Setup haben, dann lassen Sie es mich doch einfach wissen.
    4 min

About MQL5 Tutorial - Automatisch traden mit Metatrader5

From the publisher's feed

Metatrader5 MQL5 Expert Advisor Tutorial