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 – 79 SIMPLER COLOR CHANGER
    In diesem Video wollen wir einmal einen Expert Advisor erstellen der in der Lage ist, die Farben auf dem Chart für unterschiedliche Objekte zu ändern. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 programmieren kann. 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 SimperColorChanger, 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 in der OnTick-Funktion zunächst mit MqlRates ein Array für Preisinformationen erstellen. MqlRates ist eine Struktur, die die Informationen zu Preisen, Volumen und Spread für jede Kerze aufbewahren kann. Wir nutzen ArraySetAsSeries um unser PriceInformation-Array von der aktuelle Kerze an abwärts zu sortieren. Und danach nutzen wir CopyRates, um für das aktuelle Währungspaar und die aktuell auf dem Chart eingestellte Zeiteinheit von der aktuellen Kerze 0 an für 3 Kerzen die Daten zu kopieren und in unser PriceInformation-Array zu speichern. Das ermöglicht uns jetzt die Preise zu ermitteln. Der erste Preis der uns interessiert ist der Schlusskurs für Kerze 1. Den erhalten wir in dem wir uns den Schlusskurs für Kerze 1 aus unserem PriceInformation-Array holen. Wenn das hier einmal ausschneidet und den Punkt auf der Tastatur betätigt, dann sehen wir dass wir hier für Schlusskurse, Höchstkurse, Niedrigstkurse und Eröffnungskurse die Daten abrufen können. Uns interessieren die Schlusskurse. Das Ganze wiederholen wir jetzt noch einmal. Diesmal hätte ich gerne für die Kerze 2 den Schlusskurs, darum schaue ich mir die Eigenschaft Close für Kerze 2 in unserem PriceInformation-Array an und speichere das Ergebnis in dieser Variable. Anhand dieser beiden Variablen kann ich jetzt bestimmen, ob es rauf oder runter geht. Und immer wenn der Schlusskurs für Kerze 2 kleiner ist, als der Schlusskurs für Kerze 1, möchte ich eine bestimmte Darstellung auf dem Chart sehen. Dazu setzen wir Eigenschaften. Das geht hier mit ChartSetInteger. Wir setzen hier die Farbeigenschaft auf grün. Deswegen hätte man eigentlich gedacht, man nutzt eine Funktion wie ChartSetColor, aber offensichtlich haben die Entwickler von MQL5 sich das anders gedacht. Wir übergeben hier ein paar Parameter. Der erste Parameter hier steht für das aktuelle Chart. Eigentlich sogar für die Chart-ID. Denn wenn man hier z. B. ein Oszillatorenfenster einfügen würde, dann hätte man zwei Chart-IDs. Uns interessiert das Hauptchart. Wir möchten gerne den Wert ändern für die Eigenschaft CHART_COLOR_CANDLE_BULL. Die steht für die Innenfarbe für bullische Kerzen. Und ich wähle hier die Farbe grün aus. Clrgreen ist eine von vielen vordefinierten Farben. Und wenn man das markiert und die F1-Taste drückt, dann sieht man dass hier noch jede Menge anderer Farben zur Verfügung stehen. Danach ändern wir die Eigenschaft der Farbe für die bearischen Kerzen. Das ist die Eigenschaft CHART_COLOR_CANDEL_BEAR. Auch die setzen wir hier auf Grün. Außerdem hätte ich gerne die Außenfarbe für die Kerzen ebenfalls grün. Und hier nutzen wir ChartSetInteger für eine Eigenschaft mit dem Namen CHART_COLOR_CHART_UP. Und dann wiederholen wir das Ganze noch einmal für die Außenfarbe von bearischen Kerzen. Das ist dann entsprechend die Eigenschaft CHART_COLOR_CHART_DOWN. Auch die werden grün dargestellt. Jetzt such ich mir noch aus, welchen Kerzentyp ich sehen möchte. Dafür steht die Eigenschaft CHART_MODE zur Verfügung. Wenn man die einmal markiert und F1 drückt, dann sehen wir hier, aha, das ist der Charttyp und ich kann mich entscheiden ob ich Kerzen, Bars oder Linien haben möchte. Ich hätte in diesem Fall gerne die Darstellung mit sogenannten Bars. Das hier ist die übliche Kerzendarstellung und das hier sind die sogena...
    9 min
  • MQL5 TUTORIAL GRUNDLAGEN – 78 SIMPLE MULTI CURRENCY ORDER
    In diesem Video wollen wir uns einmal anschauen, wie man einen Expert Advisor programmieren kann, der in der Lage ist, im Strategietest, Positionen für unterschiedliche Währungspaare zu öffnen. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 programmieren kann. Um das zu tun, klicken Sie bitte im Metatrader auf dieses kleine Symbol hier oben oder drücken Sie die F4-Taste. Das ruft dann hier den Metaeditor auf und hier klicken wir auf Datei, neue Datei, Expert Advisor aus Vorlage, weiter. Ich vergebe hier einmal den Namen SimpleMultiCurrencyOrder, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb dieser OnTick-Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen können entfernt werden. Wir starten mit einem include-Befehl, der wird uns die Datei trade.mqh importieren. Die ist Bestandteil von MQL5 und enthält die Klasse CTrade von der wir uns hier eine Instanz mit dem Namen trade erstellen. Die werden wir gleich verwenden, um unsere Positionen zu eröffnen. Innerhalb der OnTick-Funktion starten wir damit, dass wir den Ask-Preis berechnen. Das machen wir mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen SYMBOL_ASK für den Ask-Preis und mit NormalizeDouble und _Digits stellen wir sicher, dass wir für das jeweilige Währungspaar die richtige Anzahl von Nachkommastellen ermitteln. Und da wir ja Positionen in unterschiedlichen Währungspaaren eröffnen möchten, müssen wir das Ganze jetzt nochmal wiederholen. Diesmal holen wir uns den Ask-Preis für dieses Währungspaar, das ist das Britische Pfund gegen den US-Dollar. Darum geben wir jetzt hier als ersten Parameter in der Klammer die Bezeichnung des Währungspaares an. Und zwar so wie sie hier auftaucht. Das kann je nach Kontentyp etwas anderes aussehen. Ich habe zum Beispiel einige Kontentypen, wo hinten noch ein Suffix wie .M steht, also stellen Sie bitte sicher, dass Sie das hier genau richtig eingeben, sowie es auch auf Ihrem Chart angezeigt wird. Das Ganze wiederholen wir jetzt nochmal. Diesmal holen wir uns den Ask-Preis für den US-Dollar gegen den Kanadischen Dollar und geben das hier im ersten Parameter entsprechend an. Und damit wir in beide Richtungen traden können, machen wir das Ganze jetzt noch für den Bid-Preis. Hier für das aktuelle Währungspaar und für die beiden anderen Währungspaare, in denen wir handeln möchten. Als nächstes erstellen wir uns hier eine string-Variable für das Signal. Die bekommt noch keinen Wert zugwiesen. Und da es hier um Demonstrationszwecke geht, reicht uns ein zufälliges Signal. Dazu wird die Funktion MathSRand genutzt und die Funktion GetTickCount, um unseren Zufallsgenerator zu initialisieren. GetTickCount gibt uns die Anzahl der Millisekunden seit dem Systemstart zurück und in Kombination erzeugt das hier einen eindeutigen Wert, den wir als Basis für die Ermittlung unserer Zufallszahlen nutzen werden. Die Zufallszahl selbst ermitteln wir mit MathRand. Das sieht ähnlich aus, wie diese Funktion, allerdings ohne S in der Mitte. Und dieses %2 zeigt uns, dass wir zwei unterschiedliche Werte erhalten werden. Die reichen uns, denn wenn unsere Zufallszahl den Wert 0 hat, dann möchten wir gerne kaufen, also weisen wir den Begriff buy unserer signal-Variable zu. Im anderen Fall, wenn der Rückgabewert für unsere Zufallszahl 1 ist, dann möchten wir gerne verkaufen und dann weisen wir den Begriff sell unserer signal-Variable zu. Und sobald wir ein verkaufs-Signal haben und die Anzahl für PositionsTotal kleiner ist als 10, dann möchten wir gleich mehrere Positionen eröffnen. Das machen wir mit trade.sell für jeweils 10 Microlot und geben hier in dem ersten Parameter die jeweiligen Währungspaare an. Für das aktuelle Währungspaar habe ich hier den Wert NULL genutzt, alles in Großbuchstaben. Das steht für keinen speziellen Wert und man kann NULL jeder anderen Basisvariable ohne Umwandlung zuordnen. Man hätte hier auch _SYMBOL nehmen können, wie hier oben. Im anderen Fall,
    7 min
  • MQL5 TUTORIAL GRUNDLAGEN – 77 SIMPLER AWESOME INDIKATOR
    In diesem Video wollen wir uns einmal anschauen, wie man für diesen Oszillator hier, den Awesome-Indikator, benutzerdefinierte Werte für den Kauf und den Verkauf eingeben und automatisieren kann. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 programmiert. Um das zu tun klicken Sie 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 einmal den Namen SimplerAwesomeIndikator, 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 hier mit einer include-Anweisung. Die wird uns die Datei trade.mqh importieren. Die ist Bestandteil von MQL5 und ermöglicht es uns vereinfachte Handelsfunktionen zu benutzen. Dazu erstellen wir uns im nächsten Schritt von der Klasse CTrade eine Instanz mit dem Namen trade. Außerdem möchten wir gerne in der Lage sein, einen Signalwert als Benutzereingabe vorzugeben. Dieser Zusatz hier input ermöglicht es uns einen Fließkommawert für unser Signal ohne Neukompilierung des Codes später im Expert Advisor verändern zu können. Das hier ist der vorbelegte Initialwert. In der OnTick-Funktion holen wir uns zunächst einmal den Ask-Preis und den Bid-Preis. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen SYMBOL_ASK oder SYMBOL_BID je nach dem ob wir den Ask- oder den Bid-Preis berechnen. Und mit NormalizeDouble und _DIGITS stellen wir sicher, dass wir für das jeweilige Währungspaar die richtige Anzahl von Nachkommastellen berechnen. Im nächsten Schritt erstellen wir uns eine signal-Variable. Die bekommt hier aber noch keinen Wert zugewiesen, denn den möchten wir gleich noch ermitteln. Mit MqlRates holen wir uns jetzt die Preisinformationen, denn MqlRates bewahrt Informationen über Preis, Volumen und Spread auf. Wir nutzen hier ArraySetAsSeries, um unser Array von der aktuellen Kerze an abwärts zu sortieren und danach nutzen wir CopyRates, um für das aktuelle Symbol auf dem Chart und dir dort eingestellte Zeiteinheit, angefangen von der aktuellen Kerze 0, die Daten für 3 Kerzen in unser PriceInformation-Array zu kopieren. Danach brauchen wir noch ein weiteres Array. Das werden wir nutzen, um den aktuellen Oszillatorwert zu berechnen. Und für die Definition was wir da berechnen möchten, nutzen wir die eingebaute MQL5-Funktion iAO. Die benötigt genau zwei Parameter. Der erste Parameter steht für das aktuelle Währungspaar und der zweite Parameter für die auf dem Chart ausgewählte Zeiteinheit. Auch dieses Array sortieren wir von der aktuellen Kerze an abwärts, in dem wir ArraySetAsSeries benutzen. Und jetzt nutzen wir CopyBuffer, um anhand der Definition, die wir hier oben getroffen haben, für Buffer 0, also das jeweilige Signal hier, von der Kerze 0 an für 3 Kerzen die Preisdaten in unserem PriceArray zu speichern. Und jetzt berechnen wir den aktuellen Wert einfach in dem wir uns den Wert aus Kerze 0 aus unserem PriceArray holen. Mit NormalizeDouble und dieser 6 stelle ich sicher, dass der Ausgabewert sechs Nachkommastellen hat, so wie hier auch im Oszillator auch angezeigt wird. Und wenn dieser Wert größer ist, als der von uns definierte gewünschte Signalwert, dann ist das für uns ein Kaufsignal und dann weisen wir den Begriff buy unserer signal-Variable zu. Im anderen Fall, wenn der Oszillatorwert kleiner ist als 0, abzüglich unserem Signalwert, das ist dann der Minuswert für unser Signal, dann stellt das für uns ein Verkaufssignal dar und dann weisen wir den Begriff sell unserer Signalvariable zu. Und immer wenn unser Signal auf verkaufen steht und der Rückgabewert für PositionsTotal kleiner ist als 1, dann bedeutet das wir haben keine geöffneten Positionen, aber ein Verkaufen-Signal und dann nutzen wir trade.Sell, um 10 Microlot zu verkaufen. Passen wir das hier mal an.
    9 min
  • MQL5 GRUNDLAGEN – 76 SIMPLE ACCOUNT INFORMATION
    In diesem Video wollen wir uns einmal anschauen, wie wir uns einen Expert Advisor erstellen können, der in der Lage ist, uns hier die Kontoinformationen anzuzeigen. Also lassen Sie uns einmal schauen, wie man so etwas in 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 mal den Namen SimpleAccountInfo, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb dieser OnTick-Funktion gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. Wir starten damit, dass wir uns die Variable für den Account Server holen. Das machen wir über die Funktion AccountInfoString. Die wird uns eine Textkette zurückliefern. Der verwendete Parameter in diesem Fall ist ACCOUNT_SERVER, bitte alles in Großbuchstaben schreiben. Und bei mir ist der Rückgabewert in diesem Fall RoboForex Pro. Im nächsten Schritt holen wir uns die AccountCurrency, also die Währung, die wir auf unserem Konto verwenden. Hier ist der Aufruf ziemlich ähnlich, aber diesmal nutzen wir ACCOUNT_CURRENCY. Und das gibt in meinem Fall US-Dollar zurück. Das Gleiche machen wir jetzt nochmal für ACCOUNT_NAME. Der Rückgabewert bei mir ist Raimund Bauer. Der nächste Wert ist jetzt keine Textkette sondern ein Integer-Wert. Das ist nicht so ganz toll, weil die Rückgabewerte für den Tradingmodus auf dem Chart dann als Zahl dargestellt werden. Wenn man das einmal markiert und die F1-Taste drückt, dann sehen wir, es handelt sich um die Handelsweise des Kontos. Und wenn wir hier klicken, dann kann das entweder ein Demo-, ein Contest- oder ein Real-Account sein. Contest wird für Trading-Wettbewerbe genutzt. Da ich mir die Zahlen aber nie merken kann, möchte ich das gerne in eine lesbare Form bringen. Dazu erstellen wir zunächst einmal eine Stringvariable mit dem Namen ReadableAccountTrademode. Die hat hier noch keinen Wert, aber wenn uns der AccountTradeMode beispielsweise eine 0 zurückgibt, dann möchte ich gerne, dass die lesbare Form auf unserem Chart den Text DEMO ACCOUNT ausgibt. Entsprechend wäre das bei einem Rückgabewert von 1 dann ein CONTEST ACCOUNT. Und wenn der Tradingmodus uns eine 2 zurückgibt, dann hätten wir ein Echtgeldkonto und dann wir auf unserem Chart REAL ACCOUNT ausgegeben. Der nächste Wert AccountLogin ist wieder ein Integerwert. Den holen wir uns mit AccountInfoInteger. Und der Parameter ist ACCOUNT_LOGIN. Bei mir ist das hier die Kontonummer und wie man sehen kann wird auch der Trademodus hier oben als Echtgeldkonto ausgegeben. Im Metatrader kann man das unterscheiden anhand der Farben. Die Gelben sind Echtgeldkonten und die Grünen sind Demokonten. Weiter geht es mit der AccountCompany, also der Firma. Das ist wieder ein Stringwert, also eine Textkette und die gibt uns die ACCOUNT_COMPANY zurück. Bei mir ist das die Roboforex .Ltd. Holen wir uns mal den Hebel für das Konto. Das geht mit AccountInfoInteger und der hier genutzte Parameter heißt ACCOUNT_LEVERAGE. Bei mir steht jetzt hier 500, das ist ein hoher Wert und korrekt wäre eigentlich 1:500. Was ich sehr interessant finde ist, dass der Rückgabewert für ACCOUNT_LIMIT_ORDERS den wir uns hier mit AccountInfoInteger holen für mein Konto 500 erlaubte Orders anzeigt. Normalerweise sind das immer 200. Das muss ich heute direkt mal ausprobieren, aber jetzt holen wir uns erstmal die freie Margin. Diesmal nutzen wir AccountInfoDouble. Und er Parameter heißt ACCOUNT_MARGIN_FREE. In meinem Fall sind das hier etwas über 39.000 US-Dollar. Die nächsten beiden Rückgabewerte sind vom Typ bool, können also wahr oder falsch sein. ACCOUNT_TRADE_ALLOWED gibt uns eine Rückgabewert dafür, ob wir generell traden dürfen und ACCOUNT_TRADE_EXPERT sagt uns ob wir das auch mit einem Expert Advisor machen können. In meinem Fall stehen hier beide Werte auf true, also beides ist erlaubt.
    9 min
  • MQL5 TUTORIAL GRUNDLAGEN – 75 SIMPLER TIME FILTER
    In diesem Video wollen wir uns einmal anschauen, wie man einen Zeitfilter programmieren kann. So um neun Uhr wird der hier umspringen und wir sehen die erste Position. 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 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 SimplerTimeFilter, 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 Statement. Das wird uns die Datei Trade.mqh zur Verfügung stellen. Die enthält vereinfachte Handelsfunktionen. Und wir erstellen uns hier eine Instanz von der Klasse CTrade. Die bekommt den Namen trade und die werden sie später verwenden, um Positionen zu eröffnen. Im ersten Schritt erstellen wir uns hier eine string Variable für das Signal. Die kann Textketten aufnehmen, aber wir hier noch keinen Wert zu. Im nächsten Schritt erstellen wir eine input Variable. Die wird uns eine Eingabe ermöglichen. Auch die ist vom Typ string. Sie heißt StartTradingTime, denn sie soll die Startzeit für unsere erlaubten Trades festlegen. In diesem Fall nehmen wir hier neun Uhr morgens. Dann wiederholen wir das Ganze noch einmal für eine StopTradingTime. Das hier ist das Ende des erlaubten Zeitfensters. Also, in diesem Fall dürfen wir nur zwischen neun Uhr und zehn Uhr morgens Positionen eröffnen. Wir brauchen eine weitere Variable für die aktuelle Zeit. Und für unseren Filter gibt es hier noch eine Variable TradingIsAllowed. Es handelt sich um eine bool Variable. Das bedeutet, die kann entweder den Wert true für wahr oder false für falsch annehmen. Innerhalb der OnTick Funktion starten wir damit, dass wir mit SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart den Ask Preis berechnen. Das geht mit diesem Parameter SYMBOL_ASK. Und mit NormalizeDouble und _Digits stellen wir sicher, dass wir für das jeweilige Währungspaar die richtige Anzahl von Nachkommastellen automatisch ermitteln. Danach berechnen wir die lokale Zeit. Das übernimmt die Funktion TimeLocal. Die liefert uns die lokale Zeit des Computers zurück, auf dem das Client-Terminal läuft. Und im nächsten Schritt konvertieren wir mit der Funktion TimeToString diese ermittelte Zeit in eine Textkette. Hier übergeben wir als Parameter TIME_MINUTES. Wenn man das einmal markiert und die F1 Taste drückt, dann sieht man hier, dass die Zeit in unterschiedlichen Formaten zurückgegeben werden kann. Das von uns gewählte Format gibt uns die Stunden und Minuten geteilt von einem Doppelpunkt zurück. Um zu prüfen, ob wir uns innerhalb des Zeitfensters befinden, das wir definiert haben, möchte wir eine Funktion CheckTradingTime verwenden. Und nur, wenn die auf true steht, dann soll die Eröffnung einer neuen Position möglich sein. Diese Funktion existiert allerdings noch nicht. Darum müssen wir die gleich programmieren. Die zweite Bedingung die wir prüfen ist, ob uns die Funktion PositionsTotal einen Wert von null zurückliefert. Das bedeutet, wir haben keine geöffneten Positionen. Und wenn beides zutrifft, dann nutzen wir hier trade.buy, um eine Position für zehn Mikrolot hier zu eröffnen. Außerdem hätte ich gerne noch eine Chartausgabe. Die wird uns den Rückgabewert für den Trading Filter: die aktuelle Zeit und die Start- und die Stopp Zeit direkt auf unserem Chart ausgeben. Programmieren wir jetzt unsere benutzerdefinierte Funktion mit dem Namen CheckTradingTime. Die hat den Rückgabewert bool, kann also nur true für wahr oder false für falsch zurückgeben. Und wenn in dem ermittelten Wert für die aktuelle Zeit der Wert für unsere definierte StartTradingTime gefunden werden kann, dann setzen wir die Variable TradingIsAllowed auf true. Wenn man diese Funktion einmal markiert und die ...
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 74 SIMPLER ENVELOPES INDIKATOR
    In diesem Video wollen wir uns einmal anschauen, wie man diesen Indikator hier programmieren kann. Es handelt sich um den sogenannten Envelopes Indikator. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 automatisiert. 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 SimplerEnvelopesIndikator, 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 einer include Anweisung. Die wird uns helfen. Denn damit können wir uns die Datei Trade.mqh importieren. Die wiederum enthält die Klasse CTrade, von der wir uns hier eine Instanz mit dem Namen trade erstellen. Und die werden wir gleich nutzen, um damit Positionen zu eröffnen. Innerhalb der OnTick Funktion ermitteln wir zunächst einmal 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, je nachdem, ob wir den Ask oder den Bid Preis berechnen möchten. Und mit NormalizeDouble und _Digits stellen wir sicher, dass wir die richtige Anzahl von Nachkommastellen für das jeweilige Währungspaar ermitteln. Im nächsten Schritt erstellen wir eine string Variable mit dem Namen Signal. Die kann Texte aufnehmen. Wir weisen hier aber noch keine Texte zu, denn das Signal möchten wir jetzt gleich erst noch ermitteln. Dazu starten wir zunächst einmal mit der Funktion MqlRates. Die wird uns Informationen zu den Preisen geben. Denn MqlRates ist eine Struktur, die die Informationen über Preise, Volumen und Spread aufbewahrt. Das damit erstellte Array sortieren wir mit Hilfe der Funktion ArraySetAsSeries von der aktuellen Kerze an abwärts. Und mit CopyRates kopieren wir uns die Daten, für das aktuelle Symbol auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit. Wir starten mit Kerze null. Das ist die aktuelle Kerze, kopieren die Daten für drei Kerzen und speichern Sie in unserem PriceInformation Array. Jetzt benötigen wir noch zwei weiter Arrays. Eines für das obere und eines für das untere Band des Indikators. Auch die werden beide mit ArraySetAsSeries von der Kerze an abwärts sortiert. Kommen wir zur eigentlichen Definition. Das übernimmt die Funktion iEnvelopes, die in MQL5 enthalten ist. Die benötigt einige Parameter. Der erste Parameter ist für das aktuelle Währungspaar auf dem Chart. Der zweite steht für die auf dem Chart ausgewählte Zeiteinheit. Wir berechnen die Ergebnisse für 14 Kerzen, ohne einen Verschiebungswert. Die Grundlage soll MODE_SMA für Simple Moving Average sein. Die Ergebnisse hätten wir gern anhand der Schlusskurse. Und diesen Wert hier hinten, den sehen Sie auch, wenn Sie sich die Eigenschaften des Indikators einmal anschauen. Es handelt sich hier um den Deviation Wert. Stellen wir das Ganze mal auf Deutsch um. Dann sehen wir, dass Deviation für Abweichung steht. Und hier ist der Standardwert 0.100. Und das ist auch das, was wir hier verwenden. Mit CopyBuffer kopieren wir uns jetzt Daten in unsere Arrays. Buffer null wird verwendet, um die Daten für das obere Band zu ermitteln. Buffer eins steht für das untere Band. Und wir kopieren von der aktuellen Kerze null an die Daten für drei Kerzen und speichern sie im jeweiligen Array. Um den jeweiligen Wert für das obere und untere Band zu ermitteln, greifen wir auf die Werte von Kerze null im jeweiligen Array zu. Und mit NormalizeDouble und Komma sechs stellen wir sicher, dass wir auch die richtige Anzahl von Nachkommastellen ermitteln. Denn wenn man den Mauszeiger auf eins der beiden Bänder hält, dann sieht man, dass auch hier sechs Nachkommastellen angezeigt werden. Jetzt haben wir die Möglichkeit das Signal zu ermitteln. In diesem Fall prüfen wir,
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 74 SIMPLER ENVELOPES INDIKATOR
    In diesem Video wollen wir uns einmal anschauen, wie man diesen Indikator hier programmieren kann. Es handelt sich um den sogenannten Envelopes Indikator. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 automatisiert. 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 SimplerEnvelopesIndikator, 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 einer include Anweisung. Die wird uns helfen. Denn damit können wir uns die Datei Trade.mqh importieren. Die wiederum enthält die Klasse CTrade, von der wir uns hier eine Instanz mit dem Namen trade erstellen. Und die werden wir gleich nutzen, um damit Positionen zu eröffnen. Innerhalb der OnTick Funktion ermitteln wir zunächst einmal 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, je nachdem, ob wir den Ask oder den Bid Preis berechnen möchten. Und mit NormalizeDouble und _Digits stellen wir sicher, dass wir die richtige Anzahl von Nachkommastellen für das jeweilige Währungspaar ermitteln. Im nächsten Schritt erstellen wir eine string Variable mit dem Namen Signal. Die kann Texte aufnehmen. Wir weisen hier aber noch keine Texte zu, denn das Signal möchten wir jetzt gleich erst noch ermitteln. Dazu starten wir zunächst einmal mit der Funktion MqlRates. Die wird uns Informationen zu den Preisen geben. Denn MqlRates ist eine Struktur, die die Informationen über Preise, Volumen und Spread aufbewahrt. Das damit erstellte Array sortieren wir mit Hilfe der Funktion ArraySetAsSeries von der aktuellen Kerze an abwärts. Und mit CopyRates kopieren wir uns die Daten, für das aktuelle Symbol auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit. Wir starten mit Kerze null. Das ist die aktuelle Kerze, kopieren die Daten für drei Kerzen und speichern Sie in unserem PriceInformation Array. Jetzt benötigen wir noch zwei weiter Arrays. Eines für das obere und eines für das untere Band des Indikators. Auch die werden beide mit ArraySetAsSeries von der Kerze an abwärts sortiert. Kommen wir zur eigentlichen Definition. Das übernimmt die Funktion iEnvelopes, die in MQL5 enthalten ist. Die benötigt einige Parameter. Der erste Parameter ist für das aktuelle Währungspaar auf dem Chart. Der zweite steht für die auf dem Chart ausgewählte Zeiteinheit. Wir berechnen die Ergebnisse für 14 Kerzen, ohne einen Verschiebungswert. Die Grundlage soll MODE_SMA für Simple Moving Average sein. Die Ergebnisse hätten wir gern anhand der Schlusskurse. Und diesen Wert hier hinten, den sehen Sie auch, wenn Sie sich die Eigenschaften des Indikators einmal anschauen. Es handelt sich hier um den Deviation Wert. Stellen wir das Ganze mal auf Deutsch um. Dann sehen wir, dass Deviation für Abweichung steht. Und hier ist der Standardwert 0.100. Und das ist auch das, was wir hier verwenden. Mit CopyBuffer kopieren wir uns jetzt Daten in unsere Arrays. Buffer null wird verwendet, um die Daten für das obere Band zu ermitteln. Buffer eins steht für das untere Band. Und wir kopieren von der aktuellen Kerze null an die Daten für drei Kerzen und speichern sie im jeweiligen Array. Um den jeweiligen Wert für das obere und untere Band zu ermitteln, greifen wir auf die Werte von Kerze null im jeweiligen Array zu. Und mit NormalizeDouble und Komma sechs stellen wir sicher, dass wir auch die richtige Anzahl von Nachkommastellen ermitteln. Denn wenn man den Mauszeiger auf eins der beiden Bänder hält, dann sieht man, dass auch hier sechs Nachkommastellen angezeigt werden. Jetzt haben wir die Möglichkeit das Signal zu ermitteln. In diesem Fall prüfen wir,
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 73 SIMPLER SPREAD FILTER
    In diesem Video wollen wir uns einmal anschauen, wie man für Währungspaare, bei denen sich der Spread ändert, einen Filter bauen kann, der das Trading erlaubt oder nicht erlaubt. Um das zu tun, klicken Sie im Metatrader bitte hier oben auf dieses kleine Symbol oder drücken Sie die F4 Taste. Das ruft dann hier den Metaeditor auf. Und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier einmal den Namen SimplerSpreadFilter, 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 Statement. Damit importieren wir uns hier die Datei Tade.mqh. Und die erlaubt es uns, eine Instanz von der Klasse CTrade zu bilden. Wir haben hier den Namen trade vergeben und wir werden diese Instanz gleich nutzen, um Positionen zu eröffnen. Dazu ermitteln wir innerhalb der OnTick Funktion 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, je nachdem, ob wir den Ask oder den Bid Preis berechnen. Und mit NormalizeDouble und _Digits stellen wir sicher, dass für das jeweilige Währungspaar auch die richtige Anzahl von Nachkommastellen ermittelt wird. Das kann sich nämlich je nach Währungspaar unterscheiden. Im Anschluss benötigen wir eine Variable für unser Signal. Die ist vom Typ string, damit sie Textketten aufnehmen kann. Wir weisen hier aber noch keinen Wert zu, denn den möchten wir gleich ermitteln. Dazu erstellen wir uns zunächst mit der Funktion MqlRates ein Array, welches die Preisdaten aufnehmen kann. Mittels ArraySetAsSeries sortieren wir dann das Array von der aktuellen Kerze an abwärts. Jetzt nutzen wir CopyRates, um für das aktuelle Währungspaar und die aktuell ausgewählte Zeiteinheit von der Kerze null für drei Kerzen die Preise in unser Preis Array zu kopieren. Und damit wir etwas haben, was uns den aktuellen Spread anzeigt, nutzen wir die Funktion SymbolInfoIneger für das aktuelle Währungspaar auf dem Chart. Und mit diesem Parameter, SYMBOL_SPREAD, alles in Großbuchstaben, ermitteln wir jetzt den aktuellen Spread Wert und weisen ihn der Variable CurrentSpread zu. Jetzt hätte ich gerne noch eine Variable für den Spread Filter. Auch die ist vom Typ string und wird Textketten aufnehmen. Eigentlich könnten wir das Ganze auch so gestalten, dass der Benutzer eingeben darf, wieviel Spread maximal erlaubt ist. Darum erstelle ich hier im Kopfbereich eine sogenannte Input Variable. Die ermöglicht es, im laufenden Betrieb einen Maximalwert anzugeben. Wir vergeben zunächst erstmal den Startwert 15. Aber später kann der Benutzer diesen Wert auch anpassen. Und dann können wir hier unten prüfen, ob der aktuelle Spread Wert den maximal erlaubten Wert übersteigt. Und wenn das der Fall ist, dann setzen wir hier unseren Spread Filter auf: Trading ist nicht erlaubt. Im anderen Fall, wenn der aktuelle Spread Wert kleiner oder gleich ist, als der maximal erlaubte Wert, dann bekommt unser Spread Filter hier den Wert: Trading erlaubt, zugewiesen. Damit wir tatsächlich Positionen sehen, erstellen wir uns hier noch eine einfache Einstiegsregel. Wenn also der Schlusskurs von Kerze eins größer ist, als der Schlusskurs von Kerze zwei, dann weisen wir hier den Begriff buy unserer Signal Variable zu. Andernfalls, wenn der Schlusskurs von Kerze eins kleiner ist, als der Schlusskurs von Kerze zwei, dann möchten wir verkaufen. Also weisen wir den Begriff sell unserem Signal zu. Und unser Filter muss auf Trading erlaubt stehen, damit wir überhaupt eine Positionseröffnung in Erwägung ziehen. Denn nur, wenn unser Signal auf Verkaufen steht und die Funktion PositionsTotal kleiner ist als eins, das bedeutet, wir hätten ein Verkaufssignal und geöffneten Positionen, dann möchten wir einen Sell Trade für zehn Mikrolot eröffnen, wenn unser Spread Filter auf Trading erlaubt steht.
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 71 SIMPE ARROW SYMBOLE
    In diesem Video schauen wir uns einmal an, wie man solche einfachen Symbole hier auf dem Chart anzeigen lassen kann. In MQL5 geht das mit sogenannten Pfeilen. Also lassen Sie uns einmal herausfinden, wie man das in MQL5 programmieren kann. 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 SimpleArrowSymbole, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. In der OnTick Funktion starten wir damit, dass wir den sogenannten Ask Preis berechnen. Das geht mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen SYMBOL_ASK, alles in Großbuchstaben, um den Ask Preis zu berechnen. Und mit NormalizeDouble und _Digits berechnen wir die richtige Anzahl der Nachkommastellen automatisch. Das gleiche wiederholen wir hier noch mal für den Bid Preis. Bis auf den Namen der Variable und den Parameter SYMBOL_BID ist hier alles gleich. Und wenn wir unser Symbol zwischen diesen beiden Preisen zeichnen möchten, dann müssen wir noch den mittleren Preis berechnen. Das geht, indem wir beide Preise addieren und durch Zwei teilen. Danach möchte ich den Zufallsgenerator initialisieren, damit unterschiedliche Objekte gezeichnet werden. Dazu nutze ich den Befehl MathSrand. Der erstellt die Anfangsposition für die Generierung von pseudo zufälligen Ganzzahlen. Und als Parameter übergebe ich hier GetTickCount. Diese Funktion gibt die Anzahl der Millisekunden seit dem Systemstart zurück. Und das hier in Kombination gibt einen eindeutigen Wert. Und danach können wir die Funktion MathRand, also diesmal ohne S, benutzen, um uns einen zufälligen Ganzzahlwert in diesem Bereich hier zu berechnen. Den brauchen wir gleich für die unterschiedlichen Symbole. Solche Symbole werden in MQL5 als Pfeil gezeichnet. Darum nutzen wir hier ObjectCreate für das aktuelle Währungspaar auf dem Chart. Der Name für unser Objekt soll MyObject sein. Und der Typ des Objektes ist OBJ_ARROW. Und wenn man das einmal markiert und die F1 Taste drückt, dann sieht man, dass es hier jede Menge Objekttypen gibt, die man verwenden kann. Wir nutzen diesen Objekttyp und eigentlich steht Arrow für Pfeil. Unsere Pfeile können aber unterschiedliche Formen annehmen. Der nächste Parameter hier steht für das Chart, auf dem Pfeil gezeichnet werden soll. In unserem Fall möchten wir das Ganze hier gerne auf dem Hauptchart sehen. Bei der Verwendung von Oszillatoren, würde man allerdings ein weiteres Fenster unterhalb der Kerzen hier angezeigt bekommen. Auch hier könnte man Objekte zeichnen. Wir benötigen das in diesem Fall aber nicht. Und zeichnen unsere Pfeile auf die Chart ID Null, also auf das Hauptchart. Und zwar für den aktuellen Zeitpunkt. Den ermitteln wir mit der Funktion TimeCurrent. Die gibt uns die letzte bekannte Server Zeit zurück. Das bedeutet immer die Zeit von Kerze null. Und der sogenannte Ankerpunkt für das Zeichnen des Objektes wird der mittlere Preis sein, den wir berechnet haben. Für das Aussehen unseres Objektes müssen wir jetzt noch einen Wert setzen. Dazu nutzen wir ObjectSetInteger auf dem aktuellen Hauptchart null, für das Objekt mit dem Namen MyObject. Und ich möchte hier die Objekteigenschaft ARROWCODE ändern und übergebe hier als Parameter die zufällig generierte Zahl, die wir hier oben erzeugt haben. Damit das Objekt etwas größer gezeichnet wird, kann man mit ObjectSetInteger hier auch die Objekteigenschaft für die Breite, in unserem Fall also die Objektgröße setzen. Ich setze das hier mal auf zwanzig. Und damit bei jeder Preisänderung das Objekt auch an der richtigen Stelle gezeichnet wird, nutzen wir hier ObjectMove, um unser Objekt auf dem Hauptchart für den aktuellen Zeitpunkt an der Stelle zu zeichnen,
    8 min
  • MQL5 TUTORIAL GRUNDLAGEN – 71 SIMPE ARROW SYMBOLE
    In diesem Video schauen wir uns einmal an, wie man solche einfachen Symbole hier auf dem Chart anzeigen lassen kann. In MQL5 geht das mit sogenannten Pfeilen. Also lassen Sie uns einmal herausfinden, wie man das in MQL5 programmieren kann. 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 SimpleArrowSymbole, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. In der OnTick Funktion starten wir damit, dass wir den sogenannten Ask Preis berechnen. Das geht mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen SYMBOL_ASK, alles in Großbuchstaben, um den Ask Preis zu berechnen. Und mit NormalizeDouble und _Digits berechnen wir die richtige Anzahl der Nachkommastellen automatisch. Das gleiche wiederholen wir hier noch mal für den Bid Preis. Bis auf den Namen der Variable und den Parameter SYMBOL_BID ist hier alles gleich. Und wenn wir unser Symbol zwischen diesen beiden Preisen zeichnen möchten, dann müssen wir noch den mittleren Preis berechnen. Das geht, indem wir beide Preise addieren und durch Zwei teilen. Danach möchte ich den Zufallsgenerator initialisieren, damit unterschiedliche Objekte gezeichnet werden. Dazu nutze ich den Befehl MathSrand. Der erstellt die Anfangsposition für die Generierung von pseudo zufälligen Ganzzahlen. Und als Parameter übergebe ich hier GetTickCount. Diese Funktion gibt die Anzahl der Millisekunden seit dem Systemstart zurück. Und das hier in Kombination gibt einen eindeutigen Wert. Und danach können wir die Funktion MathRand, also diesmal ohne S, benutzen, um uns einen zufälligen Ganzzahlwert in diesem Bereich hier zu berechnen. Den brauchen wir gleich für die unterschiedlichen Symbole. Solche Symbole werden in MQL5 als Pfeil gezeichnet. Darum nutzen wir hier ObjectCreate für das aktuelle Währungspaar auf dem Chart. Der Name für unser Objekt soll MyObject sein. Und der Typ des Objektes ist OBJ_ARROW. Und wenn man das einmal markiert und die F1 Taste drückt, dann sieht man, dass es hier jede Menge Objekttypen gibt, die man verwenden kann. Wir nutzen diesen Objekttyp und eigentlich steht Arrow für Pfeil. Unsere Pfeile können aber unterschiedliche Formen annehmen. Der nächste Parameter hier steht für das Chart, auf dem Pfeil gezeichnet werden soll. In unserem Fall möchten wir das Ganze hier gerne auf dem Hauptchart sehen. Bei der Verwendung von Oszillatoren, würde man allerdings ein weiteres Fenster unterhalb der Kerzen hier angezeigt bekommen. Auch hier könnte man Objekte zeichnen. Wir benötigen das in diesem Fall aber nicht. Und zeichnen unsere Pfeile auf die Chart ID Null, also auf das Hauptchart. Und zwar für den aktuellen Zeitpunkt. Den ermitteln wir mit der Funktion TimeCurrent. Die gibt uns die letzte bekannte Server Zeit zurück. Das bedeutet immer die Zeit von Kerze null. Und der sogenannte Ankerpunkt für das Zeichnen des Objektes wird der mittlere Preis sein, den wir berechnet haben. Für das Aussehen unseres Objektes müssen wir jetzt noch einen Wert setzen. Dazu nutzen wir ObjectSetInteger auf dem aktuellen Hauptchart null, für das Objekt mit dem Namen MyObject. Und ich möchte hier die Objekteigenschaft ARROWCODE ändern und übergebe hier als Parameter die zufällig generierte Zahl, die wir hier oben erzeugt haben. Damit das Objekt etwas größer gezeichnet wird, kann man mit ObjectSetInteger hier auch die Objekteigenschaft für die Breite, in unserem Fall also die Objektgröße setzen. Ich setze das hier mal auf zwanzig. Und damit bei jeder Preisänderung das Objekt auch an der richtigen Stelle gezeichnet wird, nutzen wir hier ObjectMove, um unser Objekt auf dem Hauptchart für den aktuellen Zeitpunkt an der Stelle zu zeichnen,
    8 min

About MQL5 Tutorial - Automatisch traden mit Metatrader5

From the publisher's feed

Metatrader5 MQL5 Expert Advisor Tutorial