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- 49 SIMPLER WILLIAMS PERCENT RANGE EA
    In diesem Video wollen wir uns einmal diesen Oszillator hier anschauen. Es handelt sich um den Williams-Percent-Range-Oszillator und wir werden ihn nutzen um buy- und sell-Signale zu generieren und Positionen auf unserem Chart zu eröffnen. Also schauen wir uns einmal an, wie man das mit MQL5 programmieren kann. Um das zu tun klicken wir im Metatrader 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 mal den Namen SimplerWilliamsPercentRangeEA, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb dieser OnTick-Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. Wir starten mit einer include-Anweisung. Damit importieren wir uns die Inhalte eine Datei namens Trade.mqh. Die kommt mit MQL5 und wird uns die Möglichkeit bieten vereinfachte Handelsfunktionen zu nutzen. Dazu erstellen wir zunächst einmal eine Instanz von der Klasse CTrade. Die bekommt den Namen trade und außerdem müssen wir den ask- und den bid-Preis ermitteln. Das geht mit SymbolInfoDouble, für das aktuell Währungspaar. Für den Ask-Preis nutzen wir den Parameter SYMBOL_ASK. Bitte alles in Großbuchstaben. Für den Bid-Preis entsprechend SYMBOL_BID. Und mit NormalizeDouble und _Digitis ermitteln wir noch, ob das aktuelle Währungspaar drei oder fünf Nachkommastellen hinter dem Komma hat. Danach erstellen wir uns eine leere Variable mit dem Namen signal. Die ist vom Typ string, damit sie Texte aufnehmen kann. Wir weisen aber zunächst noch keinen Wert zu, denn der wird jetzt ermittelt. Dazu erstellen wir zunächst ein Array. Und im nächsten Schritt nutzen wir die, in MQL5 eingebaute, Funktion iWPR. Für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit, um für 14 Kerzen den unseren Wert zu berechnen. Die 14 sieht man übrigens auch hier in Klammern. Danach nutzen wir die Funktion ArraySetAsSeries um unser Array von der aktuellen Kerze an abwärts zu sortieren. Und mit der Funktion CopyBuffer füllen wir jetzt anhand der WPR-Definition, die wir hier oben getroffen haben, unser Array für Buffer null, das ist diese blaue Signallinie hier, angefangen von der aktuellen Kerze null für drei Kerzen und speichern die Werte im Array. Und jetzt können wir unseren aktuellen Wert berechnen, in dem wir einfach auf Kerze null im Array zugreifen. Mit NormalizeDouble und Komma zwei, sorge ich dafür, dass die Werte hier mit zwei Nachkommastellen berechnet werden, so wie im Oszillator auch zu sehen. Wir möchten gerne kaufen, wenn der aktuelle Wert für den WPR kleiner ist also minus 80, aber größer als minus 100 oder anders ausgedrückt, wenn sich die blaue Linie hier zwischen dem unteren Rand und dieser unteren gestrichelten Linie befindet. In dem Fall weisen wir den Buy unserer Signal-Variable zu. Andernfalls wenn der aktuelle WPRWert größer ist als minus 20, aber kleiner als null, dann bedeutet das, dass sich die Linie hier oberhalb der oberen gestrichelten Linie befindet. Und in dem Fall möchten wir verkaufen, also weisen wir den Wert sell unsere Signalvariable zu. Und wenn unser Signal auf sell steht und uns die Funktion PositionsTotal einen Wert kleiner eins liefert, dann bedeutet das, wir haben keine geöffneten Positionen und ein Verkaufs-Signal. In dem Fall nutzen wir trade.Sell um 10 Micorlot zu verkaufen. Andernfalls, wenn das Signal auf buy steht und wir ebenfalls keine geöffnete Position haben, dann nutzen wir trade.Buy um 10 Microlot zu kaufen. Zum Schluss nutzen wir noch den Commant-Befehl, um auf dem Chart den Text auszugeben. Das Signal ist jetzt, gefolgt vom ermittelten Signal-Wert. Ok, dass wars soweit. Wenn Ihnen das hier alles zu schnell war oder wenn Sie nicht verstehen was diese Code-Zeilen hier bewirken sollen. Dann möchten Sie sich vielleicht zunächst die anderen Videos aus unserer Grundlagenserie einmal anschauen oder vielleicht ist auch der Pre...
    7 min
  • MQL5 TUTORIAL GRUNDLAGEN – 48 SIMPLES CHART OBJEKT
    In diesem Video wollen wir uns einmal anschauen, wie man ein Objekt auf einem Chart dynamisch zeichnen lassen kann. In diesem Fall ist es ein Rechteck. Für die letzten 30 Kerzen werden hier die jeweils höchsten und niedrigsten Kurswerte angezeigt. Und wir wollen uns mal anschauen, wie man so etwas in MQL5 programmieren kann. Um das zu tun, klicken Sie im Meta Trader bitte auf dieses kleine Symbol 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 „SimplesChartObjekt“, 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 damit, dass wir uns eine Variable für die Höchste und für die Niedrigste Kerze erstellen. Außerdem brauchen wir auch noch zwei Arrays. Das Eine für die Hohen und das Andere für die niedrigen Kerzen. Beide Arrays werden mit der Funktion ArraysSetAsSerious, von der aktuellen Kerze an, abwärts sortiert. Das Array mit dem Namen „High“ füllen wir jetzt mittels der Funktion CopyHigh für das aktuelle Währungspaar auf dem Chart und die dort eingestellte Zeiteinheit von der aktuellen Kerze 0 mit Werten für 30 Kerzen. CopyHigh übernimmt dabei die Höchstwerte. Das Ganze gibt’s dann auch noch mal für die niedrigsten Werte. Diesmal heißt das dann „CopyLow“. Auch hier ist der erste Parameter für das aktuelle Chart, der Zweite für die auf dem Chart ausgewählte Zeiteinheit und auch hier möchten wir gerne von der aktuellen Kerze für 30 Kerzen die Werte, in unser Array mit dem Namen „Low“ kopieren. Jetzt können wir die höchste Kerze ermitteln. Das übernimmt die Funktion ArrayMaximum. Die schaut in unser Array und sucht von der aktuellen Kerze 0, innerhalb der letzten 30 Kerzen, nach dem höchsten Wert. Für die niedrigste Kerze nutzen wir entsprechend die Funktion ArrayMinimum. Die macht das Gleiche, aber diesmal für den niedrigsten Wert. Der Rest der Parameter ist identisch. Jetzt brauchen wir noch die aktuellen Preise. Die holen wir uns mit der Funktion MqlRates und speichern sie in einem Array mit dem Namen Preisinformation. Auch hier nutzen wir ArraySetAsSerious, um unser Array von der aktuellen Kerze an absteigend zu sortieren. Danach füllen wir mit CopyRates unser Array mit Daten. Für das aktuelle Symbol und die aktuelle Zeiteinheit auf dem Chart. Tatsächlich sind diese beiden Begriffe und diese beiden Begriffe hier austauschbar. Also machen wir das doch einfach mal. In diesem Fall kopieren wir uns von der aktuellen Kerze, für die Gesamtanzahl der Kerzen auf dem Chart, unsere Informationen in unser Preisarray. Bitte beachten Sie, dass dieser Ausdruck hier sehr viel Rechenleistung kostet. Man könnte hier auch eine fixe Anzahl von Kerzen, zum Beispiel 100 Kerzen, verwenden. Denn wir wissen ja, dass wir nur 30 Kerzen brauchen. Aber wenn man alle Kerzen auf dem Chart einbeziehen will, dann ist dieser Ausdruck hier richtig. Im nächsten Schritt nutzen wir ObjectDelete für das aktuelle Währungspaar. Um ein evtl. bereits vorhandenes Rechteck zu löschen. Danach erstellen wir uns mit ObjectCreate für das aktuelle Währungspaar ein neues Objekt mit dem Namen „Rechteck“. Das hat den Objekttyp OBJ_RECTANGLE. Wenn man das einmal markiert und die Hilfe aufruft, dann sehen wir hier dass es noch massenweise andere Objekttypen gibt. Zum Beispiel wir könnten ein Button oder ein Lable verwenden. Alle diese Objekte hier haben unterschiedliche Einstellungen und Parameter. In unserem Fall kommt der nächste Parameter mit dem Wert 0, weil wir das Objekt gerne im Hauptfenster darstellen möchten. Das ist das Fenster hier mit den Kerzen. Unser Objekt soll also hier direkt im Hauptfenster gezeichnet werden. Bei Oszillatoren macht man das in der Regel in einem Fenster unterhalb der Kerzen. Wir möchten gerne bei der 30 Kerze anfangen das Objekt zu zeichnen.
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 47 SIMPLER STOCHASTIC EA
    In diesem Video wollen wir uns einmal anschauen, wie man für diesen Oszillator hier einen Expert Advisor erstellen kann. Es handelt sich um den Stochastic Oszillator. Und wir werden ihn nutzen, um Kaufen und Verkaufen Signale zu generieren und Positionen zu eröffnen. Um das zu tun, klicken Sie im Metaeditor 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 SimplerStochasticEA, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. Wir starten mit einer include Funktion für die Datei Trade.mqh. Die kommt mit MQL5 und stellt uns vereinfachte Handelsfunktionen bereit. Dazu erstellen wir uns von der Klasse CTrade eine Instanz mit dem Namen trade. Die werden wir gleich benutzen, um Positionen zu eröffnen. In der OnTick Funktion starten wir damit, dass wir eine string Variable mit dem Namen signal erstellen. Die bekommt zunächst noch keinen Wert zugewiesen, denn der wird noch ermittelt. Zunächst berechnen wir erstmal den Ask und den Bid Preis. Das übernimmt die Funktion SymbolInfoDouble. Die bekommt als Parameter das aktuelle Währungspaar zugewiesen. Und wir verwenden SYMBOL_ASK, alles in Großbuchstaben, um den Ask Preis zu ermitteln. Zusätzlich nutze ich hier NormalizeDouble und _Digits, um zu ermitteln, ob das aktuelle Währungspaar drei oder fünf Nachkommastellen hat. Für den Bid Preis sieht das Ganze ziemlich ähnlich aus. Aber hier verwenden wir SIMBOL_BID. Jetzt brauchen wir zwei Arrays. Ein K Array und ein D Array. Denn der Stochastic hat hier zwei Linien. Man spricht vom König und vom Diener. Diese beiden Arrays werden jetzt mit Hilfe der Funktion ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Und jetzt nutzen wir die in MQL5 integrierte Funktion iStochastic für das aktuelle Währungspaar auf dem Chart und die aktuelle Zeiteinheit auf diesem Chart. Hier folgen drei weitere Parameter. Die sieht man auch hier unten in Klammern. Und wenn man mit der rechten Maustaste auf die Eigenschaften des Stochatic Oszillators klickt, denn sehen wir, wir haben eine K Periode von fünf, eine D Periode von drei und für die Verlangsamung ebenfalls einen Wert von drei. Das ist das, was wir auch hier verwenden. Die letzten beiden Parameter MODE_SMA und STO_LOWHIGH stehen hier für die Methode. SAM steht für Simple Moving Average und für den Preisbereich nutzen wir Low/High. Im Anschluss nutzen wir CopyBuffer um unser Array mit Daten zu füllen. Das tun wir anhand der Definition, die wir hier oben getroffen haben. Für das K Array nutzen wir Buffer null. Und für das D Array Buffer eins. Und in beide Arrays kopieren wir von der aktuellen Kerze null an, für drei Kerzen die Werte und speichern sie im jeweiligen Array. Um die jeweils aktuellen Werte zu ermitteln, greifen wir einfach auf die Werte von Kerze null im jeweiligen K oder D Array zu und weisen sie hier einer Variable zu. KValue null steht für die aktuelle Kerze im K Array. DValue null steht für die aktuelle Kerze im D Array. Jetzt wiederholen wir das Ganze nochmal für die Kerze davor. In diesem Fall nutzen wir Kerze eins im jeweiligen Array. Wir brauchen das, um zu ermitteln, ob wir ein Signal haben. Denn, wenn der aktuelle Wert für das K Array und der aktuelle Wert für das D Array beide unter zwanzig liegen, das bedeutet, beide Linien sind unterhalb dieser gestrichelten Linie hier, dann prüfen wir, ob der aktuelle K Wert über dem aktuellen D Wert liegt. Und ob der letzte K Wert noch unter dem D Wert gelegen hat. Wenn das der Fall ist, dann weisen wir den Wert Buy unserem signal zu, denn dann wollen wir kaufen. Der andere Fall wäre, wenn der aktuelle K Wert über achtzig liegt und der aktuelle D Wert auch über achtzig liegt. Das bedeutet, beide Linien befinden sich oberhalb der oberen gestrichelten ...
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 46 SIMPLER COMMODITY CHANNEL INDEX Expert Advisor
    In diesem Video wollen wir uns einmal diesen Oszillator hier anschauen. Das ist der Commodity Channel Index. Der wird normalerweise als Filter genutzt. Wir wollen jetzt aber mal schauen, wie man den in MQL5 als Signal programmieren kann. Um das zu tun, klicken Sie bitte im Metaeditor 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 SimplerCommodityChannelIndexEA, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion hier gelöscht werden. Und wir entfernen auch die zwei Kommentarzeilen. Wie so oft starten wir hier mit einem include Statement für die Datei Trade.mqh. Danach erstellen wir eine Instanz von der Klasse CTrade. Die bekommt den Namen trade. Und wir werden sie verwenden, um Positionen zu eröffnen. In der OnTick Funktion ermitteln wir zunächst den Ask Preise. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Mit SYMBOL_ASK, alles in Großbuchstaben bitte, lässt sich hier der Ask Preis ermitteln. Und zusätzlich nutze ich noch NormalizeDouble und _Digits, um die richtige Anzahl von Nachkommastellen zu ermitteln. Das können je nach Währungspaar drei oder fünf Nachkommastellen sein. Das gleiche wiederholen wir jetzt nochmal für den Bid Preis. Hier unterscheidet der Name der Variable und der Parameter hier heißt SIMBOL_BID. Ansonsten sind diese beiden Zeilen nahezu identisch. Mit MqlRates erstellen wir uns ein Array für die Preisinformationen. Das wird im Anschluss mit ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Und mit CopyRates füllen wir unser Preis Array mit Preisdaten für drei Kerzen. Dieser Ausdruck für das aktuelle Währungspaar kann auch so geschrieben werden. Seit einiger Zeit wurde die Sprache entsprechend angepasst. Wenn man das hier mal markiert und die F1 Taste drückt, dann wird das in der Hilfe hier auch so beschrieben. Im nächsten Schritt erstellen wir uns eine leere Variable mit dem Namen signal. Die ist vom Typ string, hat hier aber noch keinen Wert. Um den zu ermitteln erstellen wir uns ein weiteres Array für den Expert Advisor. Und mit der eingebauten MQL5 Funktion iCCI können wir jetzt für das aktuelle Währungspaar und die auf dem Chart ausgewählte Zeiteinheit den Commodity Channel Index für 14 Kerzen aufgrund der Schlusskurse berechnen. Die 14 taucht auch hier in Klammern auf. Und wenn man einmal mit der rechten Maustaste auf den Oszillator klickt und Eigenschaften auswählt, dann sieht man, dass das hier die Standardwerte sind. Auch dieses Array sortieren wir von der aktuellen Kerze an abwärts. Und im Anschluss nutzen wie CopyBuffer, um anhand der Definition, die wir hier oben getroffen haben, für Buffer null, das ist diese Linie hier, von der aktuellen Kerze null an für drei Kerzen unser Array mit Daten zu füllen. Und das ermöglicht es uns, den aktuellen Wert für den Commodity Channel Index zu berechnen, indem wir auf Kerze null in unserem Array zugreifen. Wenn sich der Wert oberhalb der Einhunderter-Linie befindet, das wäre hier die obere gestrichelte Linie, dann möchten wir gerne verkaufen. Darum weisen wir den Wert Verkaufen unsere signal Variable hier zu. Im umgekehrten Fall, wenn der Wert kleiner ist und sich unter der unteren gestrichelten Linie befindet, das wäre hier diese minus einhundert Linie, dann möchten wir gerne kaufen und weisen diesen Wert der signal Variable zu. Und wenn unser signal auf Verkaufen steht und die Funktion PositionsTotal uns einen Rückgabewert von kleiner eins liefert, dann haben wir keine geöffneten Positionen. Und in dem Fall möchten wir gerne mit trade.Sell eine Sell Position für zehn Mikrolot eröffnen. Im anderen Fall, wenn unser Signal auf Kaufen steht und wir ebenfalls keine geöffneten Positionen haben, dann nutzen wir trade.Buy, um eine Buy Position mit zehn Mikrolot zu eröffnen.
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 45 SIMPLER SAR SELL TRAILING STOP
    In diesem Video wollen wir uns einmal anschauen, wie man einen Sell Trailing Stop mit Hilfe des Parabolic SAR Indicator automatisch handeln lassen kann. In dem Moment, wo hier oben die Punkte auftauchen, wird unser Trailing Stop nachgezogen. Und wir wollen jetzt einmal anschauen, wie man so etwas mit MQL5 programmieren kann. Um das zu tun, klicken Sie im Metaeditor bitte auf dieses kleine Symbol hier 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 SimplerSARSellStop. Klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen können weg. Wir starten mit einem include Befehl für die Datei Trade.mqh. Die ist Bestandteil von MQL5 und ermöglicht uns die Eröffnung von Testpositionen. Dazu erstellen wir uns hier, eine Instanz von der Klasse CTrade. Die erhält den Namen trade. Jetzt müssen wir den Bid Preis berechnen, damit wir gleich eine Testposition eröffnen können. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit. Wir nutzen NormalizeDouble und _Digits, um die richtige Anzahl von Nachkommastellen zu ermitteln. Das können drei oder fünf Nachkommastellen sein, je nach Währungspaar. Und wenn uns die Funktion PositionsTotal einen Wert von kleiner eins zurückliefert, dann haben wir keine geöffneten Positionen. Und dann nutzen wir trade.Sell um eine Testposition für zehn Mikrolot zu eröffnen. Bitte machen Sie das nur auf einem Demo Account, damit wir etwas haben, womit wir den Trailing Stop später auslösen können, brauchen wir eine Position. Auf einem Echtgeldkonto würde man natürlich keine Testposition eröffnen. Weiter geht es damit, dass wir uns ein Array erstellen. Und danach definieren wir mit Hilfe der in MQL5 eingebauten Funktion iSAR, für das aktuelle Währungspaar auf dem Chart und die aktuelle Zeiteinheit auf unserem Chart die Werte für diese beiden Parameter. Und die sehen Sie auch, wenn Sie auf einem leeren Chart einmal auf Einfügen, Indikatoren, Tendenz, Parabolic SAR klicken. Dann gibt es hier einen Schrittwert von 0,02 und einen Maximalwert von 0,2. Klicken wir einmal auf Okay, machen einen Rechtsklick auf dem Chart, Vorlagen und Vorlage speichern und speichern das Ganze unter dem Namen tester.tpl. Denn das ist die Schablone, die wir gleich im Strategietester auch benutzen werden. Die alte Schablone kann ruhig überschrieben werden. Weiter im Quelltext. Jetzt sortieren wir mit ArraySetAsSeries unser Array von der aktuellen Kerze an abwärts und füllen es mit Werten. Das macht CopyBuffer. Anhand der SAR-Definition, die wir hier oben getroffen haben, kopieren wir die Werte für das Buffer null, also die Indikatorlinie, die bei uns durch diese Punkte dargestellt wird. Angefangen von Kerze null. Das ist die aktuelle Kerze. Und wir kopieren uns die Werte für drei Kerzen und speichern sie in unserem Array. Und danach können wir unseren SARWert bestimmen, indem wir einfach auf Kerze null in unserem Array zugreifen. NormalizeDouble und Komma fünf nutze ich hier, weil auch der Originalindikator fünf Nachkommastellen hat, wie man hier an dem Wert Value erkennen kann. Und am Ende der OnTick Funktion rufen wir eine Funktion CheckSarSellTrailingStop auf, übergeben hier den Bid Preis und den SARWert als Parameter. Diese Funktion existiert aber noch nicht. Darum müssen wir die jetzt programmieren. Unsere benutzerdefinierte Funktion ist vom Typ void, hat also keinen Rückgabewert. Sie hat den Namen ist CheckSarSellTrailingStop. Wir übergeben hier den Bid Preis und den SARWert als Parameter. Mit Hilfe einem for Loop gehen wir alle Positionen durch und ermitteln für jede einzelne Position das Positionssymbol. Das geht mit der Funktion PositionsGetSymbol für den aktuellen Schleifenzähler. Wenn das aktuelle Symbol auf unserem Chart und das Po...
    9 min
  • MQL5 TUTORIAL GRUNDLAGEN – 44 SIMPLER SAR BUY TRAILING STOP
    In diesem Video wollen wir uns einmal anschauen, wie man für diesen Indikator hier einen Trailing Stop programmieren kann. Es handelt sich um den parabolischen SAR Indikator. Und wir wollen jetzt einmal sehen, wie man so etwas in MQL5 automatisiert. Um das zu tun, klicken Sie bitte hier oben auf dieses kleine Symbol oder drücken Sie die F4 Taste. Das ruft dann hier den Metaeditor auf. Und hier wählen wir auf Datei, Neu, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier einmal den Namen SimplerSARBuyTrailingStop. Klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen können weg. Wir starten mit einem include Befehl für die Datei Trade.mqh. Die ist Bestandteil von MQL5 und die ermöglicht es uns hier, eine Instanz von CTrade zu erstellen. Die hießt trade und wir werden sie gleich verwenden, um eine Testposition damit zu eröffnen. Dazu ermitteln wir in der OnTick Funktion zunächst den Ask Preis. Das geht mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Als zweiten Parameter verwenden wir hier SYMBOL_ASK, alles in Großbuchstaben. Und mit NormalizeDouble und _Digits lassen wir automatisch berechnen, wie viele Nachkommastellen das aktuelle Währungspaar hat. Und damit wir etwas haben, wofür wir den Stop Loss anpassen könne, eröffnen wir jetzt eine Testposition mit zehn Mikrolot. Das macht man natürlich nur auf Demo Konten. Wir prüfen hier, ob die Positionsanzahl kleiner ist als eins. Und falls das der Fall ist, nutzen trade.Buy um eine Position mit zehn Mikrolot zu eröffnen. Für unseren Trailing Stop brauchen wir zunächst einmal ein Array. Danach nutzen wir die, in MQL5 integrierte Funktion iSAR, um für das aktuelle Währungspaar und die aktuell auf dem Währungspaar verwendete Zeiteinheit, unsere Werte zu definieren. Diese letzten beiden Parameter hier, die sieht man auch, wenn man hier auf Einfügen, Indikatoren, Tendenz, Parabolic SAR klickt. Wir haben hier einen Schrittwert von 0,02 und einen Maximum Wert von 0,2. Diese Standardwerte übernehmen wir jetzt mit Okay. Klicken mit der rechten Maustaste in unser Chart. Wählen Vorlagen, Vorlage speichern und speichern das Ganze unter dem Namen tester.tpl. Den aktuellen Wert können Sie überschreiben. tester.tpl ist die Ansicht, die gleich genutzt wird, wenn wir unseren Strategietester starten. Vorher müssen wir aber noch ein paar Dinge im Metaeditor ändern. Zunächst nutzen wir ArraySetAsSeries um unser Array von der aktuellen Kerze an abwärts zu sortieren. Und danach füllen wir mit dem Befehl CopyBuffer unser SARArray anhand der Definition, die wir hier oben getroffen haben, für Buffer null, von der aktuellen Kerze null an für drei Kerzen mit Daten. Danach ermitteln wir unseren SARWert. Dazu schauen wir uns einfach an, welchen Wert die Kerze null in unserem Array hat. Zum Schluss möchten wir die Funktion CheckSarBuyTrailingStop aufrufen. Diese Funktion gibt es aber noch gar nicht. Darum müssen wir die jetzt programmieren. Unsere benutzerdefinierte Funktion hat keinen Rückgabewert. Darum nutzen wir hier void. Der Name ist CheckSarBuyTrailingStop. Und wir übergeben hier den Ask Preis und den SARWert als Parameter von der Hauptfunktion. Mit Hilfe einer for Schleife gehen wir alle Positionen durch, ermitteln für jede Position das Währungspaar. Das geht mit der Funktion PositionsGetSymbol für den aktuellen Schleifenzähler. Und nur, wenn das aktuelle Währungspaar auf dem Chart übereinstimmt mit dem Währungspaar für die Position, dann möchten wir weitermachen. Dazu ermitteln wir mit der Funktion PositionGetInteger zunächst das POSITION_TICKET. Dann holen wir uns den aktuellen Stop Loss Wert. Das geht mit der Funktion PositionGetDouble. Hier nutzen wir als Parameter POSITION_SL, alles in Großbuchstaben bitte. Und wenn der aktuelle Stop Loss kleiner ist, als der SARWert, den wir ermittelt haben, dann nutzen wir die Funktion trade.
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 43 SIMPLER IOSMA EXPERT ADVISOR
    In diesem Video wollen wir uns einmal anschauen, wie man diesen Indikator hier programmieren kann. Der produziert bei Überkreuzungen dieser Nulllinie hier Trades. Das ist jetzt gerade passiert. Es handelt sich um den Moving Average of Oscillator. Und wir schauen und jetzt einmal an, wie man so etwas in MQL5 programmieren kann. Um das zu tun, klicken wir im Metatrader entweder auf dieses Symbol hier oben oder wir 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 mal den Namen SimplerIOSMAExpertAdvisor, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. Wir starten mit einem include Befehl für die Datei Trade.mqh. Die gehört mit zu MQL5 und ermöglicht es uns hier, eine Instanz von der Klasse CTrade zu erstellen. Die nennen wir trade und wir werden sie später nutzen, um Positionen zu eröffnen. In der OnTick Funktion berechnen wir zunächst den Ask Preis. Das geht mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen als Parameter SYMBOL_ASK, alles in Großbuchstaben. Und mit NormalizeDouble und _Digits ermitteln wir gleichzeitig noch die richtige Nummer für die Anzahl der Nachkommastellen dieser Währung. Da kann sich je nach Währungspaar unterscheiden. Manche Währungspaare haben drei Nachkommastellen und andere haben fünf Nachkommastellen. Wiederholen wir das Ganze nochmal und berechnen den Bid Preis. Hier ändert sich wenig. Nur die Variable heißt anders und wir nutzen SYMBOL_BID, auch alles in Großbuchstaben. Danach erstellen wir eine Variable. Die ist vom Typ string. Hat den Namen signal. Und wir weisen hier zunächst noch keinen Wert zu, denn den müssen wir jetzt noch ermitteln. Dazu brauchen wir zunächst ein Array. Das wird im nächsten Schritt mit der Funktion ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Und im nächsten Schritt definieren wir die Eigenschaften. Dazu nutzen wir die MQL5 Funktion iOsMA für das aktuelle Währungspaar auf dem Chart und die aktuell auf diesen Chart ausgewählte Zeiteinheit. Diese drei Parameter hier sehen Sie auch, wenn Sie auf Einfügen, Indikatoren, Oszillatoren, Moving Average of Oscillater klicken. Der Wert für den schnellen EMA ist zwölf, für den langsamen EMA 26 und für den MACD-SMA ist der Wert neun. Das entspricht genau den drei Werten, die wir auch hier verwenden. Und berechnet wird das Ganze anhand der Schlusskurse. Deswegen ist der letzte Parameter PRICE_CLOSE. Mit CopyBuffer kopieren wir uns jetzt in unser Array die Werte für drei Kerzen, für Buffer null. Und wir starten mit der aktuellen Kerze null. Hin und wieder werde ich gefragt, warum ich das immer für drei Kerzen mache. Nun, das ist ganz nützlich, wenn man Überkreuzungen erkennen will. Das möchten wir in diesem Fall auch. Wir berechnen uns zunächst den aktuellen Wert, indem wir uns den Wert aus Kerze null holen. Das ist die aktuelle Kerze. Und danach schauen wir uns den Wert von Kerze eins an. Den weisen wir hier der Variable für den letzten Wert zu. Denn damit können wir jetzt feststellen, ob es eine Überkreuzung gab. Wenn nämlich der aktuelle Wert kleiner ist als null und der letzte Wert noch größer was als null, dann bedeutet das, dass die Nulllinie von oben überkreuzt wurde. Diese gestrichelte Linie hier ist die Nulllinie. Und immer, wenn so eine Überkreuzung stattfindet, haben wir entweder ein Kaufen oder Verkaufen Signal. Bei einer Überkreuzung von oben nach unten ist es ein Verkaufen Signal. Darum weisen wir jetzt den Wert sell unserer signal Variable zu. Im umgekehrten Fall, wenn der aktuelle Wert größer ist und über der Nulllinie liegt und der letzte Wert noch unter der Nulllinie lag, dann haben wir ein Kaufen Signal und dann weisen wir den Wert buy unserer signal Variable zu. Für die eigentliche Positionseröffnung überprüfen wir,
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 42 SIMPLER IAD EA
    In diesem Video wollen wir uns einmal anschauen, wie man diesen Oszillator hier, den Accumulation Distribution Oszillator berechnen kann und wie man die Werte davon als Filter für Signale einsetzt. Um das zu tun, klicken Sie im Metatrader bitte 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 SimplerIADEA, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen können weg. Wir starten damit, dass wir mittels include die Datei Trade.mqh importieren. Die enthält die Klasse CTrade, von der wir uns hier eine Instanz erstellen. Innerhalb der OnTick Funktion berechnen wir zunächst den Ask Preis und den Bid Preis. Das geht mit SymbolInfoDouble. Wir nutzen entweder SYMBOL_ASK oder SYMBOL_BID. Außerdem benötigen wir noch eine Signal Variable. Die bekommt hier zunächst keinen Wert zugewiesen und ist vom Typ string. Außerdem brauchen wir noch zwei Arrays. Ein Preis Array und eins für unseren gleitenden Durchschnitt. Mit ArraySetAsSeries können wir unser Preis Array von der aktuellen Kerze an abwärts sortieren. Danach erstellen wir uns mit der iMA Funktion einen gleitenden Durchschnitt für zwanzig Kerzen. Das haben wir schonmal in einem anderen Teil durchgenommen. Und wenn Sie das noch nicht kennen, dann schauen Sie sich vielleicht erst einmal das entsprechende Video dazu an. Auch das Array für den gleitenden Durchschnitt wird von der aktuellen Kerze an abwärts sortiert. Danach nutzen wir CopyBuffer, um unser Array mit drei Kerzen, beginnend von Kerze null an, anhand der Definition zu füllen, die wir hier oben getroffen haben. Und um den aktuellen Wert für unseren gleitenden Durchschnitt zu erhalten, greifen wir einfach auf den Wert von Kerze null in unserem Moving Average Array zu. Fehlt uns noch die Definition für den Accumulation Distribution Oszillator. Das übernimmt die Funktion iAD für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit. Wir nutzen VOLUME_TICK als dritten Parameter. In diesem Fall füllen wir mittels CopyBuffer unser Array mit den Werten für elf Kerzen. Denn wir möchten gerne gleich auf die Werte von Kerze zehn zugreifen. Zunächst ermitteln wir den aktuellen Wert. Den bekommen wir, indem wir in unserem Preis Array den Wert für Kerze null, unserer Ergebnisvariable hier zuweisen. Und um den vorherigen Wert zu berechnen, greifen wir auf Kerze zehn zu. Mit diesen beiden Werten können wir jetzt grob bestimmen, ob unser Oszillatorwert steigt oder sinkt. Um einen Long Trade zu starten, möchten wir zunächst wissen, ob der aktuelle Ask Preis sich oberhalb des Moving Average befindet. Das ist immer dann der Fall, wenn die Kerzen über dem gleitenden Durchschnitt hier liegen. Und als zweite Bedingung prüfen wir, ob der aktuelle Wert für den Accumulation Distribution Oszillator über dem letzten Wert liegt. Das wäre der Fall, wenn wir hier eine Steigung sehen. Und in dem Fall setzen wir unsere Signal Variable hier auf den Wert Buy, denn jetzt möchten wir kaufen. Natürlich gibt es auch noch den anderen Fall. Wenn der Bid Preis kleiner ist, als der Moving Average, also wenn die Kerzen unterhalb des gleitenden Durchschnitts angezeigt werden, dann prüfen wir, ob unser Oszillatorwert sinkt. Das wäre der Fall, wenn der aktuelle Wert unter dem letzten Wert liegt. Auf dem Chart sieht man das anhand von fallenden Werten. Und in dem Fall setzen wir unser Signal auf verkaufen. Wenn unser Signal den Wert Sell hat und die Anzahl der Positionen unter eins liegt, also wir keine offenen Positionen haben, dann nutzen wir trade.Sell, um zehn Mikrolot zu verkaufen. Andernfalls, wenn unser Signal den Wert Buy hat und ebenfalls keine Position geöffnet ist, dann nutzen trade.Buy und kaufen zehn Mikrolot. Zum Schluss nutzen wir noch den Comment Befehl,
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 41 SIMPLER SELL BREAKEVEN STOP
    In diesem Video wollen wir uns einmal anschauen, wie man einen Breakeven Stop für einen Sell Trade setzen kann. Das ist hier diese kleine rote Linie. Die wird gesetzt, sobald sich der Preis in unsere Richtung bewegt. Und wir wollen wir uns einmal anschauen, wie man so etwas mit MQL5 programmieren kann. Um das zu tun, klicken Sie bitte hier oben auf dieses kleine Symbol oder drücken Sie die F4 Taste. Das 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 SimplerSellBraeakEvenStop, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. Wir starten mit einem include Befehl. Damit importieren wir die Inhalte der Datei Trade.mqh. Die ist Bestandteil von MQL5 und stellt uns einfache Handelsfunktionen bereit, die wir gleich nutzen werden um eine Testposition zu eröffnen. Wir erstellen uns hier zunächst einmal von der Klasse CTrade eine Instanz mit dem Namen trade. Innerhalb der OnTick Funktion berechnen wir zunächst den Bid Preis. Den brauchen wir, da wir ja eine Sell Position eröffnen möchten. Der Bid Preis wird ermittelt mit SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen hier als Parameter SYMBOL_BID, alles in Großbuchstaben. Und mit NormalizeDouble und _Digits sorge ich dafür, dass die richtige Anzahl von Nachkommastellen hinter dem Komma berechnet wird. Denn das kann je nach Währungspaar unterschiedlich sein. Danach prüfen wir den Rückgabewert von PositionsTotal. Und wenn der null ist, dann haben wir keine offenen Positionen. Wir brauchen aber eine, damit wir einen Breakeven Stop setzen können. Natürlich würde man das nicht auf einem Echtgeldkonto tun. Aber für unseren Strategietest nutzen wir jetzt trade.Sell um eine Testposition über zehn Mikrolot zu eröffnen. Und danach rufen wir eine Funktion mit dem Namen CheckSellBreakEvenStop auf und übergeben der den Bid Preis. Diese Funktion existiert allerdings noch gar nicht. Darum müssen wir die jetzt programmieren. Unsere selbstprogrammierte Funktion CheckSellBreakEvenStop hat keinen Rückgabewert. Darum nutzen wir hier void. In den runden Klammern übernehmen wir hier den Bid Preis, den wir hier oben übergeben haben. Und jetzt nutzen wir eine for Schleife, um von PositionsTotal, also der Gesamtanzahl der Positionen solange alle Position durchzugehen, bis keine mehr übrig sind. Zunächst ermitteln wir die Ticket Nummer. Die bekommen wir mit PositionGetInteger. Als Parameter übergeben wir hier in Großbuchstaben POSITION_TICKET. Außerdem interessiert uns der Einstiegspreis. Ich habe den hier einmal PositionBuyPrice genannt. Den bekommen wir mit PositionGetDouble und übergeben als Parameter POSITION_PRICE_OPEN, ebenfalls alles in Großbuchstaben. Den aktuellen PositionStopLoss bekommen wir mit PositionGetDouble. Hier übergeben wir POSITION_SL. Nahezu identisch tun wir das für den Take Profit Wert. Auch hier wird PositionGetDouble genutzt. Anders ist nur der Parameter. Denn der heißt in diesem Fall POSITION_TP. Um die Richtung zu ermitteln brauchen wir noch den Typ der Position. Den kriegen wir mit PositionGetInteger, POSITION_TYPE. Und da wir ja auch nur für das aktuelle Währungspaar eine Änderung vornehmen möchten, nutzen wir PositionsGetSymbol für die aktuelle Positionsnummer, um das Währungspaar für die aktuelle Position zu ermitteln. Jetzt können wir unsere Bedingungen definieren. Zunächst möchten wir gerne wissen, ob das Währungspaar auf dem Chart und das Positionssymbol übereinstimmen. Außerdem möchte ich gerne wissen, ob der Positionstyp den Wert POSITION_TYPE_SELL hat. Denn nur wenn das so ist, handelt es sich um eine Sell Position. Dann möchten wir noch wissen, ob der PositionStopLoss derzeit noch oberhalb des Positionseinstiegspreises ist. Und ich möchte meinen Breakeven Stop erst setzen, wenn der Bid Preis mindestens dreißig Punkte unterhalb des...
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 40 SIMPLER BUY BREAKEVEN STOP
    In diesem Video wollen wir uns einmal anschauen, wie man einen Break Even Stop setzen kann. Das bedeutet, sobald der Preis oberhalb des Kaufpreises liegt, wird hier so eine rote Stop loss-Linie sichtbar. Die soll verhindern, dass wir wieder ins Minus laufen und wir wollen uns einmal anschauen wie man sowas in MQL5 programmieren kann. Um das zu tun, klicken wir hier oben auf diesen kleinen Button oder drücken die F4-Taste. Das ruft dann hier den Meta Editor auf und hier klicken auf Datei, neue Datei, Expert Advisor aus Vorlage, weiter. Ich vergebe hier einmal den Namen SimplerBuyBreakEvenStop. Klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb dieser OnTick-Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. Wir starten damit, dass wir die Datei Trade.mqh importieren. Das ist eine Datei, die Handelsfunktionen enthält. Denn wir müssen gleich eine Testposition eröffnen, damit wir etwas haben, wofür wir den Stop setzen können. Dazu erstellen wir uns eine Instanz von der Klasse CTrade. Die bekommt den Namen Trade. Da wir kaufen möchten, müssen wir zunächst einmal den Ask Preis berechnen. Das übernimmt die Funktion SymbolInfoDouble. Für das aktuelle Währungspaar auf dem Chart. Wir nutzen SYMBOL_ASK. Alles in Großbuchstaben, da wir den Ask Preis ermitteln möchten und mit NormalizeDouble und _Digits berechnen wir automatisch die richtige Anzahl der Nachkommastellen. Das kann sich je nach Währungspaar nämlich unterscheiden. Danach prüfen wir, ob wir offenen Positionen haben. Und nur wenn die Funktion PositionsTotal einen Rückgabewert von 0 liefert, dann haben wir keine offene Position. Und dann nutzen wir hier trade.Buy um auf unserem Testkonto eine Testposition zu eröffnen. Auf einem Echtgeldkonto würde man das natürlich nicht machen. Aber wir brauchen die Position, um jetzt im nächsten Schritt zu prüfen, ob unser Buy Break Even Stop gesetzt wird. Dazu rufen wir eine neue Funktion auf, die gibt es noch gar nicht, darum müssen wir die jetzt programmieren. Die bekommt als Parameter den Ask Preis übergeben. Sie trägt den Namen CheckBuyBreakEvenStop. wir haben keinen Rückgabewert und als Parameter nutzen wir hier den Ask Preis, damit das auch für mehrere Positionen funktioniert, gehen wir hier mit einer Vorschleife alle Positionen durch und zählen so lange runter wie wir noch offenen Positionen übrig haben. Für jede dieser Positionen benötigen wir jetzt ein paar Informationen. Wir fangen damit an, dass wir die Ticketnummer der Position ermitteln. Das geht mit der Funktion PositionGetInteger, POSITION_TICKET. Alles in Großbuchstaben. Der Rückgabewert ist hier witzigerweise eine unsignierte long-Variable, obwohl wir eigentlich eine integer-Variable erwarten. Aber wenn man das hier einmal markiert und die F1-Taste drückt, dann sieht man, dass der Rückgabewert tatsächlich long ist. Als nächstes benötigen wir den Kaufpreis. Das ist der Preis, zu dem wir eingestiegen sind. Den bekommen wir mit PositionGetDouble und übergeben hier POSITION_PRICE_OPEN. Das Ergebnis weisen wir hier der Variable buyprice zu. Das Ganze wiederholen wir jetzt noch einmal für den Positions-Stop-Loss und für den Positions-Take-Profit-Wert. Außerdem interesSiert uns noch der Typ der Position. Den bekommen wir mit PositionGetInteger, POSITION_TYPE. Der Typ gibt an, ob wir einen Kauf- oder Verkaufsposition haben. Und letztendlich möchten wir auch noch wissen, für welches Währungspaar unsere Position eröffnet wurde. Das übernimmt die Funktion PositionGetSymbol. Jetzt prüfen wir ein paar Konditionen ab: Zunächst einmal möchten wir wissen, ob das Positionssymbol übereinstimmt mit dem Währungspaar auf dem Chart. Außerdem möchten wir wissen, ob unser Positionstyp eine Kaufposition ist. In dem Fall wäre der Rückgabewert POSITION_TYPE_BUY. Ein Break Even Stop macht nur dann Sinn, wenn der PositionsStopLoss unterhalb des Kaufpreises liegt und außerdem möchte ich gerne erst den Stop Loss setzen,
    9 min

About MQL5 Tutorial - Automatisch traden mit Metatrader5

From the publisher's feed

Metatrader5 MQL5 Expert Advisor Tutorial