English Русский 中文 Español 日本語 Português
Video: Als Nächstes tragen Sie den Servernamen, Ihre Kontonummer und das Master-Passwort an.

Video: Als Nächstes tragen Sie den Servernamen, Ihre Kontonummer und das Master-Passwort an.

MetaTrader 5Experten | 9 Juni 2022, 08:56
157 0
Raimund Bauer
Raimund Bauer

Teil 1 - Wie man einen einfachen Expert Advisor erstellt


Wir haben es hier mit einem so genannten Expert Advisor zu tun.  Ein Expert Advisor ist eine automatisierte Anwendung, die innerhalb von MetaTrader eingesetzt werden kann und eigenständig Positionen eröffnen und schließen kann.

In diesem Video lernen wir, wie man einen Expert Advisor in seiner grundlegendsten Form erstellt. Bitte klicken Sie auf die kleine Schaltfläche hier oder drücken Sie F4 im MetaTrader, um das MetaEditor-Fenster zu öffnen. Danach klicken Sie in der Vorlage auf "Datei / Neu / Expert Advisor (Vorlage)", "Weiter" und ich nenne diese Version "SimpleExpertAdvisor". Danach klicken Sie auf "Weiter", "Fortfahren" und "Fertigstellen", und schon sind wir fertig!

Diese Version ist für Menschen lesbar, und wenn wir sie kompilieren, erstellen wir eine lesbare Version für den MetaTrader.  Sie ist hier bereits verfügbar. Öffnen wir also ein neues Chartfenster, und ziehen wir unsere neue Datei auf das Chart. Allerdings fehlt es derzeit noch an Logik, die wir in den folgenden Videos ergänzen werden.


Teil 2 - Was sind Funktionen?


MQL5 verwendet Funktionen, um Dinge zu automatisieren, und wir haben bereits ein paar Funktionen in unserer Expert Advisor-Vorlage. Die Funktion "OnInit" ist die Initialisierungsfunktion des Experten und wird nur einmal ausgeführt, wenn Sie Ihren Expert Advisor auf einem Chart ablegen. Sie hat einen Rückgabewert, so dass Sie prüfen können, ob die Funktion "OnInit" erfolgreich war.

Hier wird einer dieser Werte zurückgegeben, der uns sagt, ob der "init"-Prozess funktioniert hat oder nicht. Wir haben auch eine Funktion namens "OnDeinit", die aufräumt, bevor der Expert Advisor geschlossen wird. Sie gibt nichts zurück, was "void" bedeutet. "void" wird verwendet, wenn etwas keinen Wert zurückgibt.

In diesem Fall ist der Grund sehr einfach: "OnDeinit" ist das letzte, was in unserem Programm ausgeführt wird, und es gibt nichts, zu dem wir zurückkehren können, da das Programm danach geschlossen wird. Es gibt die Funktion "OnTick". Diese Funktion wird immer dann ausgeführt, wenn sich der Preis im Chart ändert. Der größte Teil der Kodierungslogik würde durch die Funktion "OnTick" ausgelöst, und immer wenn sich der Preis in einem Ihrer Charts ändert, wird alles zwischen diesen beiden Klammern ausgeführt. Jetzt können wir den Rest der Vorlage loswerden.

Für unser einfaches Beispiel benötigen wir nur die Funktion "OnTick", die zum Aufruf einer anderen Funktion und zur Anzeige der Ortszeit verwendet wird. Wenn wir etwas in unserem Chart sehen wollen, benutzen wir die Funktion "Comment" (Kommentar). Diese zeigt einen nutzerspezifischen Wert in der oberen linken Ecke des Charts an. Er nimmt sogenannte Parameter in runden Klammern auf, die ein Text wie "Hallo" sein könnten, und schon ist dies ein vollständiger Expert Advisor.

Wir könnten ihn nun kompilieren, auf die Schaltfläche hier klicken, um zum MetaTrader zurückzukehren, und den "SimpleExpertAdvisor" auf den Chart ziehen. Wenn ich zur Bestätigung auf die Schaltfläche "OK" klicke, wird der Text "Hallo" angezeigt, den wir hier eingerichtet haben. Aber die Funktion "Comment" kann noch mehr.

Wir wollten die Ortszeit anzeigen, also sagen wir "Die Ortszeit ist". Mit einem Komma können wir einen weiteren Parameter übergeben, der in unserem Fall "TimeLocal" ist. Wenn wir den Code neu kompilieren, sagt der Expert Advisor "Die Ortszeit ist", und die Ortszeit wird sofort in unserem Chart angezeigt.

In diesem Video haben Sie integrierte Funktionen wie die Funktion "OnTick" kennengelernt, die immer dann aufgerufen wird, wenn sich der Kurs ändert. Sie haben auch gelernt, wie man die Funktion "Comment" verwendet, um einen Text gefolgt von einem berechneten Wert auszugeben. Sie haben zum Beispiel ein paar Zeilen MQL5-Code verwendet, um MetaTrader 5 dazu zu bringen, "The local time is", gefolgt von der berechneten Zeit, direkt auf Ihrem Chart auszugeben.


Teil 3 - Wie man den Strategietester benutzt

