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 – 39 SIMPLES CHART LABEL
    In diesem Video wollen wir uns einmal anschauen, wie man ein dynamisches Chart Label, wie diese rote Schrift hier oben, auf einem Chart erstellen kann. Es handelt sich hierbei um ein Objekt, das sich verändert, wenn der Preis sich verändert. Und wir wollen uns einmal anschauen, wie man so etwas in MQL5 programmieren kann. Um das zu tun, klicken Sie bitte auf dieses kleine Symbol hier oben oder drücken Sie die F4 Taste. Das ruft dann hier den Metaeditor auf. Und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier einmal den Namen SimplesChartLabel, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. Damit unser Chart Label etwas anzeigen kann, fangen wir damit an, dass wir den Ask Preis ermitteln. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen hier SYMBOL_ASK, da wir ja den Ask Preis benötigen. NormalizeDouble und _Digits gibt uns die Anzahl der Nachkommastellen. Das sind in diesem Fall fünf Nachkommastellen. Je nach Währungspaar kann sich das unterscheiden. Wir sehen aber, dass die Anzahl der Nachkommastellen hin und wieder variiert. Um unser Objekt zu erstellen nutzen wir ObjectCreate. Der erste Parameter hier steht für die Chart ID, oder in unserem Fall für das Hauptfenster. Der hat den Wert null. In unserem Fall ist das das Hauptfenster. Bei anderen Charts, in denen Oszillatoren genutzt werden, werden diese meistens in einem weiteren Fenster unterhalb des Charts dargestellt. Unser Objekt soll den Namen Label1 tragen. Hier geben wir den Typ des Objektes an. Wir nutzen OBJ_LABEL. Wenn man das einmal markiert und die F1 Taste drückt, dann sehen wir hier, dass es noch eine ganze Reihe anderer Objekt Typen gibt. Jeder dieser Objekt Typen unterstützt unterschiedliche Eigenschaften. Wenn wir hier einmal die letzten drei Parameter ausschneiden und ein Komma setzen, dann sehen wir hier auch die Auflistung der Parameter. Parameter eins war die Chart ID, Parameter zwei der Objekt Name. Wir sind gerade bei Parameter drei, das ist der Objekt Typ. Die nächsten drei Parameter stehen für ein Unterfenster, einen Datumswert und ein Preislevel. Diese Eigenschaften setzen wir in diesem Fall alle auf null. Danach nutzen wir ObjectSetString um die Schriftart zu setzen. Auch hier beziehen wir uns wieder auf die Chart ID null. Das Objekt mit dem Namen Label1. Diesmal ist die Objekteigenschaft OBJPROP_FONT. Und wir nutzen hier mal Impact. Nachdem wir definiert haben, wie unser Text angezeigt werden soll, müssen wir noch sagen, was angezeigt werden soll. Auch das geht mit ObjectSetString für Chart ID null, das Objekt Label1, setzen wir hier die OBJPROP_TEXT. Wir möchten gerne den Text Ask Price mit einem Doppelpunkt, gefolgt von dem ermittelten Ask Preis anzeigen. Es gibt auch noch die Methode ObjectSetInteger. Hiermit wird ein Integer Wert gesetzt. Wiederum für die gleichen Objekt Eigenschaften setzen wir diesmal OBJPROP_XDISTANCE. Das ist die Distanz vom linken Bildschirmrand. Ich nutze hier fünf Pixel. Und danach wiederholen wir das Ganze noch mal für die Eigenschaft OBJPROP_YDISTANCE. Und setzen die Distanz zum oberen Rand auf zehn Pixel. Das war es soweit. Wenn Ihnen das hier zu schnell ging oder wenn Sie nicht verstanden haben, was der Code hier bewirken soll, dann möchten Sie sich vielleicht einmal die anderen Videos aus diesem Grundlagenkurs ansehen. Oder vielleicht ist sogar der Premiumkurs auf der Webseite interessant für Sie. Für den Moment klicken wir hier auf Kompilieren oder drücken die F7 Taste. Ich habe hier irgendwo einen Fehler gemacht. Hier ist ein Komma zu viel. Man kann das immer schön finden, indem man hier unten auf den Fehler klickt. Der Cursor springt direkt zu der Stelle wo der Fehler aufgetreten ist. Wiederholen wir den Kompiliervorgang erneut. Dann haben wir diesmal keine Fehler.
    7 min
  • MQL5 TUTORIAL GRUNDLAGEN – 38 SO ERMITTELN SIE TASTEN EVENTS
    In diesem Video wollen wir uns einmal anschauen, wie man einen Tastendruck ermitteln und verwenden kann. Auf Englisch heißt das Key Event. Und wenn ich jetzt hier auf diesem Chart eine Taste drücke, zum Beispiel die B Taste, dann wird mir hier eine Messagebox angezeigt die sagt: Eine Taste wurde gedrückt. Die Taste war B. Und wir wollen wir uns jetzt einmal anschauen, wie man so etwas in MQL5 programmieren kann. Um das zu tun, klicken Sie bitte auf diesen kleinen Button 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 SimplerKeyEvent, 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. Meistens verwenden wir hier diese OnTick Funktion. Denn, das ist die Funktion die automatisch aufgerufen wird, wenn sich der Preis auf dem Chart ändert. In diesem Fall möchten wir aber überprüfen, ob eine bestimmte Taste gedrückt wurde. Und dazu brauchen wir ein anderes Ereignis. Dieses andere Ereignis hat den Namen OnChartEvent. Und wir müssen hier einige Parameter übergeben. Wir haben das zwar schonmal für die Mausklicks alles durchgenommen, aber wir wiederholen das an der Stelle nochmal. Der erste Parameter ist ein integer Wert. Es handelt sich hier um die sogenannte EventID. Die wird verwendet, um später herauszufinden, was für eine Art von Ereignis gerade stattgefunden hat. Parameter Nummer zwei ist ein long Wert. Darum trägt er auch den Namen lparam. Und dieses kaufmännische und hier ist kein Schreibfehler. Sondern, das ist die Art und Weise, wie in MQL5 Werte als Referenz übergeben werden. Wir sehen das auch hier wieder im dritten Parameter. Hier handelt es sich um einen Wert vom Typ double. Darum wird hier auch der Name dparam genutzt. Und der letzte Parameter ist eine Textkette. Die wird ebenfalls als Referenz übergeben und trägt den Namen sparam. Soweit so gut. Was können wir jetzt damit machen? Nun, wir starten damit, dass wir die EventID abfragen. Und in unserem Fall interessiert uns, ob der Rückgabewert den Wert CHARTEVENT_KEYDOWN hat. Das ist die Art von Ereignis, die ausgelöst wird, wenn wir eine Taste drücken. Und wenn das zutrifft, dann lassen wir uns hier den Keycode übersetzen. Das übernimmt die Funktion TranslateKey. Die holt uns nämlich den Wert aus dem lparam. Wir konvertieren das hier in einen integer Wert und weisen das Ergebnis der Variable KeyThatWasPressed zu. Und damit wir auch was sehen, erstellen wir uns jetzt hier eine sogenannte MessageBox. Das übernimmt die Funktion MessageBox, die mit MQL5 mitgeliefert wird. Auch die braucht ein paar Parameter. Der erste Parameter hier ist die Textkette, die wir gerne in der MessageBox sehen möchten, gefolgt von dem Wert, den wir uns hier mit ShortToString noch so konvertieren, dass er entsprechend ausgegeben wird. Der nächste Parameter hier ist die Überschrift der MessageBox. Und Parameter Nummer drei ist die Art und Weise, wie die MessageBox aufgebaut sein soll. Uns reicht hier ein Okay-Button. Wenn Sie man den Begriff MessageBox markieren und die F1 Taste drücken, dann sehen Sie, dass es hier noch ganz viele andere Möglichkeiten gibt. MB_OK ist das, was wir nutzen. Man könnte sich aber auch Yes, No und Cancel anzeigen lassen. Und alle diese Buttons haben einen speziellen Rückgabewert, den man hier abfragen kann. Für unser einfaches Beispiel brauchen wir das nicht. Denn dieser Okay-Button hier dient nur dazu, die Box wieder zuzumachen. Bitte vergessen Sie nicht hier die schließenden Klammern. Das war es auch schon so weit. Wir können jetzt hier auf Kompilieren klicken oder die F7 Taste drücken. Bei mir hat das ohne Fehler und Warnungen funktioniert. Falls Sie Fehler haben oder nicht wissen, was dieser ganze Code hier bewirken soll, dann möchten Sie sich vielleicht die anderen Videos aus dieser Grundlagenserie anschauen.
    7 min
  • MQL5 TUTORIAL GRUNDLAGEN 37 SO IMPORTIEREN SIE EXTERNEN QUELLCODE
    In diesem Video wollen wir uns einmal anschauen, wie man externe Signale importieren kann. Wir sehen hier Buy und Sell Signale. Die werden erzeugt von einer externen Datei, die uns hier den MACD anzeigt. Und wir wollen uns einmal anschauen, wie man solch einen externen Sourcecode in MQL5 importieren kann. Um das zu tun, klicken Sie bitte auf dieses kleine Symbol hier oben oder drücken Sie die F4 Taste auf Ihrer Tastatur. 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 SimplerSourcecodeImport, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion gelöscht werden. Und wir entfernen auch diese zwei Kommentarzeilen hier. Wir starten hier mit dem include Befehl. Innerhalb des Verzeichnisses, in dem sich dieser Sourcecode hier befindet, gibt es ein Unterverzeichnis mit dem Namen import. Und dort gibt es eine Datei mit dem Namen CheckEntry_MACD.mq5. Machen wir das Verzeichnis mal kurz auf. Dann sehen wir, hier ist die Quellcodedatei. Mq5 sind immer lesbare Quellcodedateien. Das bedeutet, man kann die jetzt hier auch mit dem Editor aufmachen. In unserem Beispiel enthält die externe Datei eine Funktion mit den Namen CheckEntry, die einen string Wert, also eine Textkette zurückliefert. Dieser Teil hier dient der Berechnung. Das haben wir bereits in anderen Videos besprochen. Hier unten geben wir das Signal zurück. In MQL5 sieht das dann so aus. Wir definieren hier eine string Variable mit dem Namen signal. Und rufen die Funktion CheckEntry genauso auf, als würde die direkt hier im Quellcode stehen. Tatsächlich wird die aber über die externe Datei hier importiert. Erstellen wir uns also noch eine Chartausgabe. Die wird mit dem Comment Befehl den Text Signal und das zurückgelieferte signal auf dem Chart ausgeben. Das war es auch schon so weit. Wenn wir jetzt hier auf Kompilieren klicken, dann funktioniert das bei mir. Bei Ihnen würde das allerdings nur funktionieren, wenn Sie die Datei hier auch zur Verfügung haben. Ich habe hier keine Fehler, also kann ich jetzt hier oben klicken oder die F4 Taste drücken, um in den Metatrader zurückzukehren. Und im Metatrader klicke ich auf Ansicht, Strategietester oder drücke die Tastenkombination Ctrl+R. Hier rufe ich jetzt die neu erstellte Datei SimplerSoucecodeImport.ex5 auf, markiere hier die Option für die Visualisierung und starte einen Test. Und jetzt wird mir hier der MACD angezeigt und ich sehe auch die gelieferten Signale hier oben in der Chartausgabe. Ändern wir hier mal den Quellcode und importieren uns das Modul für den RSI Einstieg, Kompilieren das Ganze erneut, stoppen den aktuellen Test und starten ihn neu. Dann sehen wir diesmal, dass hier der RSI angezeigt und berechnet wird. Sie kennen solche Importfunktionen vielleicht aus dem Robot Trading System. Hier gibt es endlos viele Möglichkeiten, externe Einstiege zu programmieren, die man dann einfach mit ein paar Mausklicks importieren kann. Und wenn man einmal in MQL5 den Ordner include aufruft, dann sehen wir hier ganz viele mqh Dateien. Die gibt es auch hier in den Unterordnern. Und die lassen sich ebenfalls mit dem Editor aufrufen. Alle diese Dateien hier enthalten lesbaren Quelltext, den man sich anschauen kann. Wir haben zum Beispiel hier den RSI Einstieg nicht programmiert, sondern eine externe Datei verwendet. Und Sie haben in diesem kurzen Video gelernt, wie Sie externe Quellcodedateien mit MQ5 für ein eigenes automatisiertes System mit der include Funktion einbinden können. Und Sie haben das selbst programmiert, mit diesen paar Zeilen hier in MQL5.
    5 min
  • MQL5 TUTORIAL GRUNDLAGEN – 36 SIMPLER MAUSKLICK EVENT
    In diesem Video wollen wir uns einmal anschauen, wie man auf dem Chart einen Mausklick für ein Ereignis nutzen kann. Wir öffnen hier mal ein neues Chart Fenster. Wenn ich jetzt hier klicke, dann passiert nichts. Ziehen wir einmal hier unten den Expert Advisor SimplerMausKlick auf unser Chart. Bestätigen das mit Okay. Und klicken, dann bekommen wir hier eine Message Box angezeigt. Die sagt uns: Das Chart wurde geklickt, X-Wert und Y-Wert. Und wir wollen uns jetzt einmal anschauen, wie man so etwas in MQL5 programmieren kann. Dazu klicken Sie im Metatrader bitte hier oben auf dieses kleine Symbol oder drücken die F4 Taste. Das ruft dann hier den Metaeditor auf. Und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier einmal den Namen SimplerMausKlick, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden. Und auch die beiden Kommentarzeilen werden entfernt. OnTick ist die Funktion, die wir in der Regel nutzen. Denn auch hier handelt es sich um ein Ereignis. Dieses Ereignis wird automatisch immer dann aufgerufen, wenn sich der Preis auf dem Chart verändert. Damit ist es eine sehr interessante Funktion. Aber es gibt durchaus auch noch andere Events. In unserem Fall nutzen wir hier OnChartEvent. Da das Ereignis hier auf dem Chart ausgelöst wird, wenn ich mit der Maus klicke. Dieses Ereignis benötigt einige Parameter. Wir starten mit dem Begriff const für Konstante. Der erste Parameter ist ein integer Wert. Und hier handelt es sich um die Ereignis ID. Die werden wir später abfragen, um hierauszufinden, welche Form von Ereignis ausgelöst wurde. Der nächste Parameter ist ein long Parameter. Und wundern Sie sich nicht, dieses kaufmännische und hier am Ende ist kein Schreibfehler. Sondern das ist die Art und Weise, wie in MQL5 Werte als Referenz übergeben werden. Der Name für diesen Parameter ist lparam für long Parameter. Unsere nächste Übergabe ist ein double Wert. Dieser Parameter heißt dparam, weil es sich um einen double Wert handelt. Und der letzte Parameter ist ein Text, also ein string. Der trägt den Namen sparam. Und das war es auch schon so weit. Was können wir jetzt mit diesen Parametern anstellen? In unserem Fall prüfen wir, was für einen Wert die ID hat. Und zwar möchten wir gerne wissen, ob wir den Wert CHARTEVENT_CLICK geliefert bekommen. Und wenn das der Fall ist, dann nutzen wir eine sogenannte MessageBox. Die soll uns den Text ausgeben: Chart wurde geklickt. Den X-Wert, der steckt in dem Parameter lparam. Den Y-Wert, der befindet sich im Parameter dparam. Das hier ist nur die Überschrift. Und ganz zum Schluss nutzen wir MB_OK. Damit geben wir an, welche Art von Button unsere MessageBox haben soll. Und reicht hier ein Okay Button. Wenn Sie soweit alles haben, dann können Sie hier auf Kompilieren klicken oder die F7 Taste drücken. Das hat bei mir hier funktioniert. Und wenn das bei Ihnen auch so ist, dann klicken Sie hier oben rechts oder drücken Sie die F4 Taste, um in den Metatrader zurückzukehren. Im Metatrader passiert zunächst einmal nichts. Dazu müssen Sie auf einem Chart erst mit Drag and Drop hier diesen Expert Advisor SimplerMauseKlick aktivieren und mit Okay bestätigen. Und wenn wir jetzt irgendwo klicken, bekommen wir hier unsere Message Box angezeigt. Und auch die Koordinaten, an denen der Mausklick stattgefunden hat. Diese Informationen könnte man jetzt beispielsweise im halbautomatischen Handeln nutzen, um ein Ereignis auszulösen, einen Stopp zu setzen oder ein Objekt einzuzeichnen. Die Message Box funktioniert übrigens nicht im Strategietester. Dafür würden wir den Comment Befehl nutzen. Und Sie haben in diesem kurzen Video gelernt, wie man mit Hilfe von einem Event die Koordinaten für einen Mausklick auf dem Chart ermitteln kann. Und Sie haben das selbst programmiert, mit diesen paar Zeilen hier im MQL5.
    6 min
  • MQL5 TUTORIAL GRUNDLAGEN – 35 SO ERMITTELN SIE DIE NIEDRIGSTE KERZE
    In diesem Video wollen wir uns einmal anschauen, wie man die Niedrigste aus 100 Kerzen berechnen kann. Wenn wir hier in das Chart hineinzoomen, dann sehen wir hier diese magentafarbene Linie, die wird jeweils unterhalb der niedrigsten Preise der letzten 100 Kerzen gezeichnet. Lassen Sie uns also einmal herausfinden, wie man so etwas mit MQL5 programmieren kann. Um das zu tun klicken wir im Meta-Trader auf dieses kleine Symbol hier oder drücken die F4-Taste. Das ruft dann hier den Meta-Editor auf, und hier klicken wir auf Datei, neue Datei, Expert Advisor aus Vorlage, weiter. Ich vergebe hier einmal den Namen SimpleNiedrigsteKerze, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb dieser OnTick-Funktion hier gelöscht werden. Auch die zwei Kommentarzeilen werden entfernt. Wir starten, indem wir ein Array für Preisdaten erstellen. Das übernimmt für uns die Funktion MqlRates. Der Name von unserem Array wird PriceInformation sein. Mit Hilfe der Funktion ArraySetAsSeries wird dieses Array jetzt von der aktuelle Kerze an abwärts sortiert. Danach füllen wir das Array mit Preisdaten. Das übernimmt die Funktion CopyRates. Für das aktuelle Währungspaar auf dem Chart und die aktuelle, auf diesem Chart ausgewählte, Zeiteinheit. Wir starten bei Kerze 0, und wir benötigen die Preisdaten für 100 Kerzen, die wir in unserem Array speichern. Außerdem benötigen wir eine Variable für die niedrigste Kerze. Die wird LowestCandle heißen. Der Datentyp ist in diesem Fall ganzzahlig. Denn, wir werden nur die Nummer der letzten Kerze erhalten. Den Preis müssen wir uns dann später noch errechnen. Auch hier nutzen wir ArraySetAsSeries, um unser Array mit dem Namen Low von der aktuellen Kerze an abwärts zu sortieren. Und jetzt nutzen wir eine Funktion mit dem Namen CopyLow. Die liefert uns die Minimalpreise der angegeben Periode für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit. Wir starten bei der Kerze 0. Das ist die aktuelle Kerze. Kopieren uns die Preisdaten von 100 Kerzen in unser Array mit dem Namen Low. Und jetzt können wir die niedrigste Kerze ermitteln, indem wir eine Funktion mit dem Namen ArrayMinimum nutzen. Die sucht nach dem minimalsten Element in unserem Array. Und zwar in dem Array mit dem Namen Low. Von Kerze 0 bis Kerze 100. Damit hätten wir jetzt die Nummer der niedrigsten Kerze ermittelt. Und das ermöglicht uns, mit dem Befehl ObjectCreate, ein Objekt zu erstellen. Für das aktuelle Währungspaar. Das Objekt soll den Namen haben, Line1. Das steht für Linie 1. Wir nutzen hier Objekt HLINE. Wenn man das einmal markiert und die F1-Taste drückt, dann sieht man dass das für die horizontale Linie steht. Es gibt noch eine ganze Reihe von anderen Objekttypen, die man hier verwenden könnte. Je nach dem welches Objekt Sie nutzen, haben Sie unterschiedliche Parameter, die angegeben werden müssen. In unserem Fall geben wir an, auf welchem Chart das Objekt gezeichnet werden soll. Wir nutzen hier eine Null für das Hauptchart. Oszillatoren werden oft in einem separaten Fenster unter dem Hauptchart gezeichnet. Das möchten wir nicht. Gezeichnet werden soll die horizontale Linie ab der aktuellen Kerze 0, und zwar auf dem niedrigsten Preis, der niedrigsten Kerze aus unserem PriceInformationArray. Objekte haben Eigenschaften, die man verändern kann. In unserem Fall nutzen wir ObjectSetInteger. Auch hier müssen wir im ersten Parameter wieder die Chart ID für unser Hauptfenster angeben, also eine 0. Das hier ist der Objektname. Und die Objekteigenschaft, die wir ändern möchten, ist die Farbe. Auch da gibt es eine Auswahl von unterschiedlichsten Eigenschaften, die man sich in der Hilfe anschauen kann. Und der Wert für unsere Farbe soll clrMagenta sein. Das ist eine von vielen vordefinierten Farben, die man hier nutzen kann. Für die Objektbreite funktioniert das ganz ähnlich. Auch hier sind die ersten zwei Parameter identisch. In diesem Fall setzen wir aber die Eigenschaft für die Objektbreite und nu...
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 34 SO ERMITTELN SIE DIE HOECHSTE KERZE
    In diesem Video wollen wir einmal herausfinden, wie man die höchste der letzten einhundert Kerzen ermitteln kann. Und wir werden zusätzlich eine horizontale Linie darüber zeichnen. Also lassen Sie uns herausfinden, wie man so etwas mit MQL5 programmieren kann. Dazu klicken wir im Metatrader auf dieses kleine Symbol hier oben oder drücken die F4 Taste. Das ruft dann hier den Metaeditor auf. Und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier einmal den Namen SimpleHoechsteKerze, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion entfernt werden. Und auch die zwei Kommentarzeilen hier werden gelöscht. Zunächst erstellen wir uns mit MqlRates ein Array für unsere Preisinformationen. Danach wird das Array mit ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Jetzt füllen wir das Array mit Preisdaten. Das geht mit CopyRates für das aktuelle Währungspaar auf dem Chart und die auf dem Chart eingestellte Zeiteinheit. Wir starten bei Kerze null. Wir benötigen die Preisdaten für einhundert Kerzen. Und die speichern wir in unserem PriceInformation Array. Um die höchste Kerze zu ermitteln brauchen wir eine Variable. Ich nenne die hier mal HighestCandle. Die Variable hat einen Integer Wert, also es handelt sich um einen ganzzahligen Inhalt. Denn wir werden damit zunächst einmal die Nummer der höchsten Kerze ermitteln. Außerdem hätte ich gerne ein Array für die höchsten Preise. Das bekommt den Namen High. Es ist vom Typ double, denn es wird auch Nachkommastellen aufnehmen für die Preisdaten. Dieses Array wird jetzt von der aktuellen Kerze an abwärts sortiert, indem wir ArraySetAsSeries benutzen. Und jetzt nutzen wir CopyHigh um für das aktuelle Währungspaar auf dem Chart und die dort eingestellte Zeiteinheit von Kerze null für einhundert Kerzen die Höchstpreise zu kopieren. Das ermöglicht uns mit der Funktion ArrayMaximum die höchste von einhundert Kerzen in unserem High Array zu berechnen. Und für diese Kerze erstellen wir jetzt mit ObjectCreate auf dem aktuellen Chart eine Linie mit dem Namen Line1. Es soll eine horizontale Linie werden. Darum nutze ich hier OBJ_HLINE. Wenn man das einmal markiert und F1 drückt, dann sieht man hier die unterschiedlichen Objekttypen, die erstellt werden können. Das Objekt soll auf dem aktuellen Chart erscheinen. Das ist hier dieser Parameter für den Index des Fensters. Wir starten von Kerze null und platziert werden soll unsere horizontale Linie bitte auf dem Höchstpreis der höchsten Kerze aus unserem PriceInformations Array. Mit Hilfe von ObjectSetInteger kann man noch Objekteigenschaften verändern. Zum Beispiel hier die Farbe. Wir tun das für das aktuelle Chartfenster und unsere Linie mit dem Namen Line1. Wir möchten gerne die Eigenschaft für die Farbe verändern. Hier haben wir clrGreen gewählt. Das ist eine von zahlreichen Farben, die man hier auswählen kann. Ändern wir das mal auf Magenta. Es lassen sich auch noch andere Eigenschaften verändern. Zum Beispiel hier die Objektbreite. Ich hätte gerne eine etwas dickere Linie von drei Pixeln. Und damit unser Objekt auch immer an der richtigen Stelle gezeichnet wird, nutzen wir hier ObjectMove für das aktuelle Chart, um unsere horizontale Linie im Hauptfenster, angefangen von Kerze null, beim höchsten Preis der letzten hundert Kerzen einzuzeichnen. Zum Schluss hätte ich gerne noch eine Ausgabe auf dem Chart. Das übernimmt der Comment Befehl. Der wird uns die Nummer der höchsten Kerze und den entsprechenden Preis auf unserem Chart anzeigen. Das war es soweit. Wenn Ihnen das hier zu schnell war oder Sie nicht verstehen, was all diese Code Zeilen hier bewirken sollen, dann möchten Sie sich vielleicht noch die anderen Videos aus dieser Grundlagenserie anschauen. Oder vielleicht ist sogar der Premium Kurs interessant für Sie. Den finden Sie auf der Webseite. Für den Anfang klicken wir hier auf Kompilieren oder drücken die F7 Taste.
    7 min
  • MQL5 TUTORIAL GRUNDLAGEN – 33 SO FUNKTIONIERT EINE TEILSCHLIESSUNG FUER SELL TRADES
    In diesem Video wollen wir uns einmal anschauen, wie man für eine Sell Position die Positionsgröße verringern kann. Derzeit haben wir hier eine Positionsgröße von neun Mikrolot. Und sobald sich der Preis hier unterhalb dieser grünen Linie bewegt, wird unsere Positionsgröße reduziert. Jetzt haben wir nur noch sieben Mikrolot, jetzt sechs und jetzt zwei. Wir wollen uns jetzt einmal anschauen, wie man so etwas in MQL5 programmieren kann. Dazu klicken wir im Metatrader auf dieses kleine Symbol hier oben oder drücken die F4 Taste. Das ruft dann hier den Metaeditor auf. Und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier einmal den Namen SimplerSellPositionModifier, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. Wir starten mit einem include Befehl für die Datei Trade.mqh. Und erstellen uns danach eine Instanz von der Klasse CTrade, der wir den Namen trade geben. In der OnTick Funktion müssen wir zunächst einmal den Bid Preis ermitteln. Das geht mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen SYMBOL_BID, alles in Großbuchstaben, und mit NormalizeDouble und _Digits sorge ich hier dafür, dass automatisch auch die richtige Anzahl der Nachkommastellen berechnet wird. Mit der Funktion PositionsTotal prüfen wir ab, ob wir keine Positionen geöffnet haben. Das ist der Fall, wenn der Rückgabewert null ist. Und wenn das zutrifft, dann nutzen trade.Sell, um eine Testpositionen mit einer Positionsgröße von zehn Mikrolot zu eröffnen. Und zum Schluss rufen wir hier die noch nichtexistierende Funktion ChangePositionSize auf und übergeben ihr den Bid Preis. Die müssen wir jetzt noch programmieren. Wir nutzen hier void, da wir keinen Rückgabetyp benötigen. Der Name soll ChangePositionSize sein. Und hier übernehmen wir den Parameter, den wir hier oben an die Funktion überbeben haben. Danach ermitteln wir hier mit AccountInfoDouble und dem Parameter ACCOUNT_BALANCE das Bruttoguthaben. Das Ganze wiederholen wir hier noch mal für die Equity. Das ist das Nettoguthaben. Und der passende Parameter ist ACCOUNT_EQUITY. Auch das Nettoguthaben ermitteln wir mit AccountInfoDouble. Aber diesmal nutzen wir ACCOUNT_EQUITY als Parameter. Mit einer Vorschleife gehen wir jetzt alles Positionen durch. Die Gesamtanzahl der Positionen wird uns mit PositionsTotal angezeigt. Und solange noch Positionen gefunden werden, zählen wir hier runter. Mittels PositionsGetSymbol holen wir uns für den aktuellen Schleifenzählerwert das Positionssymbol, also das Währungspaar. Denn wir möchten nur dann weitermachen, wenn das aktuelle Währungspaar auf dem Chart und das Positionssymbol übereinstimmen. Wenn das so ist, dann ermitteln wir mit PositionGetInteger POSITION_TICKET die Nummer für das Positionsticket. Denn die brauchen wir gleich für die Teilschließung. Mit der gleichen Funktion und dem Parameter POSITION_TYPE möchten wir noch die Positionsrichtung ermitteln. Denn, wir wollen ja explizit nur die Positionsgröße verändern, wenn es sich um eine Sell Position handelt. Also prüfen wir ab, ob die PositionDirection, also die Positionsrichtung übereinstimmt mit dem Wert POSITION_TYPE_SELL. Und sobald unsere Equity jetzt mindestens zehn Punkte über unserer Balance liegt, nutzen wir trade.PositionClosePartial für unser PositionTicket, das wir hier oben ermittelt haben, um die Positionsgröße um jeweils ein Mikrolot zu verringern. Dieser letzte Wert hier stellt einen Toleranzwert dar. Da nutzen wir minus eins. Zum Schluss müssen wir noch ein paar Schleifen schließen und die Funktion beenden. Und das war es. Falls Ihnen das hier zu schnell ging, oder Sie nicht wissen, was der ganze Code bewirken soll, dann möchten Sie sich vielleicht zunächst die anderen Videos aus dieser Grundlagenserie einmal anschauen. Vielleicht ist aber auch der Premiumkurs interessant für Sie.
    6 min
  • MQL5 TUTORIAL GRUNDLAGEN – 32 SO VERKLEINERN SIE EINE BUY POSITION
    In diesem Video wollen wir uns einmal anschauen wie man die Positionsgröße von einer bestehenden Position mit MQL5 verändern kann. Sobald hier der Preis oberhalb der grünen Linie landet, sollten wir sehen dass sich hier unten das Volumen verändert. Ich beschleunige das hier mal kurz. Achten Sie auf die Positionsgröße. Und wir wollen in diesem Video einmal herausfinden wie man so eine Teilschließung einer Position programmieren kann. Um das zu tun klicken Sie im Meta Trader bitte auf dieses kleine Icon hier, 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 SimplerBuyPositionModifierEA. Klicke auf weiter, weiter und fertigstellen. Jetzt entfernen wir alles oberhalb der OnTick-Funktion und auch die zwei Kommentarzeilen können weg. Wir starten mit einem Include-Befehl und zwar für die Datei Trade.mqh. Die liefert und Handelsfunktionen. Darum erstellen wir uns hier erst einmal von der Klasse CTrade eine Instanz mit dem Namen Trade. Die werden wir gleich brauchen, wenn mir Positionen eröffnen oder verändern möchten. Zunächst einmal müssen wir dafür den Ask Preis ermitteln. Das geht mit der Funktion SymbolInfoDouble. Für das aktuelle Währungspaar benutzen wir SYMBOL_ASK und mit NormalizeDouble und _Digits sorgen wir dafür, dass wir auch automatisch die richtige Anzahl von Nachkommastellen berechnen. Je nach dem welches Währungspaar wir wählen, können das nämlich drei oder fünf Nachkommastellen sein. Im nächsten Schritt prüfen wir mit der Funktion PositionsTotal ob wir keine geöffneten Positionen haben. In diesem Fall liefert uns die Funktion den Wert Null zurück. Und wenn das zutrifft, dann nutzen wir trade.buy um eine Testposition zu eröffnen. Natürlich würde man das nicht auf einem Echtgeldkonto machen. Aber wir eröffnen hier eine Position mit zehn Microlot, damit wir etwas haben, was wir später verändern können. Und zu guter Letzt möchte wir hier noch die neu erstellte Funktion ChangePositionSize aufrufen. Der übergeben wir hier den Ask Preis den wir hier oben ermittelt haben. Die Funktion existiert aber bis jetzt noch nicht, deswegen müssen wir die jetzt programmieren. Wir nutzen in diesem Fall void, da wir keinen Rückgabetyp benötigen. Der Name der Funktion soll ChangePositionSize sein. Und hier sehen wir den übergebenen Ask Preis-Parameter von hier oben. Jetzt müssen wir ein paar Dinge berechnen. Wir fangen an mit der Balance, also dem Bruttoguthaben. Das kriegen wir über die Funktion AccountInfoDouble. Als Parameter übergeben wir ACCOUNT_BALANCE. Alles in Großbuchstaben. Für das Nettoguthaben funktioniert das ähnlich. Auch mit AccountInfoDouble. Diesmal geben wir aber als Parameter ACCOUNT_EQUITY an. Wir nutzen hier eine For-Schleife um alle Positionen durchzugehen. So lange hier noch geöffnete Positionen gefunden werden. Für jede dieser Funktionen möchten wir jetzt das Währungspaar ermitteln. Das macht die Funktion PositionGetSymbol. Für den aktuellen Schleifenzähler. Danach prüfen wir ob das Währungspaar auf dem Chart mit dem Positionssymbol identisch ist. Und wenn das der Fall ist, dann möchten wir gerne die Ticketnummer ermitteln. Die bekommen wir über die Funktion PositionGetInteger. Als Parameter wird hier POSITION_TICKET übergeben. Wir brauchen auch noch die Positionsrichtung. Die kriegen wir auch über PositionGetInteger. Diesmal mit dem Parameter POSITION_TYPE. Und wenn es sich um eine Kaufposition handelt, also wenn der Rückgabewert dem Wert POSITION_TYPE_BUY entspricht, dann prüfen wir zu guter Letzt auch noch, ob die Equity mindestens zehn Punkte höher ist, als das aktuelle Bruttoguthaben. Und erst wenn alle diese Bedingungen hier erfüllt sind, dann nutzen wir trade.PositionClosePartial, um für das aktuelle Ticket die Position um jeweils einem Microlot zu verringern. Der letzte Parameter hier gibt eine Punktetoleranz an. Wir verwenden hier -1 und zu guter Letzt beenden wir noch die I...
    7 min
  • MQL5 TUTORIAL GRUNDLAGEN – 31 SO SCHLIESSEN SIE ALLE SELL POSITIONEN
    In diesem Video soll es darum gehen, wie man automatisch Sell Positionen schließen kann. Dieser Expert Advisor hier tut nichts anderes, als nacheinander zehn Positionen zu eröffnen. Und sobald diese zehn Positionen auf dem Chart eröffnet worden sind, schließt er alle auf einen Schlag. Wir wollen uns jetzt einmal anschauen, wie man so etwas in MQL5 programmieren kann. Um zu starten klicken wir nach wie vor erst mal hier oben auf dieses kleine Symbol oder drücken die F4 Taste. Das ruft dann hier den Metaeditor auf. Und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier einmal den Namen SimplerSellPositionCloser, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann hier alles oberhalb der OnTick Funktion gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. Wir starten mit einem include Befehl. Damit importieren wir uns die Datei Trade.mqh. Die enthält die Klasse CTrade. Davon erstellen wir uns jetzt eine Instanz mit dem Namen trade, die wir später zur Eröffnung der Positionen benötigen. Da wir Sell Positionen eröffnen möchten, müssen wir zunächst den Bid Preis ermitteln. Das tun wir mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen SYMBOL_BID, damit wir den Bid Preis zurückerhalten. Und mit NormalizeDouble und _Digits sorgen wir dafür, dass die benötigte Anzahl der Nachkommastellen automatisch ermittelt wird. Wir möchten gerne wissen, ob wir keine Positionen eröffnet haben. Denn, wenn die Positionsanzahl, die wir mit PositionsTotal berechnen können, kleiner ist als zehn, dann machen wir uns hier mit trade.Sell, noch einige Testpositionen auf. Natürlich würde man das nicht auf einem Echtgeldkonto durchführen. Aber wir müssen hier einige Positionen eröffnen, damit wir etwas haben, was wir hinterher schließen können. Für die Eröffnung nutzen wir trade.Sell. Unsere Positionsgröße ist zehn Mikrolot. Der Rest dieser Befehlskette hier wird in den anderen Videos dieser Grundlagenserie beschrieben. Und sobald unsere Gesamtanzahl der Positionen exakt zehn Positionen ist, möchten wir alle Sell Positionen auf einmal schließen. Und zwar mit dem Befehl CloseAllSellPositions. Diese Funktion hier gibt es aber noch gar nicht. Darum müssen wir die jetzt programmieren. Wir nutzen hier void, da wir keinen Rückgabetyp benötigen. Der Name der Funktion soll CloseAllSellPositions sein. Wir starten hier mit einer Vorschleife und gehen von der Gesamtanzahl der Positionen alle Positionen durch. Zunächst ermitteln wir die Ticket-Nummer. Das geht mir der Funktion PositionGetTicket für die aktuelle Positionsnummer. Danach möchten wir wissen, welchen Positionstyp wir haben. Das ermitteln wir mit PositionGetInteger. Und als Parameter übergeben wir hier POSITION_TYPE, alles in Großbuchstaben. Das Ganze liefert uns dann die Richtung der Position zurück. Und wenn es sich um eine Sell Position handelt, wenn also die Positionsrichtung den Wert POSITION_TYPE_SELL hat, dann nutzen wir trade.PositionClose, um die Position mit der aktuellen Ticketnummer zu schließen. Zum Schluss müssen wir natürlich noch die Vorschleife und die Funktion selbst mit einer Klammer schließen. Im Großen und Ganzen war es das. Sie können jetzt hier oben auf kompilieren klicken oder die F7 Taste drücken. Ich habe es wiedermal geschafft, hier oben ein Sonderzeichen im Quellcode einzutippen. Keine Ahnung, wie mir das immer passiert. Klicken wir also noch mal auf Kompilieren und diesmal hat das funktioniert. Solche Kleinigkeiten können einen manchmal in den Wahnsinn treiben. Und falls Sie auch Fehler haben, die Sie nicht finden, oder falls Sie nicht wissen, wie dieser ganze Code Teil hier funktioniert, dann möchten Sie sich vielleicht nochmal die anderen Videos aus diesem Grundlagenkurs anschauen. Oder vielleicht ist auch der Premiumkurs interessant für Sie. Wir haben jetzt jedenfalls keine Fehler mehr. Und darum klicken wir hier oben oder drücken die F4 Taste,
    6 min
  • MQL5 TUTORIAL GRUNDLAGEN – 30 SO SCHLIESSEN SIE ALLE BUY POSITIONEN
    In diesem Video wollen wir uns einmal anschauen, wie man eine Anzahl von Position auf einmal schließen kann. Wir eröffnen hier solange Testpositionen, bis wir die Stückzahl zehn erreicht haben. Dann werden alle zehn Position gleichzeitig geschlossen. Und wir wollen uns einmal anschauen, wie man so etwas in MQL5 programmieren kann. Dazu klicken wir im Metatrader auf dieses kleine Symbol hier oben oder drücken die F4 Taste. Das ruft dann hier den Metaeditor auf. Und hier klicken wir auf Datei, Neu, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier einmal den Namen SimplerBuyPositionCloser, da wir uns zunächst auf das Schließen von Kaufpositionen beschränken werden. Klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. Zunächst importieren wir die Datei Trade.mqh. Die wird benötigt um Positionen zu eröffnen und stellt vereinfachte Handelsoperationen bereit. Wir erstellen uns zunächst eine Instanz der Klasse CTrade. Die bekommt den Namen trade und wir werden sie später verwenden, um solche Testpositionen zu eröffnen. Da wir kaufen wollen, müssen wir zunächst den Ask Preis ermitteln. Das machen wir mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir wählen SYMBOL_ASK, alles in Großbuchstaben, und weisen das Ergebnis der Variable Ask zu. Mit _Digits und NormalizeDouble lässt sich automatisch ermitteln, wie viele Nachkommastellen das jeweilige Währungspaar hat. Und wenn wir keine offenen Positionen haben beziehungsweise solange, wie unsere Positionsanzahl unter zehn ist, nutzen wir trade.Buy, um eine neue Position von zehn Mikrolots zu kaufen. Und zwar zu dem Ask Preis, den wir hier oben ermittelt haben. Sobald unsere Positionsgesamtanzahl, die durch PositionsTotal ermittelt wird, gleich zehn ist, möchten wir alle Kaufpositionen auf einmal schließen. Das ist natürlich nur in diesem Beispiel hier so gewählt. In der Regel würde man andere Kriterien aussuchen und nicht einfach willkürlich mal zehn Positionen eröffnen. Aber für das Verständnis von der grundlegenden Funktion sollte das so ausreichen. Schließen wir also hier unsere OnTick Funktion. Denn diese Funktion hier muss erst noch programmiert werden. Für dieses Beispiel wird das eine Funktion sein, die uns keinen Rückgabewert zurückliefert und CloseAllBuyPositions heißt. Wir nutzen hier eine Vorschleife, um von der Gesamtanzahl, die wir mit PositionsTotal ermitteln, komplett herunterzuzählen, bis keine Positionen mehr übrig sind. In dieser Schleife ermitteln wir zunächst die Ticket-Nummer der aktuellen Position. Das übernimmt die Funktion PositionGetTicket. Außerdem möchten wir gerne die Positionsrichtung wissen. Die ermitteln wir mit PositionGetInteger und übergeben als Parameter POSITION_TYPE, auch alles in Großbuchstaben. Wir möchten ja nur schließen, wenn es sich um eine Kaufposition handelt. Darum prüfen wir an der Stelle noch, ob die PositionDirection, also die Positionsrichtung den Wert POSITION_TYPE_BUY hat. Und wenn das der Fall ist, ist es eine Kaufposition. Und in diesem Fall nutzen wir trade.PositionClose für unser aktuelles Ticket, um die jeweilige Position zu schließen. Zum Schluss benötigen wir noch zwei schließende Klammern. Eine für die Vorschleife und eine für die Funktion selber. Und das war es im Großen und Ganzen. Wenn Ihnen das zu schnell ging oder Sie nicht genau verstehen, was diese Code Zeilen hier bewirken, dann möchten Sie sich vielleicht zunächst die anderen Videos aus dieser Grundlagenserie anschauen. Oder vielleicht ist auch der Premiumkurs interessant für Sie. Wir klicken jetzt jedenfalls hier auf Kompilieren oder drücken die F7 Taste. Das hat hier ohne Fehler funktioniert. Und in diesem Fall können wir hier klicken oder die F4 Taste drücken, um in dem Metatrader zurückzukehren. Und im Metatrader klicken wir auf Ansicht, Strategietester oder drücken die Tastenkombination Ctrl+R.
    6 min

About MQL5 Tutorial - Automatisch traden mit Metatrader5

From the publisher's feed

Metatrader5 MQL5 Expert Advisor Tutorial