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 – 87 SIMPLES SELL BUTTON OBJEKT
    In diesem Video wollen wir uns einmal anschauen, wie man ein Objekt erstellen kann. Diesmal ist es dieser Sell-Button hier. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 programmiert. 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 SimplerSellButton, 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 einem include-Statement, um uns die Datei Trade.mqh zu importieren, die Bestandteil von MQL5 ist und uns vereinfachte Handelsfunktionen bietet. Danach erstellen wir uns eine Instanz von der Klasse CTrade. Die erhält den Namen trade und wir nutzen Sie später, um vereinfachte Positionen zu eröffnen. Außerdem brauchen wir noch zwei Variablen. Einmal für den Ask-Preis und einmal für den Bid-Preis. Das sind auch die Werte, die wir in der OnTick-Funktion zuerst berechnen. Und zwar mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen entweder SYMBOL_ASK oder SYMBOL_BID für die Berechnung und mit NormalizeDouble und _Digits stellen wir sicher, dass die richtige Anzahl von Nachkommastellen für das jeweilige Währungspaar berechnet wird. Jetzt können wir das eigentliche Objekt erstellen. Das übernimmt die Funktion ObjectCreate. Wenn man die einmal markiert und die F1-Taste drückt, dann sehen wir hier eine Anzahl von Parametern und wenn man hier klickt, dann stellen wir fest, dass es eine ganze Menge unterschiedlicher Objekttypen gibt. Wir wollen in diesem Video einen Button erstellen. Das wäre dieses Objekt hier. Es handelt sich um einen Button, der auf dem Hauptchart, bei den Kerzen dargestellt werden soll. ObjectCreate benötigt einige Parameter. Der erste Parameter hier ist für das aktuelle Währungspaar auf dem Chart. Parameter Nummer 2 setzt den Namen für das Objekt. Parameter Nummer 3 ist der Objekttyp. In unserem Fall nutzen wir OBJ_BUTTON. Der 4. Parameter steht für das Fenster. Da wir das Hauptfenster nutzen wollen, ist das hier Fenster 0. Wenn sie Oszillatoren verwenden, wird in der Regel noch ein zweites Fenster unterhalb der Kerzen dargestellt. Das möchten wir in dem Fall nicht nutzen. Und auch die beiden letzten Parameter hier setzen wir auf 0. Die würde man bei anderen Objekten verwenden, um einen Wert für ein Datum oder einen Preis einen Ankerpunkt anzugeben. Das haben wir beispielsweise gemacht, als wir eine Linie gezeichnet haben, die jeweils oberhalb der höchsten Kerze gezeichnet wird. Unser Button soll aber immer an der gleichen Stelle erscheinen, darum brauchen wir diese Werte nicht. Allerdings möchte ich noch einige Eigenschaften verändern. Zum Beispiel möchte ich mit ObjectSetInteger für das aktuelle Währungspaar auf dem Chart und das Objekt mit dem Namen SellButton diese Eigenschaft hier verändern. Die heißt OBJPROP_XDISTANCE. Wir setzen sie auf 200 und das ist die Distanz in Pixeln zum Rand. Ähnlich funktioniert das Setzen der Breite des Buttons. Auch hier ObjectSetInteger für das aktuelle Währungspaar auf dem Chart und das Objekt mit dem Namen SellButton. Diesmal verändern wir die Eigenschaft OBJPROP_XSIZE und setzen die Breite des Buttons auf 200. Das Ganze wiederholen wir jetzt noch einmal für die Eigenschaft OBJPROP_YDISTANCE. Das ist dann die vertikale Distanz. Die setzen wir auf 250 Pixel und ganz ähnlich verfahren wir jetzt hier mit der Höhe des Buttons. Die dafür richtige Eigenschaft nennt sich OBJPROP_YSIZE und die Höhe des Buttons ist in unserem Fall nur 50 Pixel. Und damit die Distanzwerte eingehalten werden, können wir hier noch definieren, in welcher Ecke wir das Objekt darstellen möchten. Dazu verändern wir die Eigenschaft OBJPROP_CORNER. In meinem Fall habe ich Ecke 2 gewählt. Und damit der Button eine sinnvolle Beschriftung erhält...
    10 min
  • MQL5 TUTORIAL GRUNDLAGEN – 86 SIMPLER BUY BUTTON
    In diesem Video wollen wir uns einmal anschauen, wie man ein solches Objekt hier programmieren kann. Es handelt sich um einen BuyButton. Und wir wollen mal schauen, wie man so etwas mit dem Metatrader programmiert. 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 mal den Namen SimplerBuyButton, 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 hier oben mit einem include-Befehl. Der wird die Datei trade.mqh importieren. Die ist Bestandteil von MQL5 und bietet uns vereinfachte Handelsfunktionen. Sie enthält auch die Klasse CTrade von der wir uns eine Instanz mit dem Namen trade erstellen. Als nächstes erstellen wir uns hier double-Variablen für den Ask- und den Bid-Preis. Und das ist auch das Erste was wir innerhalb der OnTick-Funktion berechnen möchten. Der Ask-Preis wird berechnet über die Funktion SymbolInfoDouble. Wir übergeben hier als Parameter _Symbol für das aktuelle Währungspaar auf dem Chart. Für den Ask-Preis ist der zweite Parameter SYMBOL_ASK, bitte alles in Großbuchstaben schreiben. Und mit NormalizeDouble und _Digits stellen wir sicher, dass die richtige Anzahl von Nachkommstellen für das jeweilige Währungspaar berechnet wird. Für den Bid-Preis ist das ziemlich identisch, bis auf den Namen für die Variable. Und als 2 Parameter nutzen wir hier SYMBOL_BID. Im Anschluss erstellen wir ein Objekt. Das übernimmt die Funktion ObjectCreate. Hier übergeben wir als ersten Parameter das aktuelle Währungspaar, also _Symbol. Parameter Nummer 2 ist der Name für das Objekt. Das bekommt bei uns jetzt den Namen BuyButton. Parameter Nummer 3 ist der Objekttyp. Wir nutzen hier OBJ_BUTTON und wenn man das einmal markiert und die F1-Taste drückt, dann sieht man, dass es hier eine ganze Reihe von Objekttypen gibt. Uns interessiert diese Art von Objekt, wo man einen Button direkt auf dem Chart anzeigen lassen kann. Parameter Nummer 3 steht für das Fenster, das wir nutzen wollen. In diesem Fall ist das Hauptchart, dass ist das Chart wo die Kerzen angezeigt werden. Wenn Sie auf Einfügen, Indikatoren, Oszillatoren und MACD klicken, dann würden Sie jetzt hier ein zweites Fenster für Oszillatoren angezeigt bekommen. Das wollen wir aber nicht nutzen. Wir hätten den Button lieber auf dem Chart mit den Kerzen. Der nächste Parameter steht für ein Datum. Hier brauchen wir keinen Wert, genau so wenig, wie für den letzten Parameter. Das wäre ein Preis. Wir müssen unseren Preis aber nicht bewegen. Darum setzen wir jetzt die Eigenschaften über ObjectSetInteger für das aktuelle Währungspaar auf dem Chart und für das Objekt mit dem Namen BuyButton möchte ich gerne diese Eigenschaft hier verändern. OBJPROP_XDISTANCE, die setze ich auf 200. Als nächstes möchte ich gern die Breite verändern. Auch hier nutze ich ObjectSetInteger für das aktuelle Währungspaar und das Objekt mit dem Namen BuyButton. Und diesmal verändere ich die Eigenschaft OBJPROP_XSIZE. Das ist die Breite von unserem Knopf. Und auch hier verwenden wir 200 Pixel. Der Abstand vom Rand wird jetzt nochmal für die Höhe gesetzt. Hier war das OBJPROP_XDISTANCE. Für die Y-Achse wäre das OBJPROP_YDISTANCE. Auch hier wieder 200 Pixel. Und jetzt setzen wir noch eine weiter integer-Eigenschaft. Die heißt OBJPROP_YSIZE. Hier handelt es sich um die Höhe des Buttons und da reichen uns 50 Pixel, denn sonst wäre der Button ein bisschen groß. Außerdem kann man in MQL5 sagen, in welcher Ecke das Objekt auftauchen soll. Dafür gibt’s die Objekteigenschaft OBJPROP_CORNER. Ich hab mich hier für Ecke 2 entschieden. Und von dort aus werden diese Distanzwerte dann genutzt. Und damit der Button auch vernünftig beschriftet wird, nutzen wir diesmal ObjectSetString, um einen Textwert zu verändern.
    11 min
  • MQL5 TUTORIAL GRUNDLAGEN – 85 SIMPLER TAKE PROFIT POINT TEST
    In diesem Video wollen wir einmal testen, wie man Profit Punkte optimieren kann. Wir haben hier einen benutzerdefinierten Wert, den wir verändern können. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 programmieren kann. Um das zu tun klicken Sie im Metatrader 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 SimplerProfitPointTest, 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. Der wird uns die Datei trade.mqh importieren. Die ist Bestandteil von MQL5 und sie enthält eine Klasse mi dem Namen CTrade. Davon erstellen wir uns hier eine Instanz, die wir trade nennen. In der OnTick-Funktion möchten wir gerne den Aks- und den Bid-Preis berechnen. Das übernimmt die Funktion SymbolInfoDouble, für das aktuelle Währungspaar auf dem Chart. Der zweite Parameter ist entweder SYMBOL_ASK oder SYMBOL_BID, je nach dem ob wir den Ask- oder den Bid-Preis berechnen möchten und mit NormalizeDouble und _Digits stellen wir sicher, dass die richtige Anzahl von Nachkommastellen berechnet wird. Das kann nämlich je nach Währungspaar unterschiedlich sein. Im nächsten Schritt nutzen wir MqlRates, um uns ein Array mit Preisdaten zu erstellen. Das wird jetzt mit Hilfe der Funktion ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert und mit der Funktion CopyRates füllen wir unser Array jetzt mit Preisdaten für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit. Wir starten bei Kerze 0 und kopieren die Werte für die nächsten drei Kerzen und speichern sie unserem PriceInfo Array. Danach möchten wir eine Signalvariable erstellen. Die ist vom Typ string damit sie Text aufnehmen kann und bekommt hier noch keinen Wert zugewiesen, denn wir möchten unser Signal anhand von einem Simple Moving Average, für 50 Kerzen, ermitteln. Dazu erstellen wir uns hier erst einmal ein passendes Array. Im nächsten Schritt nutzen wir die in MQL5 eingebaute Funktion IMA für das aktuelle Währungspaar auf dem Chart und die aktuelle Zeiteinheit auf diesem Chart, um für 50 Kerzen ohne eine Verschiebung einen Wert für einen Simple Moving Average zu berechnen. Deswegen nutzen wir hier MODE_SMA. Und der letzte Parameter PRICE_CLOSE sorgt dafür, dass die Ergebnisse anhand der Schlusskurse ermittelt werden. Auch hier nutzen wir wieder ArraySetAsSeries, um unser Array von der aktuellen Kerze an abwärts zu sortieren. Und mit CopyBuffer füllen wir unser Array mit Daten, und zwar anhand der SMA50-Definition, die wir hier oben getroffen haben. Wir tun das für Buffer 0, von der aktuellen Kerze 0 und speichern die Daten von 10 Kerzen in unserem Array. Uns interessiert im Moment nur der aktuelle Wert. Den erhalten wir, wenn wir auf den Wert von Kerze 0 in unserem Array zugreifen. Und das Ergebnis weisen wir hier dieser Variable zu. Und wenn dieser Wert größer ist als der aktuelle Ask-Preis, dann möchten wir gerne kaufen und dann weisen wir den Begriff buy unserer Signalvariable zu. Im anderen Fall, wenn der Wert kleiner ist als der aktuelle Bid Preis, dann möchten wir gerne verkaufen und dann weisen wir den Begriff sell unserer Signalvariable zu. Und jetzt kommt der eigentlich interessante Teil: Denn wenn unser Signal auf sell steht und PositionsTotal uns einen Wert kleiner 1 zurückliefert, dann haben wir keine geöffneten Positionen, aber ein Sell-Signal. Und dann nutzen wir trade.Sell, um 10 Microlot zu verkaufen. Und hier kommt jetzt unsere UserProfitPointValue-Variable zum Einsatz. Denn hier legen wir jetzt unseren Take Profit fest. Der wird hier noch mit dem Punktewert für die aktuelle Währung multipliziert. Die kann je nach ausgewähltem Währungspaar unterschiedlich sein. Im anderen Fall,
    9 min
  • MQL5 GRUNDLAGEN – 84 SIMPLER BOLLINGER BANDS SELL TRAILING STOP
    In diesem Video wollen wir uns einmal anschauen, wie man einen Sell Trailing Stop für das obere Bollinger Band programmieren kann. Also lassen Sie uns einmal schauen, wie man so etwas im Metatrader programmiert. 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 SimplerBollingerBandsSellTrailingStop, 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 hier oben mit einem include-Befehl. Der wird uns die in MQL5 enthaltene Datei trade.mqh importieren. Und die enthält eine Klasse mit dem Namen CTrade. Davon erstellen wir uns jetzt eine Instanz und geben ihr den Namen trade. In der OnTick-Funktion starten wir mit einer statischen double-Variable. Die bekommt den Namen LastStopBollingerBandsValue und die wird immer den letzten Wert aufnehmen, den wir dann mit dem aktuellen Wert vergleichen. Jetzt berechnen wir den Ask Preis und den Bid Preis. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen entweder SYMBOL_ASK oder SYMBOL_BID und mit NormalizeDouble und _Digits stellen wir sicher, dass wir die richtige Anzahl von Nachkommastellen berechnen. Je nach Währung können das nämlich 3 oder 5 Nachkommastellen sein. Damit wir einen Trailing Stop nachziehen können, prüfen wir jetzt, ob die Anzahl der Positionen kleiner ist als 1 und wenn wir keine geöffnete Position haben, dann nutzen wir trade.Sell, um uns eine Testposition über 10 Microlot zu eröffnen. Natürlich würde man das nur auf dem Demokonto oder im Strategietester machen. Danach setzen wir die Variable LastStopBollingerBandsValue auf einen sehr hohen Wert von 1000. Den werden wir in der Realität nie haben und theoretisch könnten wir den hier auch auf 0 setzen, aber dann müssten wir zusätzliche Überprüfungen einbauen und für dieses einfache Beispiel soll uns das hier so reichen. Weiter geht es mit der Erstellung von zwei Arrays für das obere und für das untere Bollinger Band. Es gäbe auch noch das mittlere Band, aber das wird in diesem Fall nicht benötigt. Mit ArraySetAsSeries sortieren wir uns beide Bollinger Bänder von der aktuellen Kerze an abwärts. Mit der Funktion iBands, die in MQL5 eingebaut ist, können wir jetzt für das aktuelle Währungspaar und die auf dem Chart eingestellte Zeiteinheit die Bollinger Bänder für 20 Kerzen berechnen. Wir nutzen hier keinen Wert für die Verschiebung. Der Wert für die Deviation beträgt 2. Wenn man mal auf die Eigenschaften der Bollinger Bänder klickt, dann wird das in Deutsch mit Abweichung übersetzt. Wir möchten die Werte anhand der Schlusskurse berechnen und darum nutzen wir hier als letzten Parameter PRICE_CLOSE, bitte alles in Großbuchstaben. Jetzt füllen wir unser Array für das obere und das untere Bollinger Band, und zwar mittels CopyBuffer. Anhand der Bollinger Band Definition, die wir hier oben getroffen haben, für das obere Band machen wir das für Buffer 1, für das unter nutzen wir Buffer 2 und für beide gilt, wir starten mit der aktuellen Kerze 0 und kopieren die Werte für 3 Kerzen, um sie in unseren Arrays zu speichern. Und jetzt können wir auf Kerze 1 in unserem Array zugreifen, um das letzte obere und das letzte untere Bollinger Band zu berechnen. Kerze 1 nutzen wir, weil es für die aktuelle Kerze 0 keinen Schlusskurs gibt. Da würde uns ein sich ständig ändernder Wert angezeigt. Jetzt prüfen wir noch einige Dinge ab. Wir möchten gerne wissen, ob der Wert für das obere Bollinger Band größer ist als der Ask Preis und außerdem möchten wir den Stop Loss nur dann verschieben, wenn der Wert für das Bollinger Band kleiner ist als der letzte Wert für dieses Band. Denn sonst würden wir den Trailing Stop auch wieder nach oben verschieben und das macht bei einem Se...
    10 min
  • MQL5 TUTORIAL GRUNDLAGEN – 83 SIMPLER BOLLINGER BANDS TRAILING STOP
    In diesem Video wollen wir uns einmal anschauen, wie man einen Expert Advisor programmieren kann, der in der Lage ist, einen Buy Trailing Stop mit den Bollinger Böndern nachzuziehen. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 progammieren kann. Um das zu tun klicken Sie im Metatrader bitte 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 SimplerBollingerBandsBuyTrailingStop, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb der OnTick-Funktion gelöscht werden und auch die zwei Kommentarzeilen können weg. Wir starten mit der include-Funktion, um uns die Datei Trade.mqh zu importieren. Die ist Bestandteil von MQL5 und wird uns helfen später einfache Positionen zu eröffnen. Dazu erstellen wir uns von der Klasse CTrade, die in dieser Traidingbibliothek enthalten ist, eine Instanz mit dem Namen trade. In der OnTick-Funktion starten wir damit, dass wir uns eine statische double-Varibale erzeugen. Die bekommt hier den Namen LastStopBollingerBandsValue und soll den jeweils letzten Wert für unseren Stop Loss aufnehmen. Danach berechnen wir den Ask Preis und Bid Preis. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen SYMBOL_AKS bzw. SYMBOL_BID und mit NormalizeDouble und _Digits stellen wir sicher, dass wir die richtige Anzahl von Nachkommastellen hinter dem Komma berechnen und damit wir einen Trailing Stop nachziehen können, benötigen wir natürlich auch eine Testposition. Wenn also die Funktion PositionsTotal kleiner ist als 1, dann möchten wir hier trade.Buy benutzen, um eine Testposition über 10 Microlot zu eröffnen. Natürlich macht man das nicht auf einem Echtgeldkonto, aber auf einem Demokonto brauchen wir halt jetzt die Position, denn sonst können wir den Trailing STop nicht benutzen. Im Anschluss setzen wir den letzen Wert für den StopBollingerBandsValue auf 0, denn der wir ja beim nächsten Mal wieder benötigt. Für die Bollinger Bänder benötigen zunächst einmal zwei Array vom Typ double. Einmal für das obere und einmal für das untere Band. Eigentlich gibt’s es hier auch noch ein mittleres Band, aber das spielt in diesem Fall keine Rolle. Im Anschluss nutzen wir ArraySetAsSeries, um das obere und das untere Band von der aktuellen Kerze an abwärts zu sortieren. Und mit der in MQL5 enthaltenen Funktion iBands erstellen wir uns jetzt eine Definition für die Bollinger Bänder für das aktuelle Währungspaar auf dem Chart und die auf dem Chart aktuell ausgewählte Zeiteinheit. Wir möchten gerne für 20 Kerzen die Werte berechnen. Wir nutzen keinen Wert für die Verschiebung. Die Diviation ist 2 und die Berechnung soll anhand der Schlusskurse erfolgen. Jetzt können wir CopyBuffer nutzen, um unser jeweiliges Array mit Daten zu füllen. Für das obere Band nutzen wir Buffer 1, für das untere Band nutzen wir Buffer 2. Und damit können wir anhand der Bollinger Bands-Definition, die wir hier oben getroffen haben, von der Kerze 0, das ist die aktuelle Kerze, für 3 Kerzen die Daten kopieren und in unseren jeweiligen Array speichern. Uns interessiert jeweils der Wert für die letzte abgeschlossene Kerze. Das ist Kerze 1. Also greifen wir hier einfach auf Kerze 1 in unserem oberen und unterem Band zu und weisen das Ergebnis der jeweiligen Variable zu. Für unseren Buy Trailing Stop interessiert uns, ob der letzte Lower Band Value, also untere Bandwert, unterhalb des Bid Preises liegt. Außerdem möchten wir noch wissen, ob dieser Wert größer ist als der letzte Stop Bollinger Band-Wert. Denn es macht nur dann Sinn einen Stop Loss für einen Buy Trade nachzuziehen, wenn die Preise auch gestiegen sind. Und falls das Beides zutrifft, dann möchten wir gerne eine Funktion mit dem Namen CheckBollingerBuyTrailingStop aufrufen. Hier übergeben wir dann den letzten Lower Band-Wert für das untere Bollinger Band.
    9 min
  • MQL5 TUTORIAL GRUNDLAGEN – 82 SIMPLER SMA SELL TRAILING STOP
    In diesem Video wollen wir uns einmal anschauen, wie man einen Sell Trailing Stop für einen gleitenden Durchschnitt programmieren kann. Wenn wir hier hineinzoomen dann sehen wir, dass wir eine Sell Position haben. Hier ist der gleitende Durchschnitt und der Stop Loss wird hier nachgezogen, also lassen Sie uns einmal schauen, wie man so etwas in MQL5 programmieren kann. Um das zu tun klicken Sie im Metatrader 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 mal den Namen SimplerSMASellTrailingStop, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb der OnTick-Funktion hier entfernt werden und wir löschen auch die beiden Kommentarzeilen. Im ersten Schritt nutzen wir die include-Anweisung, um die Datei Trade.mqh zu importieren. Die ist Bestandteil von MQL5 und stellt uns vereinfachte Handelsfunktionen bereit. Dazu erstellen wir uns zunächst eine Instanz von der Klasse CTrade und geben ihr den Namen trade. In der OnTick-Funktion erstellen wir eine statische Variable vom Typ double. Die bekommt den Namen LastStopMovingAverageValue und wird den jeweils vorhergehenden Wert für unseren StopMovingAverage-Wert aufnehmen. Außerdem benötigen wir die Werte für den Ask Preis und den Bid Preis. Die liefert uns die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen entweder SYMBOL_ASK oder SYMBOL_BID und mit NormalizeDouble und _Digits stellen wir sicher, dass wir die richtige Anzahl von Nachkommastellen für jedes Währungspaar automatisch berechnen. Damit wir einen Stop Loss nachziehen können brauchen wir auch eine Testposition. Wenn also die Funktion PositionsTotal einen Wert kleiner 1 zurückliefert, dann heißt das: wir haben keine geöffnete Position. Und dann nutzen wir trade.Sell, um eine Position für 10 Microlot zu verkaufen. Im nächsten Schritt setzen wir hier den Wert für LastStopMovingAverageValue auf einen unrealistisch hohen Wert von 1.000. Man könnte hier den Wert auch hier auf 0 setzen, dann müssten wir aber eine zusätzliche Überprüfung einbauen, denn in der Regel wird bei einem SellTrailingStop geprüft, ob der aktuelle Stop Loss tiefer ist als der vorhergehende Wert und der wird niemals kleiner als 0. Darum machen wir das in diesem Fall einfach mal so. Für unseren einfachen gleitenden Durchschnitt erstellen wir jetzt ein Array. Das wird im nächsten Schritt mit ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Und mit der in MQL5 enthaltenen Funktion iMA erstellen wir uns jetzt für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit für 500 Kerzen, ohne eine Verschiebung zu nutzen einen SimpleMovingAverage. Darum nutzen wir MODE_SMA. SMA steht für SimpleMovingAverage. Und wir möchten gerne, dass die Ergebnisse anhand der Schlusskurse berechnet werden. Mit CopyBuffer füllen wir jetzt unser MovingAverageArray anhand der Definition, die wir hier oben getroffen haben, und zwar für Buffer 0. Das ist diese Linie hier von dem gleitenden Durchschnitt. Wir starten bei der aktuellen Kerze 0 und füllen unser MovingAverageArray mit Werten für 3 Kerzen. Danach können wir den aktuellen Wert ermitteln indem wir uns einfach den Wert für Kerze 1 aus unserem Array herausholen. Zunächst einmal möchten wir wissen, ob der Wert für den Stop Loss Moving Average größer ist als der aktuelle Ask Preis und außerdem macht es nur dann Sinn, wenn sich der Wert so verändert hat, dass er jetzt niedriger ist als der letzte gemessene Wert, denn bei einem SellTrailingStop macht es keinen Sinn den Stop weiter nach oben zu schieben. Und wenn diese beiden Bedingungen wahr sind, dann möchten wir eine Funktion mit dem Namen CheckSMASellTrailingStop aufrufen. Der übergeben wir dann den aktuellen Bid Preis und den berechneten Wert für den StopMovingAverage-Wert. Anschließend weisen wir den aktuellen Wert der Variable La...
    9 min
  • MQL5 TUTORIAL GRUNDLAGEN – 72 SIMPLER TRIPPLE EMA
    In diesem Video wollen wir uns einmal anschauen, wie man einen Expert Advisor für so einen dreifachen exponentiellen Moving Average erstellt. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 programmieren kann. 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 SimplerTrippleEMA, 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 Datei Trade.mqh importieren. Die ist Bestandteil von MQL5 und stellt uns vereinfachte Handelsfunktionen bereit. Dazu erstellen wir uns zunächst eine Instanz von der Klasse CTrade und geben ihr den Namen trade. Die werden wir später verwenden, um Positionen zu eröffnen. Innerhalt der OnTick Funktion starten wir damit, dass wir den Ask Preis berechnen. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen SYMBOL_ASK, bitte alles in Großbuchstaben. Und mit NormalizeDouble und _Digits stellen wir sicher, dass auch die richtige Anzahl der Nachkommastellen für das jeweilige Währungspaar berechnet wird. Danach wiederholen wir das Ganze noch einmal für den Bid Preis. Alles ist identisch, bis auf den Variablen Namen und diesmal verwenden wir als zweiten Parameter SYMBOL_BID. Jetzt nutzen wir MqlRates um uns ein Array zu erstellen, welches die Preisdaten für uns aufnehmen kann. Das sortieren wir mit Hilfe des Befehls ArraySetAsSeries von der aktuellen Kerze an abwärts. Und mit Hilfe von CopyRates füllen wir jetzt unser Preis Info Array für das aktuelle Währungspaar auf dem Chart und die dort verwendete Zeiteinheit. Wir starten bei Kerze null und wir brauchen die Daten für drei Kerzen. Heutzutage verwendet man _Symbol und _Period. Für unser Signal erstellen wir jetzt eine Signal Variable vom Typ string, weisen hier aber noch keinen Wert zu, denn den möchten wir jetzt ermitteln. Dazu brauchen wir noch drei Arrays. Eins für unseren Zehner, eins für unseren Fünfziger und eins für ein Hunderter exponentiellen Moving Average. Wir nutzen die MQL Funktion iMA, um für das aktuelle Währungspaar und die aktuelle Zeiteinheit zunächst für zehn Kerzen, ohne einen Verschiebungswert einen exponentiellen Moving Average zu berechnen. Deswegen nutzen wir hier MODE_EMA. Und das Ganze soll anhand der Schlusskurse passieren. Damit ist der erste exponentielle gleitende Durchschnitt berechnet. Wir wiederholen das jetzt noch zweimal. Einmal für fünfzig und einmal für einhundert Kerzen. Bitte vergessen Sie nicht, hier die Variablen Namen entsprechend anzupassen. Auch diese drei Arrays sortieren wir von der aktuellen Kerze abwärts indem wir die Funktion ArraySetAsSeries verwenden. Und danach nutzen wir CopyBuffer, um jedes einzelne Array anhand der von uns getroffenen Definition für Buffer null, also die Signallinie von der aktuellen Kerze an für zehn Kerzen mit Daten zu füllen. Eigentlich würden an der Stelle auch drei Kerzen reichen. Und jetzt sind wir in der Lage, Signale zu ermitteln. Ein Kaufsignal würde vorliegen, wenn der exponentielle gleitende Durchschnitt für zehn Kerzen größer ist, als der für fünfzig Kerzen und wenn gleichzeitig der Durchschnitt für fünfzig Kerzen größer ist, als für hundert Kerzen. In dem Fall möchten wir kaufen. Also weisen wir den Begriff Kaufen unserer Signal Variable zu. Im anderen Fall, wenn der gleitende Durchschnitt für zehn Kerzen kleiner ist, als der für fünfzig Kerzen und der gleitende Durchschnitt für fünfzig Kerzen kleiner ist, als der für hundert Kerzen, dann ist das für uns ein Verkaufssignal, also weisen wir den Begriff Verkaufen unserer Signalvariable zu. Und wenn unser Signal auf Verkaufen steht und uns die Funktion PositionsTolal einen Rückgabewert von kleiner ein...
    8 min
  • MQL4 TUTORIAL GRUNDLAGEN – 81 SIMPLER SMA BUY TRAILING STOP
    In diesem Video wollen wir uns einmal anschauen, wie man für einen gleitenden Durchschnitt einen Trailing Stop für buy trades erstellen kann. Der hier den Stop Loss anpasst, wenn sich der gleitende Durchschnitt nach oben bewegt. Also lassen Sie uns einmal herausfinden, wie man so etwas in MQL4 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 SimplerSMABuyTrailingStop, 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 uns eine statische Variable vom Typ double erstellen. Die heißt LastStopMovingAverageValue und soll den letzten bekannten Wert für unseren gleitenden Durchschnitt aufnehmen, damit wir einen Stop Loss nachziehen können, brauchen wir natürlich auch eine geöffnete buy-Position. Wenn also keine offene Position existiert und OrdersTotal einen Wert von 0 hat, dann nutzen wir hier OrderSend, um eine Testposition für 10 Micorlot zu eröffnen und danach nutzen wir die in MQL4 enthaltene Funktion IMA für das aktuelle Währungspaar und die aktuelle Zeiteinheit auf diesem Währungspaar, um 500 Kerzen, ohne Verschiebung, für einen SMA, also einen SimpleMovingAverage, anhand der Schlusskurse den Wert für Kerze 1 zu berechnen. Der wird dann in dieser Variable hier gespeichert. Und die vergleichen wir jetzt mit letzten Wert und wenn der aktuelle Wert größer ist, als der letzte Wert, prüfen wir noch ab, ob der aktuelle Wert kleiner ist, als der Bid Preis und wenn beide dieser Bedingungen zutreffen, dann rufen wir eine Funktion mit dem Namen CheckSMABuyTrailingStop auf und übergeben hier als Parameter den ermittelten Wert für unseren gewünschten Stop Loss. Diese Funktion existiert noch nicht, also müssen wir die gleich noch programmieren. Als letzten Schritt möchten wir natürlich noch den letzten StopMovingAverage Wert für den nächsten Aufruf mit dem aktuellen Wert ersetzen, denn der aktuelle Wert ist ja beim nächsten Mal der letzte Wert. Unsere benutzerdefinierte Funktion soll den Namen CheckSMABuyTrailingStop erhalten. Wir nutzen hier void, da wir keinen Rückgabetyp benötigen und als Parameter übergeben wir hier den StopMovingAverageValue für unseren gleitenden Durchschnitt. Mit einer Vorschleife gehen wir jetzt alle Positionen durch und nutzen OrderSelect für den aktuellen Schleifenzählerwert, den wir hier nutzen, um jede Order einzeln auszuwählen. Jetzt prüfen wir, ob das Währungspaar für die ausgewählte Order mit dem Währungspaar auf dem Chart übereinstimmt. Und danach, ob der OrderTyp eine Kauforder ist und außerdem möchten wir gerne wissen, ob der aktuelle OrderStopLoss kleiner ist als der StopMovingAverage-Wert, den wir oben berechnet haben. Denn es macht ja keinen Sinn einen BuyTrailingStop für eine Kaufposition wieder nach unten wandern zu lassen. Und nur wenn alle diese Bedingungen wahr sind, dann nutzen wir hier OrderModify, um für das aktuelle OrderTicket zum unveränderten Order-Eröffnungskurs nur den Stop Loss zu unserem gewünschten Wert anzupassen. Den Wert für OrderTakeProfit, für das Ablaufdatum und für die Farbe lassen wir unverändert. Und zum Schluss setzen wir hier noch die schließenden Klammern für die Schleifen und für die benutzerdefinierte Funktion. Das wars so weit. Wenn Sie nicht wissen was alle diese Codezeilen hier bewirken sollen oder wenn Ihnen das zu schnell ging, dann möchten Sie sich vielleicht zunächst die anderen Videos aus der Grundlageserie noch einmal anschauen. Vielleicht ist aber auch der Premiumkurs auf unserer Webseite interessant für Sie. Für den Moment klicken wir hier auf kompilieren oder drücken die F7-Taste. Ich hab hier wieder einen Klammerfehler gemacht. Die sind immer sehr beliebt. Drücken wir nochmal auf kompilieren.
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 81 Simpler SMA Buy Trailing Stop
    In diesem Video wollen wir uns einmal anschauen, wie man für einen simplen gleitenden Durchschnitt einen Buy Trailing Stop programmieren kann, also lassen Sie uns einmal anschauen, wie man so etwas in MQL5 realisiert. Um das zu tun, klicken Sie im Metatrader 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 Datei, neue Datei, Expert Advisor aus Vorlage, weiter. Ich vergebe hier einmal den Namen SimplerSMABuyTrailingStop klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb der OnTick-Funktion gelöscht werden und auch die zwei Kommentarzeilen können weg. Wir starten damit, dass wir mittels include hier die Datei Trade.mqh einbinden. Die ist Bestandteil von MQL5 und ermöglicht es uns von der Klasse CTrade eine Instanz zu bilden. Die wird uns später helfen, wenn wir Positionen eröffnen. Innerhalb der OnTick-Funktion erstellen wir eine statische Variable für den letzten MovingAverageValue, also den letzten bekannten Wert. DAnnach möchten wir gerne den Ask Preis und den Bid Preis ermitteln. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar. Wir nutzen entweder SYMBOL_ASK oder SYMBOL_BID und mit NormilzeDouble und _Digits stellen wir sicher, dass wir die richtige Anzahl von Nachkommastellen für das jeweilige Währungspaar ermitteln. Damit wir unseren Trailing Stop für eine Position nutzen können, müssen wir natürlich auch eine eröffnen. Wenn also die Funktion PostitionsTotal einen Rückgabewert von < 1 liefert, dann haben wir keine geöffnete Position. Das bedeutet, dass wir eine eröffnen müssen. Dazu nutzen wir tade.Buy, um eine Kaufposition für 10 Microlot zu eröffnen. Natürlich macht man das nur auf einem Demokonto und für jede Position möchten wir auch den Wert für den letzten bekannten MovingAverage Wert zurücksetzen auf 0. Andernfalls könnte es passiert, dass der Expert Advisor versucht den Trailing Stop mit den Werten für die letzte Position nachzuziehen und das wollen wir ja nicht. Für den eigentlichen MovingAverage erstellen wir uns jetzt ein Array vom Typ double, damit es auch Nachkommastellen aufnehmen kann. Anschließend wir das Array mit ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Jetzt können wir definieren, welche Art von gleitendem Durchschnitt wir gerne nutzen möchten. Dazu nutzen wir die Funktion iMA. Die ist in MQL5 integriert. Und als Parameter übergeben wir das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit. Wir möchten gerne 500 Kerzen ermitteln lassen, ohne Verschiebungswert. Wir nutzen MODE_SMA. Das steht für SimpleMovingAverage und das Ergebnis soll anhand der Schlusskurse errechnet werden. Mit der Funktion CopyBuffer füllen wir jetzt unser erstelltes Array, dass wir hier oben definiert haben. Und zwar für Buffer 0. Buffer 0 ist die einzige Linie die unser gleitender Durchschnitt hat. Bei anderen Signalen, wie den Bollinger Bändern gebe es mehrere Buffer. Wir starten hier auch mit der aktuellen Kerze 0 und wir möchten die Werte für drei Kerzen kopieren und in unserem Array speichern. Nachdem wir das getan haben, können wir den aktuellen Wert ermitteln, in dem wir uns in unserem Array den Wert für Kerze 1 anschauen. Das ist die letzte geschlossene Kerze auf dem Chart. Damit unser Stop Loss richtig nachgezogen wird, möchten wir noch ein paar Dinge prüfen. Und zwar ob der StopMovingAverage Wert kleiner ist als der aktuelle Bid Preis. Andernfalls kann er nicht verändert werden. Eine zweite Sache, die wir überprüfen möchten ist, ob der aktuelle Wert größer ist, als der letzte Wert den wir ermittelt haben. Und wenn beide Bedingungen zutreffen, dann möchten wir gerne eine Funktion CheckSMABuyTrailingStop aufrufen. Hier übergeben wir den aktuellen Ask Preis und den ermittelten Wert für den StopMovingAverage Wert. Danach weisen wir den aktuellen Stop Loss Wert der Variable LastStopMovingAverageValue zu,
    9 min
  • MQL5 TUTORIAL GRUNDLAGEN – 80 SIMPLER SPREAD CHECKER
    In diesem Video wollen wir uns einmal anschauen, wie man mit MQL5 den Spread für eine bestimmte Anzahl von Kerzen ermitteln kann, also lassen Sie uns einmal schauen, wie man so etwas mit dem Metatrader programmiert. Um das zu tun, klicken Sie im Metatrader bitte 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 SimplerSpreadChecker, klicke auf weiter, weiter und fertigstellen. Jetzt kann hier alles oberhalb der OnTick-Funktion gelöscht werden und auch die zwei Kommentarzeilen können weg. Wir starten damit, dass wir uns eine benutzerdefinierte input-Variable generieren. Die kann man durch diesen modifier input während der Laufzeit verändern, ohne dass man neu kompilieren muss. Es handelt sich um eine integer-Variable für die Anzahl der Kerzen. Der Initialwert ist 5. Innerhalb der OnTick-Funktion erstellen wir uns eine Variable für den niedrigsten Spread. Die ist vom Typ double und heißt hier LowestSpreadValue. Der erste Wert für die Initialisierung ist 100.000, also ein sehr hoher Wert. Das wird auf jeden Fall nicht der niedrigste Wert den wir sehen. Danach erstellen wir eine weitere Variable für den höchsten Spread-Wert. Hier nutzen wir als Initialwert die 0 und das wird mich Sicherheit auch nicht der höchste Spread sein. Danach erstellen wir uns ein Array für Preisdaten. Das nennen wir PriceInformation und mit dieser Funktion hier MqlRates bekommen wir die Informationen für Preise, Volumen und Spread für jede einzelne Kerze. Danach sortieren wir das Array von der aktuellen Kerzen an abwärts. Das übernimmt die Funktion ArraySetAsSeries. Und jetzt füllen wir es noch mit Daten. In meinem Fall mit CopyRates für das aktuelle Symbol, also das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit. Wir starten mit der aktuellen Kerze 0 und möchten gerne unser Array mit Preisdaten für 200 Kerzen füllen und die Daten im PriceInformation-Array speichern. Um jetzt den kerzenbezogenen Spread zu ermitteln gehen wir die Kerzen mit einem Vorloop, also einer Vorschleife durch. Wir starten damit, dass wir mit der Anzahl der Kerzen, also der die wir hier oben definiert haben, beginnen und solange wie die aktuelle Kerzennummer größer oder gleich 0 ist, führen wir die Vorschleife aus und zählen runter. Um den Spread für eine Kerze zu berechnen, greifen wir dann auf die Nummer der aktuellen Kerze in unserem PriceInformation-Array zu und mit der Eigenschaft .spread bekommen wir die kerzenbezogene Information dazu und die speichern wir in unserer Variable CurrentCandle-Spread. Danach erstellen wir uns eine Journalausgabe. Das übernimmt die Print-Funktion. Die wird uns im Journal anzeigen: aktueller Spread für Kerze gefolgt von der Kerzennummer. Danach folgt ein Doppelpunkt und dann kommt der aktuelle kerzenbezogene Spread-Wert. Jetzt prüfen wir, ob der Spread für die aktuelle Kerze kleiner ist, als der bisherige niedrigste Spread-Wert und wenn das so ist, dann weisen wir diesen Wert unserer Variable für den niedrigsten Spread-Wert zu. Im anderen Fall, wenn der aktuelle Wert größer ist, als der aktuell höchste Spread-Wert, dann speichern wir diesen Wert und weisen ihn der Variable HighestSpreadValue zu. Jetzt erstellen wir uns mit Comment noch eine Chartausgabe. Die wird uns den Satz „Niedrigster Spread war“ und „Höchster Spread war“ gefolgt von den ermittelten Werten auf dem Chart anzeigen. Zum Schluss müssen wir noch die Vorschleife beenden und das hier ist das Ende von der OnTick-Funktion. Das wars also so weit. Und wenn Sie keine Ahnung haben, was alle diese Codezeilen bewirken sollen oder wenn Ihnen das zu schnell ging, dann möchten Sie sich vielleicht zunächst die anderen Videos aus dieser Grundlagenserie anschauen, vielleicht ist aber auch der Premiumkurs interessant für Sie. Den finden Sie auf unserer Webseite. Und auch das hier war wieder ein Video,
    7 min

About MQL5 Tutorial - Automatisch traden mit Metatrader5

From the publisher's feed

Metatrader5 MQL5 Expert Advisor Tutorial