In diesem Video wollen wir lernen, wie man den Strategietester verwendet. Dies ist ein Strategietest, der auch als "Backtest" bezeichnet wird. Wir verwenden es, um einen Expert Advisor auf der Grundlage historischer Daten zu handeln und zu sehen, ob er Geld einbringt oder nicht. Lassen Sie uns herausfinden, wie man das macht. Beim letzten Mal haben wir eine einfache Vorlage erstellt, die den Text "Hallo MQL5" ausdruckt. Nun wollen wir einen Strategietest oder Backtest mit diesem einfachen Beispiel durchführen.

Klicken Sie dazu auf "Ansicht/Strategietester" oder drücken Sie die Tastenkombination STRG und R. Nun sollten Sie dieses "Strategietester"-Panel hier sehen. Wir können eine Datei auswählen und beginnen mit dem einfachen Expert Advisor (SimpleExpertAdvisor), den wir beim letzten Mal erstellt haben.

Wir werden das Währungspaar Australischer Dollar vs. Euro verwenden. Kanadischer Dollar (AUDCAD) für 1 Minute und wir wollen einen nutzerdefinierten Zeitraum wählen, in unserem Fall das Jahr 2017. Einer der Vorteile von MetaTrader 5 ist, dass Sie keine historischen Daten mehr herunterladen müssen. Wenn Sie einen Zeitraum wählen, für den Sie keine historischen Daten haben, geschieht dies automatisch.

All dies geschieht im Hintergrund. Diese Einstellung ist für die Qualität. Es heißt OHLC und steht für "Open, High, Low und Close". Wenn Sie mit der Maus über eine Kerze fahren, sehen Sie deren Eröffnungs-, Höchst-, Tiefst- und Schlusskurs.

So sieht das aus. Viele Menschen wissen nicht, dass jeder Tick einer Kerze, die mehr als eine Preisänderung aufweist, simuliert wird. Selbst wenn Sie hier "Jeder Tick" auswählen, würde jede Preisänderung in diesen 24 Stunden mit Ausnahme des Eröffnungs-, Höchst-, Tiefst- und Schlusskurses nach dem Zufallsprinzip berechnet, selbst wenn diese große Kerze hier eine 24-Stunden-/Tageskerze wäre.

Wenn Sie mehr über die Funktionsweise wissen möchten, öffnen Sie einfach die "Hilfe"-Datei und lesen Sie die Anweisungen. Ich verwende keine Vorwärtstests, da ich glaube, niemand kann die Zukunft vorhersagen. Es gibt eine Ausführungseinstellung, die ein langsames Netz simulieren kann, aber ich verwende auch diese nicht.

Es gibt einen Geldbetrag, der sich auf Ihrem Testkonto befindet. Sie können einen beliebigen Betrag in US-Dollar, Euro oder einer anderen beliebigen Währung festlegen. Das ist die Hebelwirkung. Wenn die Hebelwirkung hoch ist, können Sie mit einem kleinen Konto mehr Geld handeln.

Über die Optimierung werden wir in einem späteren Video sprechen. Klicken Sie jetzt einfach auf "Start", und Sie sollten den Text "Hallo MQL5" auf Ihrem Chart sehen. Das ist nicht sehr spannend, also ändern wir es und verwenden die Funktion "TimeLocal".

Kompilieren Sie den Code neu, und wenn wir den Test erneut starten, sehen wir eine Ausgabe für die lokale Zeit, die bei jeder Preisänderung berechnet wird. In diesem Video haben Sie gelernt, wie man den Strategietester benutzt und wie man die lokale Zeit ausgibt - und das mit nur ein paar Zeilen MQL5-Code.

 

Teil 4 - Was sind Datentypen?


In diesem Video werden wir über Datentypen und ihre Bedeutung sprechen. In diesem Strategietest sehen wir, dass die Ortszeit ein bestimmtes Format hat. Wenn Sie etwas berechnen, ist es wichtig, die richtige Art von Daten zu verwenden, also lassen Sie uns herausfinden, wie das geht.

Beginnen Sie, indem Sie auf das kleine Symbol klicken oder F4 drücken. Sie sollten nun den MetaEditor sehen, in dem Sie auf "Datei / Neu / Expert Advisor (Vorlage)" aus der Vorlage klicken, "Weiter", und ich werde diese Datei aufrufen: "SimpleDataTypes", klicken Sie auf "Weiter", "Fortfahren" und "Fertigstellen". Sie können nun alles oberhalb der Funktion "OnTick" und die beiden Kommentarzeilen hier löschen.

Beginnen wir mit der offensichtlichsten Art von Daten, nämlich Text. Wir verwenden den Datentyp "string", um diesen Text einer Text-Variablen namens "Text" zuzuweisen, aber Sie können Text-Variablen nicht für Berechnungen verwenden. Um etwas herauszufinden, muss man die richtige Art von Wert verwenden.

Um beispielsweise den Saldo unseres Kontos zu ermitteln, verwenden wir den Typ "double", der ein Fließkommatyp ist, zusammen mit der Funktion "AccountInfoDouble" und diesem Ausdruck, der in Großbuchstaben geschrieben ist. Dies sollte uns den richtigen Wert liefern, also verwenden wir die Funktion "Comment", um den "Text" gefolgt von dem berechneten Wert anzuzeigen. Klicken wir hier auf die Schaltfläche "Kompilieren" oder drücken wir F7.

Das sollte ohne Probleme funktionieren, und wenn das der Fall ist, können Sie auf das kleine Symbol hier klicken oder F4 drücken, um zum MetaTrader zurückzukehren. Im letzten Video haben wir gelernt, wie man diesen Strategietester verwendet. Klicken wir also auf "Datei/Strategietester", wählen wir die neue Datei "SimpleDataTypes" und starten wir einen neuen Test. Sie sollten nun sehen, dass der Wert 100.000,0 beträgt.

Ändern wir das hier, starten wir einen neuen Test, und dieses Mal sehen Sie die Ziffern hinter dem Punkt, weshalb wir "double" verwenden, wenn wir mit Fließkommazahlen arbeiten. Die Funktion "TimeLocal" kennen Sie bereits aus dem letzten Video. Sie gibt eine Variable vom Typ "datetime" zurück.

Lassen Sie uns eine Ausgabe für diesen Test machen, den Code neu kompilieren, den vorherigen Test beenden und einen neuen starten. Sie sehen, dass die Ausgabe in einem speziellen Format erfolgt. Wir wollen also "datetime" verwenden, wenn wir etwas mit Zeit und Datum benötigen. Sie können den Typ „int“ (Ganzzahl) für ganze Zahlen verwenden.

In diesem Fall erhalten wir die Kontonummer durch Verwendung von "AccountInfoInteger". Wir verwenden diese Konstante für die Kontoanmeldung (ACCOUNT LOGIN). Schauen wir mal, wie das aussieht.

Wenn Sie wollen, dass eine Aussage nur wahr oder falsch ist, verwenden Sie den Typ "bool". Schauen wir uns an, wie die Ausgabe in diesem Fall aussieht: The value is: true. (Der Wert ist: wahr.) Dies sind einige gängige Datentypen. Wenn Sie auf "Hilfe" klicken oder F1 drücken, sollten Sie den MQL5-Referenzartikel über Datentypen finden. Es gibt einige weitere Typen, die Sie verwenden können, und es ist auch möglich, komplexe Datentypen zu verwenden.

Ich würde vorschlagen, kleine Testprogramme wie dieses zu schreiben. In diesem kurzen Video haben Sie gesehen, wie Sie mit ein paar Zeilen selbst geschriebenem MQL5-Code verschiedene Datentypen direkt in Ihr Diagramm einfügen können.


Teil 5 - Wie man Berechnungen durchführt


In diesem Video geht es um einfache Mathematik. Wenn Sie einen Expert Advisor wie diesen für den automatischen Handel verwenden, müssen Sie einige Berechnungen anstellen.

In meinem Fall habe ich zum Beispiel die maximale Anzahl der zulässigen Positionen berechnet, und Sie können sehen, dass auch der Gewinn des Währungspaares berechnet wird. Lasst uns lernen, wie man einige grundlegende Berechnungen durchführt! Klicken Sie dazu auf das kleine Symbol hier oder drücken Sie F4, um Ihr MetaEditor-Fenster zu öffnen.

Klicken Sie dann in der Vorlage auf "Datei/Neu/Expertenberater (Vorlage)", "Weiter", benennen Sie die Datei "SimpleCalculations", klicken Sie auf "Weiter", "Fortfahren" und "Fertigstellen". Jetzt können Sie alles oberhalb der Funktion "OnTick" löschen, und auch die beiden Kommentarzeilen werden entfernt. Zunächst benötigen wir zwei "int"-Variablen: "a" hat den Wert 5 und "b" den Wert 3.

Wir verwenden "Kommentar", um zu zeigen, was "a" plus "b" ergibt. Klicken wir hier auf die Schaltfläche "Kompilieren". Wir haben keine Fehler, also können wir jetzt hier klicken oder F4 drücken, um zum MetaTrader zurückzukehren.

Wenn wir im MetaTrader auf "Ansicht/Strategietester" gehen, wählen wir die neue Datei "SimpleCalculations.ex5" aus, schalten den Visualisierungsmodus ein und starten den Test. Hier ist die Ausgabe: das Ergebnis ist 8, weil 5+3=8, also versuchen wir weiter: "a" - "b", kompilieren neu und starten einen neuen Test. Dieses Mal ist das Ergebnis 2, denn 5-3=2.

Multiplizieren wir die beiden Zahlen miteinander: 5 x 3 = 15, also kompilieren wir neu: Versuchen Sie "a" geteilt durch "b", was meinen Sie? Oh, die Antwort ist 1! Wir haben ganzzahlige Variablen verwendet, also 5/3 = 1, weshalb die Antwort 1 ist.

Wir haben hier also keine Fließkommazahlen, bei denen die meisten Leute durchdrehen, weil die Ergebnisse nicht ihren Erwartungen entsprechen. Verwenden wir "double" als Datentyp, kompilieren wir neu, und das Ergebnis ist nun 1,6666666667, was besser ist.

Was denken Sie, was passiert, wenn Sie "a" zu "a" addieren und mit "b" multiplizieren? "a" ist gleich 5, also ist "a" plus "a" gleich 10. "b" ist gleich 3, also ist 3 mal 10 gleich 30.

Wenn wir alles zusammenzählen, lautet die Antwort: 20! Wenn Sie das ändern wollen, müssen Sie Klammern verwenden, denn das, was in den Klammern steht, wird vor der Multiplikation oder Division berechnet, und unser Ergebnis ist diesmal 30!

Wenn Sie F1 drücken und die MQL5-Referenz öffnen, finden Sie viele weitere mathematische Funktionen. Ich würde vorschlagen, dass Sie kleine Programme wie dieses schreiben, um herauszufinden, wie sie funktionieren, denn Sie werden in Zukunft kompliziertere Berechnungen durchführen, was es noch schwieriger macht, herauszufinden, was funktioniert und warum.

In diesem kurzen Video haben Sie gelernt, wie man sehr einfache mathematische Berechnungen durchführt, und Sie haben es selbst mit ein paar Zeilen MQL5-Code getan.

 

Teil 6 - Wie man Bedingungen mit if prüft


In diesem Video werden wir herausfinden, ob eine bestimmte Bedingung erfüllt ist. Wenn Sie ein automatisiertes Programm wie diesen Expert Advisor verwenden, müssen Sie prüfen, ob etwas wahr oder falsch ist, z. B. ob die Stochastik über oder unter den gepunkteten Linien liegt oder ob der Preis über oder unter dem gleitenden Durchschnitt liegt.

Jetzt werden wir lernen, wie man das macht. Bitte klicken Sie auf das kleine Symbol oder drücken Sie F4, um den MetaEditor zu öffnen. Hier klicken Sie auf "Datei/Neu/ Expert Advisor (Vorlage)" aus der Vorlage, "Weiter", dann "Weiter", "Fortfahren" und "Fertigstellen".

Jetzt können Sie alles oberhalb der Funktion "OnTick" löschen, und auch die beiden Kommentarzeilen können wir entfernen. Wir beginnen mit zwei ganzzahligen Variablen: "a" ist 5, und "b" sollte 3 sein. Wenn "a" größer als 5 ist, möchte ich den Text "a ist größer als 5" sehen; wenn das nicht der Fall ist, kann ich die "else"-Anweisung verwenden, d. h. wenn keine der Bedingungen wahr ist, möchte ich den Text "Bedingungen nicht wahr" sehen. Bitte klicken Sie auf "Kompilieren" oder drücken Sie F7, hier gibt es keine Fehler...

Oh, ich habe eine Warnung bekommen, weil ich die Anweisung "Comment" vergessen habe, aber jetzt ist alles in Ordnung, also klicken Sie auf diese Schaltfläche oder drücken Sie F4, um zum MetaTrader zurückzukehren. Und im MetaTrader klicken wir auf "Ansicht" und dann auf "Strategietester". Sie können auch die Tasten STRG und R drücken. Hier wollen wir die Datei "SimpleIfCondition.ex5" auswählen.

Bitte schalten Sie den Visualisierungsmodus ein und starten Sie einen Test. Jetzt erhalten wir die Meldung "Bedingungen nicht wahr", weil "a" nicht größer als 5 ist. Fügen wir also eine weitere "if"-Anweisung hinzu, um zu prüfen, ob "a" gleich 5 ist. Jetzt kompilieren wir den Code neu, beenden den Test und starten einen neuen.

Dieses Mal wird als Ergebnis "a gleich 5" angezeigt. Was passiert, wenn wir hier eine weitere "if"-Anweisung hinzufügen, um zu prüfen, ob "b" gleich 3 ist? Lassen Sie uns den Code neu kompilieren und einen weiteren Test durchführen.

Jetzt sehen wir nur noch "b ist gleich 3" auf dem Bildschirm. Die Anweisung wird in diesem Fall ignoriert, so dass wir stattdessen zwei "if"-Anweisungen verwenden könnten. In der ersten prüfen wir, ob "a gleich 5" ist, und in der zweiten, ob "b gleich 3" ist.

Das Ergebnis ist "a ist 5 und b ist 3". Wir kompilieren den Code neu, und beim nächsten Test sehen wir "a = 5 und b = 3" auf dem Bildschirm.

Bis jetzt ist alles in Ordnung, aber wenn Sie hier etwas hinzufügen, wie "c = a + b", und auf "Kompilieren" klicken, erhalten Sie zwei Fehler. Das liegt daran, dass Sie immer dann, wenn Sie mehr als eine Zeile hinter einer "if"-Anweisung haben, zwei geschweifte Klammern verwenden müssen. Wir kompilieren den Code neu, und jetzt funktioniert er, und in unserem letzten Test sehen Sie die Meldung "c = 8".

Dies war ein sehr einfaches Beispiel. Es gibt viele andere Möglichkeiten zu prüfen, ob eine Bedingung wahr ist, aber in diesem kurzen Video haben Sie gelernt, wie man die "if"-Anweisung und ein paar Zeilen MQL5-Code verwendet, um zu prüfen, ob eine Bedingung wahr ist.


Teil 7 - Verwendung von Schalter und Gehäuse


In diesem Video erfahren Sie, wie Sie die Arbeitsweise eines Expert Advisors mit Hilfe der Anweisungen "switch" und "case" ändern können. Dies ist ein automatisierter Expert Advisor. Im Moment tut es nicht viel; alles was es sagt ist "Kunde will RSI".

Wir müssen herausfinden, wie wir diesen Wert mit den Befehlen "switch" und "case" ändern können. Klicken Sie auf das kleine Symbol hier oder drücken Sie F4, um dies zu tun. Jetzt sollten Sie das MetaEditor-Fenster sehen.

Klicken Sie in diesem Fenster auf "Datei/Neu/Expertenratgeber (Vorlage)" aus der Vorlage, "Weiter", und ich rufe diese Datei auf: "SimpleSwitchCase", klicken Sie auf "Weiter", "Fortfahren" und "Fertigstellen". Wir können nun alles oberhalb der Funktion "OnTick" und die beiden Kommentare hier loswerden. Wir beginnen mit einer Integer-Variablen namens "choice", die den Wert 5 haben sollte.

Wir verwenden auch eine String-Variable namens "entry" innerhalb der Funktion "OnTick". Wir geben ihm keinen Wert, weil wir den Eintrag auf der Grundlage dessen definieren wollen, was wir hier auswählen. Dies wird mit der Anweisung "switch" erreicht.

Wir wollen verschiedene Optionen für unsere Wahl durchgehen, wenn der Kunde also Option 5 wählt, sagen wir "der Kunde will RSI". Wir verwenden hier ein Pluszeichen und ein Gleichheitszeichen, und ich werde später erklären, warum. Im Moment wollen wir nur eine Pause machen.

Sobald dieser Code ausgeführt wurde, wird die "switch-case-Schleife" durch diese "break"-Anweisung beendet. Fügen wir einen weiteren hinzu. Wenn unsere Wahl auf 4 fällt, sollte der Eintrag lauten: "Der Kunde möchte Bollinger-Bänder".

Auch hier verwenden wir die "break"-Anweisung, um unser "switch- und case-Konstrukt" zu verlassen. Fügen wir eine weitere hinzu. Wenn unsere Variable "choice" den Wert 3 hat, soll unsere "entry"-Anweisung lauten: "Kunde möchte MACD".

Sie könnten hier auch einen Ausdruck wie 1+1 anstelle einer Zahl verwenden, aber die case-Anweisung funktioniert nicht mit Variablen, sodass Sie einen Fehler erhalten würden, wenn Sie das tun. Wir sollten auch eine "Standard"-Option hinzufügen. "Standard" wird ausgeführt, wenn keine der anderen Optionen wahr ist, und in diesem Fall soll die Anweisung "entry" lauten: "Der Kunde weiß es nicht".

Fügen wir hier zwei geschweifte Klammern ein. Dann wollen wir die Funktion "Kommentar" verwenden, um eine Ausgabe für unseren "Eintrag" zu erstellen. Wenn Sie fertig sind, klicken Sie hier auf die Schaltfläche "Kompilieren".

Dies sollte ohne Fehler oder Warnungen funktionieren, und wenn dies der Fall ist, können wir hier auf eine kleine Schaltfläche klicken oder F4 drücken, um zum MetaTrader zurückzukehren. Klicken Sie im MetaTrader auf "View/Strategy Tester" oder drücken Sie CTRL und R. Hier wollen wir die neue Datei "SimpleSwitchCase.ex5" auswählen.

Bitte schalten Sie die Option zur Visualisierung ein und starten Sie einen Test. Hier ist, was wir gemacht haben: "Der Kunde will RSI", also ändern wir "choice" in "3", kompilieren den Code neu und führen einen weiteren Test durch. Dieses Mal erhalten wir "Der Kunde möchte MACD", da "Wahl" 3 dasselbe ist wie "MACD". Ändern wir das in 11, kompilieren wir den Code neu und sehen wir, was passiert.

Diesmal heißt es "der Kunde weiß es nicht", weil 11 nicht auf unserer Liste der Optionen steht, also ist das die Standardeinstellung. Okay, diese "switch"- und "case"-Anweisungen sind einzigartig und es ist möglich, dass Sie die "break"-Anweisung entfernen können. Wir machen das für die ersten beiden "case"-Anweisungen, setzen die "choice" auf 5 zurück, kompilieren den Code neu und führen einen weiteren Test durch.

Dieses Mal erhalten wir die Meldungen "der Kunde will RSI", "der Kunde will Bollinger Bands" und "der Kunde will MACD". Das liegt daran, dass die ersten drei Teile unseres "Switch-Case-Konstrukts" abgearbeitet sind.  Denken Sie also bitte daran, dass unser kleines Expert Advisor-Programm die Schleife nicht verlässt, sondern weiter die nächste Bedingung prüft, wenn Sie den "break"-Operator hier weglassen.

In diesem kurzen Video haben Sie gelernt, wie man die Anweisungen "switch" und "case" verwendet. Sie haben dies mit nur wenigen Zeilen MQL5-Code geschafft.

 

Teil 8 - Wie man die while-Schleife verwendet


In diesem Video lernen wir, wie man die "while"-Anweisung verwendet, um zu warten, bis etwas passiert, zum Beispiel jetzt. Wir haben gewartet, bis der Verzögerungszähler 500.000 erreicht hat. Lernen wir also, wie man die "while"-Schleife in MQL5 verwendet. Klicken Sie dazu auf die kleine Schaltfläche hier oder drücken Sie F4 in Ihrem MetaTrader.

Sie sollten nun das MetaEditor-Fenster sehen. Klicken Sie in diesem Fenster in der Vorlage auf "Datei/Neu/Expert Advisor (Vorlage)", "Weiter" und benennen Sie die Datei "SimpleWhileLoop". Klicken Sie abschließend auf "Weiter", "Fortfahren" und "Fertigstellen". Alles oberhalb der Funktion "OnTick" und die beiden Kommentarzeilen können gelöscht werden. Beginnen wir also mit der Erstellung eines Verzögerungszählers (DelayCounter).

Wir werden eine Integer-Variable verwenden, da wir nur ganze Zahlen benötigen. Wir geben ihm einen Wert von 1 und erhöhen ihn dann in der Funktion "OnTick". Nehmen wir an, unser Mindestwert ist 500.000, und wir wollen nur etwas tun, wenn unser Verzögerungszähler höher ist als dieser Wert.

Jetzt können wir die "while"-Anweisung innerhalb der "OnTick"-Funktion verwenden, um zu prüfen, ob unser Verzögerungszähler immer noch unter unserem Mindestwert liegt. Wenn das der Fall ist, wollen wir zwei Dinge tun. Zunächst wollen wir eine Ausgabe erstellen, die uns den Text "DelayCounter:" gefolgt vom berechneten Wert des aktuellen Verzögerungszählers anzeigt.

Dann wollen wir den Verzögerungszähler um 1 erhöhen, indem wir schreiben "DelayCounter" ist gleich "DelayCounter" plus 1. Öffnen wir den Strategietester, indem wir auf "Ansicht/Strategietester" klicken oder STRG und R drücken. Hier wählen wir die neue Datei "SimpleWhileLoop.ex5".

Bitte schalten Sie den Visualisierungsmodus ein und starten Sie Ihren Test. Jetzt sehen Sie, dass unser Zähler funktioniert, und wenn er 500.000 erreicht, wird er sich bewegen, also ist alles in Ordnung. Die Sache hat jedoch einen Haken: Wenn Sie den Verzögerungszähler außerhalb der while-Schleife erhöhen wollen, können wir den Code immer noch ohne Fehler kompilieren, aber wenn wir den nächsten Test starten, passiert nichts.

Warum funktioniert der gesamte Strategietester nicht mehr? Wenn Sie die Anweisung "while" markieren und F1 drücken, sollten Sie die "Hilfe"-Datei sehen, aber es passiert nichts, weil alles noch eingefroren ist. Das liegt daran, dass wir hier eine Endlosschleife gemacht haben.

Wenn der erste Tick eintrifft und dieser Ausdruck wahr ist, startet die "while"-Anweisung eine Endlosschleife. Wir wollten hier den Verzögerungszähler erhöhen, aber da wir dies außerhalb der "while"-Schleife getan haben, wird dies nie geschehen, so dass dieser Ausdruck immer wahr sein wird. Dies ist einer der Gründe, warum ich "while" nicht sehr oft verwende; die meisten Bedingungen lassen sich mit "if" überprüfen.

Wenn wir den Code neu kompilieren und den Test erneut starten, können wir sehen, dass der Verzögerungszähler funktioniert, weil die "if"-Anweisung nur einmal ausgeführt wird, wenn ein Tick c auftritt. Wenn Sie die "while"-Anweisung verwenden wollen, müssen Sie sicherstellen, dass die Ausführung der "while"-Schleife durch irgendetwas gestoppt wird, sonst läuft die "while"-Schleife ewig. Versuchen wir also den Test noch einmal, und diesmal klappt es wie gewünscht.

In diesem kurzen Video haben Sie gelernt, wie man die "while"-Anweisung verwendet und wie man Schleifen vermeidet, die nie enden. Sie haben es auch selbst mit ein paar Zeilen MQL5-Code gemacht.


Teil 9 - Wie man die for-Schleife verwendet


In diesem Video lernen wir, wie man die "for"-Schleife verwendet, um den Wert eines "Zählers" zu ändern. Dieser zählt, bis er 10.000 erreicht hat, also lasst uns herausfinden, wie man das macht. Um zu beginnen, klicken Sie auf das kleine Symbol hier oder drücken Sie F4 im MetaTrader.

Sie sollten nun das MetaEditor-Fenster sehen. Hier müssen Sie auf klicken: "Datei/Neu/Expertenratgeber (Vorlage)" aus Vorlage, "Weiter", ich nenne diese Datei "SimpleForLoop", "Weiter", "Fortfahren" und "Beenden".

Jetzt können Sie alles oberhalb der Funktion "OnTick" löschen. Wir sollten auch die beiden Kommentarzeilen loswerden. Wir beginnen mit der Erstellung einer "Zähler"-Variablen.

Es handelt sich um eine Integer-Variable (int) namens "counter", deren Anfangswert 1 ist. Wir wollen auch einen Endwert festlegen, der in unserem Fall 10.000 beträgt. Innerhalb der Funktion "OnTick" wollen wir die Schleife "for" verwenden.

Wenn Sie noch nie eine "for"-Schleife gesehen haben, mag dies seltsam aussehen, ist es aber nicht. Hier ist der erste Ausdruck der Startwert, der in unserem Fall der Wert des "Zählers" (counter) 1 ist. Der zweite Ausdruck prüft eine Bedingung.

In unserem Fall wollen wir sehen, ob der Wert des "counter" kleiner ist als der "Endwert". Im dritten Ausdruck machen wir etwas mit dem "counter". In unserem Fall addieren wir 1 dazu, was "counter++" bedeutet.

Wir könnten auch sagen, dass "counter" gleich "counter" plus 1 ist. Was auch immer innerhalb dieser geschweiften Klammern steht, wird ausgeführt, solange diese Bedingung erfüllt ist. In unserem Fall drucken wir einfach den Text aus: "der Zähler So weit, so gut.

Bitte klicken Sie hier auf die Schaltfläche "Kompilieren", und wenn Sie hier unten keine Fehler sehen, können Sie auf das kleine Symbol hier klicken oder F4 drücken, um zum MetaTrader zurückzukehren. Im MetaTrader klicken wir auf "View/Strategy Tester" oder drücken CTRL und R, wählen die neue Datei "SimpleForLoop.ex5", schalten hier die Visualisierung ein und starten einen Test. Und auf der Registerkarte "Journal" sollten Sie sehen können, dass der "Zähler" funktioniert.

Die Zahl steigt, bis sie 9.999 erreicht, was bis jetzt gut ist. Sie können auch einen Countdown erstellen. Tauschen wir also die Werte aus. Der "counter" sollte nun bei 10.000 beginnen und der "endvalue" (Endwert) sollte 1 sein.

Wir beginnen mit dem Wert von "counter" und zählen abwärts, indem wir 1 davon abziehen, solange der "counter" größer ist als der "endvalue". Fügen wir das zusammen, starten wir den Test erneut und fügen wir diesmal einen Countdown hinzu. Nun, diese endet mit "Zähler = 2", weil wir in unserem zweiten Ausdruck geprüft haben, ob "Endwert" größer als "Endwert" ist.

Wir könnten auch sagen "größer oder gleich", also kompilieren wir neu. Der letzte Wert sollte dieses Mal 1 sein, und das ist er auch. Sie könnten auch die "for"-Schleife verwenden, um den "Zähler" um andere Zahlen zu erhöhen oder zu verringern.

Wählen wir 10. Eine letzte Zusammenstellung, und dieses Mal können Sie sehen, dass unser Countdown funktioniert und wir eine Schrittweite von 10 haben.

In diesem kurzen Video haben Sie gelernt, wie man die "for"-Schleife zum Zählen und Erhöhen oder Verringern von "counter"-Werten verwendet, und Sie haben es selbst mit ein paar Zeilen MQL5-Code kodiert.


Teil 10 - Wie man eine einfache Funktion programmiert


In diesem Video werden wir MQL5 verwenden, um eine nutzerdefinierte Funktion zu erstellen, die einen Zählerwert jedes Mal verdoppelt, wenn sich der Preis ändert. Klicken Sie dazu auf die kleine Schaltfläche hier im MetaTrader oder drücken Sie F4 auf Ihrer Tastatur. Sie sollten nun das MetaEditor-Fenster sehen. Klicken Sie in der Vorlage auf "Datei/Neu/Expertenratgeber (Vorlage)", "Weiter", und ich rufe diese Datei auf: "SimpleFunction", klicken Sie auf "Weiter", "Fortfahren" und "Fertigstellen".

Sie können nun alles oberhalb der Funktion "OnTick" und die beiden Kommentarzeilen löschen. Wir beginnen damit, eine statische Variable für unseren "Zähler" zu erstellen. "Statisch" ist ein Wort, das Sie vielleicht noch nie gesehen haben. In diesem Fall verwenden wir "static", um eine lokale Variable zu erstellen, die nur in unserer Funktion existiert.

Wir wollen die Variable an eine andere Funktion übergeben, die "DoubleTheValue" (Double The Value) heißen wird, aber sie existiert noch nicht, also müssen wir sie erstellen. Innerhalb der runden Klammern übergeben wir den Wert unseres aktuellen "Zählers".  Und wir wollen die Funktion Kommentar verwenden, um den Zählerstand auszugeben.

Die Funktion DoubleTheValue muss noch erstellt werden. Um eine nutzerdefinierte Funktion zu erstellen, müssen Sie zunächst festlegen, was die Funktion zurückgeben soll. In unserem Fall wird die Funktion einen Integer-Wert (int) zurückgeben.

Dies ist der Name der nutzerdefinierten Funktion, die ich "DoubleTheValue" nenne, und dies ist, was die Funktion als Parameter annehmen wird. Wir übergeben den "Zähler", der eine ganze Zahl (int) ist. Ich nenne ihn in der nutzerdefinierten Funktion "CounterValue", aber Sie müssen nicht denselben Namen verwenden.

Unsere Funktion benötigt zwei geschweifte Klammern, und wenn ich versuche, sie diesmal zu kompilieren, erhalten wir einen weiteren Fehler, weil unsere Funktion nichts zurückgeben wird. Verdoppeln wir also zunächst den übergebenen Wert, den wir "CounterValue" genannt haben. Dazu nehmen wir "CounterValue" und multiplizieren ihn mit 2.

Das Ergebnis wird in einer neuen Variablen namens "DoubleValue" gespeichert, und wir können den Wert mit dem Operator "return" an das aufrufende Programm zurücksenden. Dies geschieht durch die Eingabe von "return DoubleValue;". Kompilieren wir also den Code noch einmal, um sicherzustellen, dass keine Fehler vorliegen.

Klicken Sie im MetaTrader auf "Ansicht/Strategietester" oder drücken Sie STRG+R, wählen Sie die neue Datei "SimpleFunction.ex5" aus, aktivieren Sie das Feld "Visualisierung" und führen Sie einen Test durch. Sie sollten nun sehen, dass sich der Zählerwert bei jedem neuen Tick verdoppelt, so dass unsere nutzerdefinierte Funktion immer dann aufgerufen wird, wenn sich der Preis ändert. Dies war ein sehr einfaches Beispiel, weil wir nur einen Wert übergeben und eine Operation durchgeführt haben.

Mit der gleichen Logik lassen sich aber auch kompliziertere Dinge erledigen. Sie könnten zum Beispiel alle offenen Positionen durchgehen, den Gewinn für ein Währungspaar berechnen und den Wert mit dem Operator "return" an die Hauptfunktion zurückgeben.

In diesem kurzen Video haben Sie gelernt, wie Sie eine nutzerdefinierte Funktion in MQL5 erstellen und diese mit wenigen Zeilen Code selbst programmieren können.


Schlussfolgerung

MQL5 muss nicht kompliziert sein. Ich hoffe, dieser erste Teil wird Ihnen den Einstieg erleichtern und Ihnen ein gutes Verständnis dafür vermitteln, wie einfach automatisierter Handel sein kann. Natürlich gibt es noch viel mehr Inhalte, und Sie müssen Ihr eigenes System um fortgeschrittenere Teile erweitern, aber jetzt sollten Sie wissen, ob die MQL5-Programmierung etwas für Sie ist...


Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/10954

Lernen Sie, wie man ein Handelssystem mit dem OBV entwickelt Lernen Sie, wie man ein Handelssystem mit dem OBV entwickelt
Dies ist ein neuer Artikel, der unsere Serie für Anfänger fortsetzt, in der es darum geht, wie man ein Handelssystem basierend auf einigen der beliebten Indikatoren entwirft. Wir werden einen neuen Indikator kennenlernen, nämlich das On Balance Volume (OBV), und wir werden lernen, wie wir ihn verwenden und ein darauf basierendes Handelssystem entwerfen können.
Einen handelnden Expert Advisor von Grund auf neu entwickeln (Teil 7): Hinzufügen des Volumens zum Preis (I) Einen handelnden Expert Advisor von Grund auf neu entwickeln (Teil 7): Hinzufügen des Volumens zum Preis (I)
Dies ist einer der stärksten Indikatoren, die es derzeit gibt. Jeder, der versucht, ein gewisses Maß an Selbstvertrauen zu haben, muss diesen Indikator auf seinem Chart haben. Am häufigsten wird der Indikator von denjenigen verwendet, die beim Handel das „Tape Reading” bevorzugen. Dieser Indikator kann auch von denjenigen verwendet werden, die beim Handel nur die Preisbewegungen (Price Action) verwenden.
Video: Wie man MetaTrader 5 und MQL5 für den einfachen automatisierten Handel einrichtet Video: Wie man MetaTrader 5 und MQL5 für den einfachen automatisierten Handel einrichtet
In diesem kleinen Videokurs lernen Sie, wie Sie den MetaTrader 5 für den automatisierten Handel herunterladen, installieren und einrichten. Sie erfahren auch, wie Sie die Chart-Einstellungen und die Optionen für den automatischen Handel anpassen können. Sie werden Ihren ersten Backtest durchführen und am Ende dieses Kurses werden Sie wissen, wie Sie einen Expert Advisor importieren, der automatisch 24/7 handeln kann, ohne dass Sie vor Ihrem Bildschirm sitzen müssen.
DoEasy. Steuerung (Teil 1): Erste Schritte DoEasy. Steuerung (Teil 1): Erste Schritte
Dieser Artikel beginnt mit einem ausführlichen Thema zum Erstellen von Steuerelementen im Windows Forms-Stil mit MQL5. Mein erstes Interessensgebiet ist das Erstellen der Panel-Klasse. Schon jetzt wird es schwierig, die Dinge ohne Kontrolle zu managen. Daher werde ich alle möglichen Steuerelemente im Windows Forms-Stil erstellen.