Programmier-Tutorial - Seite 5

 

Range Breakout EA mql5 Programmierung | Teil 4/4


Range Breakout EA mql5 Programmierung | Teil 4/4

Toby freut sich, Ihnen mitteilen zu können, dass wir heute unseren Breakout Expert Advisor (EA) für MetaTrader 5 abschließen werden. Dieses Video markiert den letzten Teil unserer umfassenden Serie über den Breakout EA. Wenn Sie noch keine Gelegenheit hatten, die vorherigen Videos anzusehen, werde ich in der Beschreibung Links bereitstellen, damit Sie sich informieren können.

In den vorherigen Abschnitten haben wir wichtige Aspekte wie Range-Berechnung, Kauf- und Verkaufs-Breakout-Checks und Positionsschließungslogik behandelt. In diesem abschließenden Video möchten wir nun einige weitere Funktionen zu unserem EA hinzufügen. Insbesondere werden wir eine Stop-Loss- und Take-Profit-Funktionalität basierend auf einem Prozentsatz der Spanne integrieren. Darüber hinaus werden wir einen Wochentagsfilter einführen und einen Breakout-Modus implementieren, der es Benutzern ermöglicht, zwischen einem oder zwei Breakouts pro Bereich zu wechseln.

Lassen Sie uns direkt in den Codierungsprozess eintauchen. Bisher ist dies der Code, den wir entwickelt haben. Unsere erste Aufgabe besteht darin, Eingaben für die Stop-Loss- und Take-Profit-Prozentsätze einzubeziehen. Wir werden sie als Ganzzahlen definieren, da sie in Prozentsätzen dargestellt werden. Setzen wir die Standard-Stop-Loss-Eingabe auf 150 und die Take-Profit-Eingabe auf 200. Wir werden auch die Kommentare aktualisieren, um diese Änderungen widerzuspiegeln. Um sicherzustellen, dass der Benutzer gültige Eingaben macht, müssen wir Eingabeprüfungen durchführen. Wir werden eine zusätzliche if-Anweisung in der On-Init-Funktion hinzufügen, um die Stop-Loss- und Take-Profit-Eingaben zu validieren. Wenn die Stop-Loss-Eingabe unter Null oder über 1000 liegt, wird eine Fehlermeldung angezeigt. Der gleiche Validierungsprozess gilt für die Take-Profit-Eingabe. Diese Prüfungen tragen dazu bei, den EA vor fehlerhaften Eingaben zu schützen.

Lassen Sie uns nun die Stop-Loss- und Take-Profit-Werte für jede Position berechnen. Bei Kaufpositionen wird der Stop-Loss als Prozentsatz der Spanne unter dem aktuellen Preis berechnet. Wir verwenden den Geldkurs und multiplizieren ihn mit dem eingegebenen Stop-Loss-Wert dividiert durch 100. Um einen normalisierten Preis sicherzustellen, wenden wir die Funktion „NormalizeDouble“ an. Ebenso wird der Stop-Loss für Verkaufspositionen als Prozentsatz der Spanne über dem aktuellen Preis berechnet. Wir verwenden den Briefkurs und addieren dazu den berechneten Stop-Loss-Wert. Dadurch wird das geeignete Niveau für den Stop-Loss bestimmt.

Für die Take-Profit-Berechnung folgen wir der gleichen Logik. Bei Kaufpositionen liegt der Take-Profit in der Spanne über dem aktuellen Preis, während er bei Verkaufspositionen in der Spanne unter dem aktuellen Preis liegt. Nachdem wir die Stop-Loss- und Take-Profit-Werte berechnet haben, werden wir sie in die Calls für offene Positionen einbeziehen. Anstatt einen statischen Wert von Null zu verwenden, ersetzen wir ihn durch die berechneten Stop-Loss- und Take-Profit-Werte. Diese Anpassung stellt sicher, dass der EA die Stop-Loss- und Take-Profit-Werte für jede Position genau festlegt.

Um Flexibilität zu bieten, werden wir die Möglichkeit einführen, die Stop-Loss- und Take-Profit-Funktionalität zu deaktivieren. Wenn der Benutzer für eine der Eingaben Null eingibt, zeigt dies an, dass er diese Funktion deaktivieren möchte. Wir werden if-Anweisungen hinzufügen, um diese Bedingungen zu überprüfen und die Berechnung entsprechend anzupassen. Kommen wir nun zur optionalen Schließzeitfunktion. Durch Eingabe von -1 als Schließzeiteingabe schließt der EA Positionen nur auf der Grundlage der Stop-Loss- und Take-Profit-Niveaus. Mit dieser Änderung können Benutzer wählen, ob sie eine bestimmte Zeit für die Schließung der Position einbeziehen oder sich ausschließlich auf die Stop-Loss- und Take-Profit-Parameter verlassen möchten.

Um dies umzusetzen, werden wir die Schließzeitprüfung in der On-Tick-Funktion aktualisieren. Wenn die Schließzeit kleiner als Null ist, was darauf hinweist, dass sie ausgeschaltet ist, überspringen wir die zeitbasierte Prüfung der Positionsschließung und verlassen uns ausschließlich auf die Stop-Loss- und Take-Profit-Bedingungen. Darüber hinaus werden wir Anpassungen an der Bereichsvisualisierung in der Funktion „Objekt zeichnen“ vornehmen. Wenn keine Schlusszeit festgelegt ist, erstrecken sich die Range-Linien bis zur aktuellen Kerze und zeigen an, dass der Breakout-Modus aktiv ist, bis die Stop-Loss- oder Take-Profit-Niveaus erreicht sind. Wenn andererseits eine Schlusszeit festgelegt ist, erstrecken sich die Bereichslinien nur bis zu dieser bestimmten Kerze, was bedeutet, dass der Ausbruchsmodus bis zur angegebenen Zeit aktiv ist.

Um die Vielseitigkeit des EA zu erhöhen, werden wir einen Wochentagsfilter einführen. Mit diesem Filter können Benutzer die Tage angeben, an denen der EA aktiv sein soll. Wir werden einen Eingabeparameter für den Wochentagsfilter hinzufügen, bei dem der Benutzer mehrere Tage aus einer vordefinierten Liste auswählen kann. Standardmäßig werden alle Wochentage ausgewählt. Um den Wochentagsfilter zu implementieren, ändern wir die On-Tick-Funktion. Wir werden eine if-Anweisung einführen, um zu prüfen, ob der aktuelle Tag im ausgewählten Filter des Benutzers enthalten ist. Wenn der Tag nicht enthalten ist, überspringt der EA die Positionseröffnungslogik und fährt mit dem nächsten Tick fort.

Schließlich werden wir die Option implementieren, zwischen einem oder zwei Ausbrüchen pro Bereich zu wechseln. Derzeit eröffnet der EA eine Position pro Range-Breakout. Einige Händler bevorzugen jedoch möglicherweise die Flexibilität, zwei Positionen für stärkere Ausbrüche zu eröffnen. Um dies zu berücksichtigen, werden wir einen Eingabeparameter einführen, der es dem Benutzer ermöglicht, entweder einen oder zwei Ausbrüche pro Bereich auszuwählen.

Um diese Funktion zu implementieren, werden wir die Positionseröffnungslogik anpassen. Wenn der Benutzer zwei Ausbrüche pro Bereich auswählt, eröffnet der EA eine zusätzliche Position in der entgegengesetzten Richtung des ursprünglichen Ausbruchs. Auf diese Weise können sowohl ein bullischer als auch ein bärischer Ausbruch innerhalb derselben Spanne erfasst werden. Durch die Implementierung all dieser neuen Funktionen wird unser Breakout-Expertenberater Händlern erweiterte Funktionalität und Flexibilität bieten. Die Stop-Loss- und Take-Profit-Funktionalität basierend auf einem Prozentsatz der Spanne hilft dabei, Risiken zu verwalten und Gewinne zu erzielen. Mit dem Wochentagsfilter können Benutzer die aktiven Handelstage angeben, während der Breakout-Modus je nach Handelsstrategie auf einen oder zwei Breakouts pro Bereich zugeschnitten werden kann.

Wir hoffen, dass Sie diese umfassende Serie zum Breakout Expert Advisor hilfreich und informativ fanden. Wenn Sie Fragen haben oder weitere Hilfe benötigen, zögern Sie bitte nicht, uns zu kontaktieren. Viel Spaß beim Handeln!

 

Bollinger-Bänder EA MT5-Programmierung



Bollinger-Bänder EA MT5-Programmierung

In diesem Video stellt Toby einen Schritt-für-Schritt-Prozess zum Erstellen eines individuellen Expertenberaters für ein Bowling-Event auf Twitter vor. Er erklärt zunächst die Strategie: Verkaufen, wenn eine Kerze über dem oberen Bollinger-Band öffnet, Setzen von Stop-Loss- und Take-Profit-Niveaus und Ausstieg aus dem Handel, wenn die Mittellinie des Bollinger-Bands überschritten wird. Die gleiche Logik gilt für den Kauf.

Toby wechselt dann zum MetaEditor, wo er anhand einer Vorlage einen neuen Expert Advisor erstellt. Er bereinigt die Vorlage und fügt Eingabeparameter für den EA hinzu, wie z. B. magische Zahl, Losgröße, Periode, Abweichung, Stop-Loss und Take-Profit. Er legt Standardwerte für diese Parameter fest und kompiliert den Code.

Als nächstes definiert Toby globale Variablen für den EA, einschließlich des Handles des Bollinger-Band-Indikators und Puffer für obere, mittlere und untere Bänder. Er erstellt auch Variablen für den aktuellen Tick und Trade.

Weiter zur OnInit-Funktion prüft Toby, ob die Benutzereingaben gültig sind. Wenn eine der Eingaben ungültig ist, zeigt er eine Fehlermeldung an und kehrt zurück. Er legt die magische Zahl für das Handelsobjekt fest und erstellt den Indikatorgriff für den Bollinger-Band-Indikator. Wenn die Handle-Erstellung fehlschlägt, zeigt er eine Fehlermeldung an und kehrt zurück. Anschließend legt er die Puffer als Serie fest und kompiliert den Code.

In der OnTick-Funktion prüft Toby mithilfe einer benutzerdefinierten Funktion, ob der aktuelle Tick ein Bar-Open-Tick ist. Wenn es kein Bar-Open-Tick ist, kehrt er zurück. Handelt es sich um einen Bar-Open-Tick, ruft er den aktuellen Tick mit der SymbolInfoTick-Funktion ab und speichert ihn in der Variable currentTick. Anschließend ruft er mithilfe der CopyBuffer-Funktion die neuesten Indikatorwerte ab und speichert sie in den entsprechenden Puffern. Wenn die Anzahl der kopierten Werte nicht 3 beträgt, was auf einen Fehler hinweist, zeigt er eine Fehlermeldung an und kehrt zurück.

Zu diesem Zeitpunkt hat Toby die ersten Schritte zur Codierung des Fachberaters abgeschlossen. Er kompiliert den Code und verwendet einen visuellen Backtest in MetaTrader, um die Indikatorwerte zu überprüfen und sicherzustellen, dass der Code ordnungsgemäß funktioniert.

Als nächstes müssen wir die Logik zur Generierung von Handelssignalen basierend auf der Bollinger-Bands-Strategie implementieren. Wir beginnen damit, zu prüfen, ob sich eine Kerze über dem oberen Band öffnet, was ein Verkaufssignal anzeigt. Wenn diese Bedingung erfüllt ist, führen wir einen Verkaufshandel mit einem Stop-Loss und einer Gewinnmitnahme aus. Ebenso prüfen wir, ob sich eine Kerze unterhalb des unteren Bandes für ein Kaufsignal öffnet, und führen einen Kaufhandel mit denselben Ausstiegsbedingungen aus.

Hier ist die Erklärung des Codes:

  • Wir prüfen zunächst mit der Funktion isNewBar(), ob der aktuelle Tick ein Bar-Open-Tick ist. Wenn es „false“ zurückgibt, überspringen wir die Generierung des Handelssignals für den aktuellen Tick.

  • Anschließend rufen wir die neuesten Indikatorwerte ab: UpperBand, BaseLine und LowerBand aus den jeweiligen Puffern.

  • Als nächstes prüfen wir, ob der Eröffnungspreis der vorherigen Kerze über dem oberen Band liegt (open[1] > UpperBand). Wenn diese Bedingung erfüllt ist, generieren wir ein Verkaufssignal, indem wir mit der Sell()-Methode des Handelsobjekts einen Verkaufshandel eröffnen. Wir legen die Losgröße, den Stop-Loss und die Gewinnmitnahmen mithilfe der entsprechenden Methoden fest.

  • Ebenso prüfen wir, ob der Eröffnungspreis der vorherigen Kerze unter dem unteren Band liegt (open[1] <lowerBand). Wenn dies zutrifft, generieren wir ein Kaufsignal, indem wir mithilfe der Buy()-Methode des Handelsobjekts einen Kaufhandel eröffnen. Auch hier legen wir die Losgröße, den Stop-Loss und die Gewinnmitnahmen fest.

  • Wenn es schließlich einen offenen Handel gibt, prüfen wir, ob der Schlusskurs der aktuellen Kerze die Mittellinie (Basislinie) kreuzt. Wenn diese Bedingung erfüllt ist, schließen wir den Handel mithilfe der Close()-Methode des Handelsobjekts.

Denken Sie daran, den Code zu kompilieren und in MetaTrader zu testen, um sicherzustellen, dass er wie erwartet funktioniert.

Im angegebenen Code werden mehrere Aufgaben ausgeführt. Hier finden Sie eine detaillierte Erklärung jedes Schritts:

  1. Variablen initialisieren:

    • Setzen Sie die Anzahl der Kauf- und Verkaufspositionen auf Null.
    • Setzt die aktuelle Zelle auf Null.
  2. Offene Positionen zählen:

    • Durchlaufen Sie alle derzeit offenen Positionen.
    • Holen Sie sich das Ticket für jede Position und prüfen Sie, ob der Vorgang erfolgreich ist.
    • Bei Erfolg erhalten Sie die magische Zahl der Position.
    • Wenn die magische Zahl mit der eingegebenen magischen Zahl übereinstimmt, erhöhen Sie den entsprechenden Zähler für Kauf- oder Verkaufspositionen.
  3. Prüfen Sie, ob eine neue Position eröffnet werden kann:

    • Überprüfen Sie, ob keine offenen Kaufpositionen vorhanden sind.
    • Überprüfen Sie, ob der aktuelle Preis unter dem unteren Puffer der Bollinger-Bänder liegt oder diesem entspricht.
    • Überprüfen Sie, ob die Öffnungszeit für die Kaufposition von der Öffnungszeit des aktuellen Balkens abweicht.
  4. Berechnen Sie Stop-Loss und Take-Profit:

    • Berechnen Sie den Stop-Loss, indem Sie den eingegebenen Stop-Loss (in Punkten) vom aktuellen Preis subtrahieren.
    • Berechnen Sie den Take-Profit, indem Sie den Input-Take-Profit (in Punkten) zum aktuellen Preis addieren.
    • Wenn der eingegebene Take-Profit Null ist, setzen Sie die Take-Profit-Variable auf Null.
  5. Stop-Loss normalisieren und Gewinn mitnehmen:

    • Definieren Sie eine Funktion zur Normalisierung des Stop-Loss und der Gewinnmitnahme basierend auf der Tick-Größe.
    • Ermitteln Sie die Tick-Größe für das aktuelle Symbol.
    • Normalisieren Sie die Stop-Loss- und Take-Profit-Werte, indem Sie sie durch die Tick-Größe dividieren.
  6. Eröffnen Sie eine neue Kaufposition:

    • Verwenden Sie das Handelsobjekt, um eine Kaufposition mit den angegebenen Parametern zu eröffnen, einschließlich des normalisierten Stop-Loss und Take-Profit.
  7. Überprüfen Sie, ob sich das obere Band kreuzt, um eine Verkaufsposition zu eröffnen:

    • Überprüfen Sie, ob keine offenen Verkaufspositionen vorhanden sind.
    • Überprüfen Sie, ob der aktuelle Preis über oder gleich dem oberen Puffer der Bollinger-Bänder liegt.
    • Überprüfen Sie, ob die Öffnungszeit für die Verkaufsposition von der Öffnungszeit des aktuellen Balkens abweicht.
    • Berechnen Sie den Stop-Loss und die Gewinnmitnahme für die Verkaufsposition anhand des aktuellen Geldkurses.
    • Normalisieren Sie die Stop-Loss- und Take-Profit-Werte.
    • Eröffnen Sie eine Verkaufsposition mit den angegebenen Parametern, einschließlich des normalisierten Stop-Loss und Take-Profit.
  8. Schließen Sie Positionen, wenn die Mittellinie der Bollinger-Bänder überschritten wird:

    • Zählen Sie die offenen Kauf- und Verkaufspositionen.
    • Wenn die Anzahl der Kaufpositionen größer als Null ist und der aktuelle Geldkurs über dem oberen Puffer liegt, werden alle Kaufpositionen geschlossen.
    • Wenn die Anzahl der Verkaufspositionen größer als Null ist und der aktuelle Briefkurs unter oder gleich dem unteren Puffer liegt, werden alle Verkaufspositionen geschlossen.
  9. Definieren Sie die Funktion zum Schließen von Positionen:

    • Kopieren Sie den vorhandenen Code zum Zählen offener Positionen und ändern Sie ihn, um Positionen basierend auf dem Eingabeparameter zu schließen (0 für alle Positionen, 1 für Kaufpositionen, 2 für Verkaufspositionen).

Der Code führt verschiedene Prüfungen und Berechnungen durch, um offene Positionen zu zählen und zu verwalten, neue Positionen zu eröffnen und Positionen basierend auf bestimmten Bedingungen zu schließen.

 

So erstellen Sie ein grafisches Panel in mql5 | Teil 1/2


So erstellen Sie ein grafisches Panel in mql5 | Teil 1/2

Toby zeigt, wie man in MQL5 ein einfaches grafisches Panel zur Anzeige von Informationen erstellt und eine Schaltfläche hinzufügt, um die Hintergrundfarbe des Diagramms zu ändern. Er erwähnt, dass dieses Panel für jeden Fachberater erstellt werden kann, er wird jedoch den Zeitbereichs-Breakout-EA als Beispiel verwenden. Toby gibt an, dass das Videothema von einem Benutzer in den Kommentaren angefordert wurde, und fordert die Zuschauer auf, Themen für zukünftige Videos vorzuschlagen.

Toby öffnet den Meta-Editor und lädt die Datei für den Zeitbereichs-Breakout-EA. Er speichert es als neuen Expertenberater mit dem Namen „Time Range EA Panel“ und stellt es zusammen. Er erklärt, dass er das Panel als separate Klasse in einer Include-Datei schreiben wird, damit es in jedem Expert Advisor einfach verwendet werden kann. Toby erstellt eine neue Include-Datei mit dem Namen „Grafikpanel“ und definiert die Eingaben für Panelgröße, Schriftgröße und Schriftfarbe.

Er bindet die Datei „dialog.mqh“ aus dem Controls-Ordner ein, die es ihm ermöglicht, die Funktionen dieser Klasse zu verwenden. Toby definiert eine Klasse namens „CGraphicalPanel“, die von der Klasse „CAppDialog“ erbt. Er fügt einen privaten Abschnitt für die Methoden der Klasse und einen öffentlichen Abschnitt für den Konstruktor, Destruktor, die Initialisierungsfunktion und den Diagrammereignishandler hinzu. Er enthält auch einen Kommentarbereich für die Klassenmethoden.

Als nächstes schreibt Toby den Hauptteil der Klassenmethoden nach der Klassendefinition. Er gibt an, dass die Methoden zur Klasse gehören und schreibt den Konstruktor, Destruktor, die Initialisierungsfunktion und den Diagrammereignishandler. Er fügt Kommentare hinzu, um den Zweck jeder Methode zu beschreiben. Toby kompiliert den Code, um ihn auf Fehler oder Warnungen zu prüfen.

Toby implementiert die Funktion „Panel erstellen“, die mithilfe der CFDialog-Klasse ein Dialogfenster erstellt. Er legt den Namen, das Unterfenster, die Position und die Größe des Panels basierend auf den Eingabeparametern fest. Wenn die Panelerstellung fehlschlägt, gibt er eine Meldung aus und gibt „false“ zurück. Er fügt außerdem eine Diagrammaktualisierungsfunktion hinzu, um das Diagramm zu aktualisieren. Toby kompiliert den Code erneut, um sicherzustellen, dass er fehlerfrei ist.

In die Expert Advisor-Datei fügt Toby die Include-Datei für das grafische Panel ein und erstellt ein Objekt der Panel-Klasse namens „panel“ im Abschnitt mit den globalen Variablen. Er initialisiert das Panel in der Funktion onInit und fügt einen Diagrammereignishandler hinzu, um die Diagrammereignisse an das Panel zu übergeben. Toby schreibt den Hauptteil des Diagrammereignishandlers und ruft die Diagrammereignisfunktion des Panels mit den entsprechenden Parametern auf.

Schließlich fügt Toby der onDeinit-Funktion eine Funktion zum Zerstören des Panels hinzu, die das Panel zerstört und den Grund angibt. Er kompiliert den Code erneut und testet ihn im MetaTrader. Toby demonstriert das Ziehen und Ablegen des Expertenberaters auf dem Diagramm und zeigt die Funktionalität des Panels. Außerdem schließt er den Fachberater über die Schaltfläche des Panels.

Hey, ich bin Toby und heute zeige ich Ihnen, wie Sie ein grafisches Panel in MQL5 erstellen. Dies ist eigentlich der zweite Teil des Tutorials. Im ersten Teil haben wir auf der linken Seite ein einfaches Panel erstellt. Falls Sie es verpasst haben, finden Sie den Link in der Beschreibung. Im heutigen Video fügen wir dem Bedienfeld einige Beschriftungen und eine Schaltfläche hinzu. In diesem Beispiel verwenden wir den Zeitbereichs-Breakout-EA. Wenn Sie lernen möchten, wie man diesen Fachberater programmiert, habe ich auf meinem Kanal eine Programmierreihe. Den Link zum ersten Teil finden Sie auch in der Beschreibung.

Wechseln wir zunächst zum MQL5-Editor und beginnen mit dem Codieren. Wir haben hier unsere grafische Panel-Include-Datei und auch den Zeitbereichs-Breakout-EA, den wir geändert haben, um das Panel anzuzeigen. Gehen wir zur Include-Datei und überprüfen die Eingabewerte des Benutzers. Wir erstellen eine Methode namens „Eingaben prüfen“ im Abschnitt „Private Methode“ in unserer Klasse. Nach der OnInit-Funktion rufen wir diese Methode auf. Wenn die Methode „false“ zurückgibt, geben wir auch „false“ von der OnInit-Funktion zurück. Auf diese Weise werden wir nicht fortfahren, wenn die Eingaben ungültig sind. Lassen Sie uns kompilieren und weitermachen.

Beginnen wir nun mit dem Hinzufügen von Beschriftungen zum Bedienfeld. Wir müssen die notwendigen Klassendateien für Beschriftungen und Schaltflächen einbinden. Wir gehen zum Abschnitt „Include“ und fügen „controls/label.mqh“ für Beschriftungen und „controls/button.mqh“ für Schaltflächen ein. Danach definieren wir unsere Label-Variablen. Wir werden Beschriftungen für Eingaben, magische Zahl, Lose, Startzeit, Dauer und Schließzeit haben. Lassen Sie uns kompilieren und weitermachen.

In der Funktion „createPanel“ fügen wir die Beschriftungen zum Panel hinzu. Wir erstellen die Eingabebezeichnung mithilfe der Variablen „M_L_Input“. Wir legen den Text, die Farbe und die Schriftgröße für das Etikett fest. Anschließend bringen wir das Etikett an der Platte an. Wir werden diesen Vorgang auch für die anderen Etiketten wiederholen. Sobald wir alle Beschriftungen hinzugefügt haben, kompilieren und überprüfen wir das Panel auf der linken Seite. Möglicherweise müssen wir die Positionen der Beschriftungen anpassen, um eine bessere Ausrichtung zu erreichen. Lassen Sie uns kompilieren und überprüfen.

Fügen wir nun die Schaltfläche zum Bedienfeld hinzu. Wir definieren eine Variable „M_B_ChangeColor“ vom Typ „CButton“. Wir legen die Position, den Text, die Textfarbe, die Hintergrundfarbe und die Schriftgröße für die Schaltfläche fest. Zum Schluss fügen wir die Schaltfläche zum Panel hinzu. Nach dem Kompilieren sehen wir die Schaltfläche auf dem Panel. Zu diesem Zeitpunkt verfügt die Schaltfläche über keine Funktionalität, wir werden diese jedoch später hinzufügen.

Als nächstes ändern wir die Hintergrundfarbe und den Schriftnamen des Panels. Dazu binden wir die Datei „Defiance.mqh“ ein und definieren neue Werte für die Standardeinstellungen. Wir werden die Standardeinstellungen für Schriftartnamen und Hintergrundfarbe aufheben und dann neue Werte dafür definieren. Wir verwenden den Schriftnamen „Consolas“ und eine dunkelgraue Hintergrundfarbe. Nach dem Kompilieren sehen wir das aktualisierte Panel mit der neuen Hintergrundfarbe und Schriftart.

Lassen Sie uns abschließend die tatsächlichen Werte des Fachberaters auf dem Panel anzeigen. Wir fügen die Expert Advisor-Datei in unsere Include-Datei ein und greifen auf die Eingabevariablen zu. Wir aktualisieren die Etiketten mit den tatsächlichen Werten des Fachberaters. Nach dem Kompilieren werden die Eingabewerte auf dem Bedienfeld angezeigt.

Das war's mit dem heutigen Tutorial zum Erstellen eines grafischen Panels in MQL5. Im nächsten Teil fügen wir der Schaltfläche Funktionen hinzu und vervollständigen das Bedienfeld. Bleib dran für mehr!

 

So erstellen Sie ein grafisches Panel in mql5 | Teil 2/2


So erstellen Sie ein grafisches Panel in mql5 | Teil 2/2

Hallo, das ist Toby. Heute zeige ich Ihnen, wie Sie ein grafisches Panel in MQL5 erstellen. Dies ist der zweite Teil der Tutorial-Reihe. Im ersten Teil haben wir auf der linken Seite ein einfaches Panel erstellt. Falls Sie es verpasst haben, verlinke ich es hier. Im heutigen Video fügen wir dem Bedienfeld Beschriftungen und eine Schaltfläche hinzu. In diesem Beispiel verwenden wir den Zeitbereichs-Breakout-EA. Wenn Sie lernen möchten, wie man diesen Fachberater programmiert, habe ich eine Codierungsserie auf meinem Kanal. Den ersten Teil werde ich hier auch verlinken.

Wechseln wir zum Medieneditor und beginnen mit dem Codieren. Wir haben unsere grafische Panel-Include-Datei und die modifizierte Zeitbereichs-Breakout-EA-Datei, die das Panel anzeigt. In der Include-Datei erstellen wir eine Methode namens „checkInputs“, um die Eingabewerte des Benutzers zu validieren. Wir rufen diese Methode auf, bevor wir das Panel in der OnInit-Funktion erstellen. Wenn eine der Eingaben ungültig ist, zeigen wir eine Fehlermeldung an und geben „false“ zurück. Andernfalls fahren wir mit der Erstellung des Panels fort.

Als Nächstes fügen wir dem Bedienfeld Beschriftungen und eine Schaltfläche hinzu. Um Beschriftungen und Schaltflächen verwenden zu können, müssen wir deren Klassendateien einbinden. Wir fügen der Klasse die notwendigen Include-Anweisungen für Beschriftungen und Schaltflächen hinzu. Anschließend definieren wir private Variablen für die Beschriftungen und die Schaltfläche.

In der Funktion „CreatePanel“ fügen wir nach dem Erstellen des Panels die Beschriftungen und Schaltflächen zum Panel hinzu. Wir legen deren Position, Text, Farbe und Schriftgröße fest. Abschließend fügen wir sie mithilfe der Add-Methode zum Panel hinzu.

Wir kompilieren den Code und überprüfen das Panel. Die Beschriftungen und Schaltflächen sollten auf dem Bedienfeld angezeigt werden. Wir werden auch die Hintergrundfarbe und den Schriftnamen des Panels ändern, um das Erscheinungsbild zu verbessern. Um die tatsächlichen Werte des Expert Advisors im Panel anzuzeigen, fügen wir die Expert Advisor-Datei in den Abschnitt „Include“ ein. Anschließend rufen wir in der Funktion „CreatePanel“ die Eingabewerte vom Expert Advisor ab und zeigen sie auf den Etiketten an. Wir kompilieren den Code und überprüfen das Panel erneut. Die Beschriftungen sollten nun die tatsächlichen Eingabewerte des Expertenberaters anzeigen. Wir wiederholen diesen Vorgang für alle Eingabewerte.

Sobald wir diese Schritte abgeschlossen haben, ist das grafische Bedienfeld mit Beschriftungen und einer Schaltfläche fertig. Jetzt können wir mit dem Hinzufügen der Werte für die verbleibenden Beschriftungen im Panel fortfahren. Wir machen dies auf die gleiche Weise wie beim Etikett mit den magischen Zahlen. Kehren wir zu unserer Include-Datei zurück und suchen den Abschnitt, in dem wir die Beschriftungen erstellen. Hier fügen wir den Code hinzu, um die Werte für Lose, Startzeit, Dauer und Schließzeit anzuzeigen.

Für die Losbeschriftung ersetzen wir den Text „magische Zahl“ durch „Lose“ und aktualisieren die Y-Koordinate auf 70. Für die Startzeitbeschriftung ändern wir den Namen in „Startzeit“ und aktualisieren die Y-Koordinate auf 70. Koordinate auf 90. Für die Bezeichnung „Dauer“ ändern wir den Namen in „Dauer“ und aktualisieren die Y-Koordinate auf 110. Zuletzt ändern wir für die Bezeichnung „Schließzeit“ den Namen in „Schließzeit“ und aktualisieren die Y-Koordinate auf 130.

Nachdem wir diese Änderungen vorgenommen haben, können wir den Code kompilieren.

Wenn wir uns nun unseren Fachberater ansehen und ihn zusammenstellen, sollten wir in der Lage sein, die tatsächlichen Werte für Lose, Startzeit, Dauer und Schließzeit auf dem Panel zu sehen. Als nächstes implementieren wir die Funktionalität für die Schaltfläche. Wenn wir derzeit auf die Schaltfläche klicken, wird keine Aktion ausgeführt. Lasst uns das ändern. In unserer Include-Datei finden wir den Abschnitt, in dem wir die Schaltfläche erstellen. Hier können wir einen Event-Handler für den Button-Klick hinzufügen. Zu diesem Zweck verwenden wir die OnChartEvent-Funktion. Innerhalb des Event-Handlers können wir die Aktion angeben, die wir ausführen möchten, wenn auf die Schaltfläche geklickt wird.

Lassen Sie uns zunächst eine Meldung anzeigen, wenn auf die Schaltfläche geklickt wird. Mit der Print-Funktion können wir eine Nachricht an das Terminal ausgeben. Nachdem wir den Event-Handler hinzugefügt haben, können wir den Code kompilieren.

Wenn wir nun den Expert Advisor ausführen und auf die Schaltfläche klicken, sollte die Meldung im Terminal angezeigt werden.

Das ist es! Wir haben in MQL5 erfolgreich ein grafisches Panel mit Beschriftungen und einer Schaltfläche erstellt. Die Beschriftungen zeigen die Eingabewerte des Expert Advisors an und die Schaltfläche verfügt über einen Click-Event-Handler.

Fügen Sie der Schaltfläche gerne weitere Funktionen hinzu oder passen Sie das Panel Ihren Anforderungen entsprechend an. Denken Sie daran, sowohl die Include-Datei als auch die Expert Advisor-Datei zu kompilieren, damit die Änderungen wirksam werden.

 

Dynamische Positionsgröße in mql5 | MT5-Programmierung



Dynamische Positionsgröße in mql5 | MT5-Programmierung

Hallo, das ist Toby. Heute zeige ich Ihnen, wie Sie die dynamische Losgröße in MQL5 berechnen, damit Sie Ergebnisse wie das hier gezeigte erzielen können. Sie können es selbst ausprobieren.

Okay, fangen wir an. In diesem Video werden wir eine dynamische Losgrößenberechnung zu einer Strategie hinzufügen, die derzeit eine feste Losgröße verwendet. Dadurch können wir einen bestimmten Betrag pro Trade riskieren, beispielsweise 100 $ oder einen Prozentsatz des Kontostands. Zusätzlich führen wir einen Backtest durch, um festzustellen, ob die Strategie mit der dynamischen Losgrößenberechnung weiter verbessert werden kann. Ich werde Sie auch durch die Strategie und ihre Einstellungen führen.

Wechseln wir zunächst zum MetaEditor und beginnen mit dem Codieren. Hier sind wir im MetaEditor und für diese Demonstration werde ich den „Time Range EA“ verwenden, um die dynamische Losgrößenberechnung zu integrieren. Sie können jedoch auch jeden anderen Fachberater Ihrer Wahl nutzen. Wir haben diesen EA zuvor in einer Serie auf unserem Kanal codiert. Wenn Sie denselben Fachberater nutzen möchten, stelle ich einen Link zum ersten Teil bereit.

Öffnen wir zunächst die Datei „Time Range EA“. Speichern wir es nun unter einem neuen Namen. Klicken Sie auf „Speichern unter“ und nennen Sie es „Zeitbereich EA Dynamic Lots“. Super, die Datei wurde gespeichert.

In diesem Expertenratgeber werden wir die dynamische Losgrößenberechnung hinzufügen. Lassen Sie uns die Datei kompilieren und die Eingaben im Strategietester untersuchen. Öffnen Sie den Strategietester in der MetaTrader 5-Plattform und aktualisieren Sie bei Bedarf die Expertenberater. Wählen Sie nun „Zeitbereich EA Dynamic Lots“ aus. Auf der Registerkarte „Eingaben“ sehen Sie die Eingabe „Losgröße“, die derzeit einen festen Wert akzeptiert. Wir müssen dies ändern, damit wir Werte für das Risiko von 100 $ pro Trade oder einen Prozentsatz des Kontostands eingeben können.

Wenn wir zurück zum MetaEditor wechseln, fügen wir im Abschnitt „Eingabe“ eine dynamische Losgrößeneingabe hinzu. Erstellen Sie etwas Platz nach der „Magic Number“ und definieren Sie eine Aufzählung (enum) namens „Lot Mode Enum“. Diese Aufzählung verfügt über drei Optionen: „Fest“, „Geld“ und „Prozent des Kontos“. Dadurch können wir ganz einfach den gewünschten Losmodus auswählen. Geben Sie für jede Option Kommentare ein, um die Lesbarkeit zu verbessern.

Als Nächstes verwenden wir diese Enumeration als Eingabe. Definieren Sie eine „Eingabe“ mit dem Typ „Lot Mode Enum“ und nennen Sie sie beispielsweise „Input Lot Mode“. Legen Sie den Standardwert auf „Losmodus fest“ fest und fügen Sie einen Kommentar hinzu, um den Zweck dieser Eingabe zu beschreiben.

Kompilieren Sie den Code und prüfen Sie, wie er im Strategietester angezeigt wird. Sie werden das Dropdown-Menü „Lot-Modus“ bemerken, in dem Sie zwischen „Fest“, „Lot basierend auf Geld“ und „Lot basierend auf Prozentsatz des Kontos“ wählen können.

Ändern wir nun die Eingabe „Losgröße“, um je nach ausgewähltem Losmodus unterschiedliche Werte aufzunehmen. Ändern Sie den Eingabetyp in „doppelt“ und ändern Sie den Kommentar so, dass er die Optionen „Lot/Geld/Prozent“ widerspiegelt. Kompilieren Sie den Code erneut und überprüfen Sie den Strategietester, um sicherzustellen, dass die Änderungen übernommen werden.

Um die Eingaben des Benutzers zu validieren, ändern wir die Funktion „CheckInput“. Fügen Sie Prüfungen für jede Losmodusoption hinzu, um sicherzustellen, dass die Eingabe innerhalb des akzeptablen Bereichs liegt. Für den Losmodus „Fest“ sollte die Losgröße über Null liegen und eine bestimmte Grenze (z. B. 10 Lose) nicht überschreiten. Wenn diese Bedingungen nicht erfüllt sind, wird eine entsprechende Fehlermeldung angezeigt. Wiederholen Sie diesen Vorgang für die Losmodi „Geld“ und „Prozent des Kontos“ und passen Sie die Limits entsprechend an. Wenn einer dieser beiden Lot-Modi ausgewählt wird, müssen wir außerdem prüfen, ob der Stop-Loss aktiv ist.

Eine kurze Zusammenfassung der Schritte zur Implementierung der dynamischen Losgrößenberechnung in MQL5:

  1. Bestimmen Sie die minimal und maximal zulässigen Losgrößen für Ihre Handelsstrategie.
  2. Definieren Sie die gewünschte Losschrittgröße, die das Inkrement darstellt, um das sich die Lose ändern können.
  3. Berechnen Sie die Stop-Loss-Distanz für den Handel.
  4. Verwenden Sie die Stop-Loss-Distanz, um die anfängliche Losgröße zu berechnen.
  5. Überprüfen Sie, ob die berechnete Losgröße unter dem minimal zulässigen Wert liegt und passen Sie sie gegebenenfalls an.
  6. Überprüfen Sie, ob die berechnete Losgröße den maximal zulässigen Wert überschreitet, und passen Sie sie gegebenenfalls an.
  7. Überprüfen Sie, ob die berechnete Losgröße eine gültige Schrittgröße ist, und passen Sie sie bei Bedarf an die nächste gültige Schrittgröße an.
  8. Gibt die endgültig berechnete Losgröße zurück.
  9. Verwenden Sie die berechnete Losgröße, um den Handel zu eröffnen.

Indem Sie diese Schritte befolgen, können Sie sicherstellen, dass Ihre Losgröße dynamisch basierend auf Ihrem gewünschten Risiko pro Trade und den Einschränkungen Ihrer Handelsstrategie berechnet wird.

 

Trailing-Stop-Loss in mql5 | MT5-Programmierung



Trailing-Stop-Loss in mql5 | MT5-Programmierung

Heute werde ich Sie Schritt für Schritt anleiten, wie Sie jedem Expert Advisor in MQL5 einen Trainings-Stop-Loss hinzufügen können. Am Ende dieses Videos werden wir auch einen Backtest durchführen, um zu bewerten, ob unsere Strategie durch einen Trading-Stop-Loss erweitert werden kann. Also lasst uns anfangen.

Bevor wir mit dem Codieren beginnen, wollen wir das Grundkonzept eines Trading-Stop-Loss verstehen. Stellen Sie sich vor, wir gehen eine Position zu einem bestimmten Preis ein. Zunächst ist unser Stop-Loss auf ein bestimmtes Niveau festgelegt. Wenn sich der Preis zu unseren Gunsten bewegt, verfolgen wir den Stop-Loss hinter dem Preis und behalten dabei immer den gleichen Abstand bei. Wenn der Preis zurückgeht, bleibt der Stop-Loss bestehen. Während sich der Preis weiter in unsere Richtung bewegt, bleiben wir unserem Stop-Loss hinterher. Letztendlich könnte sich der Preis umkehren, was dazu führen würde, dass unsere Position ausgestoppt wird. Die Hauptidee besteht darin, von bedeutenden Markttrends zu profitieren und die Position zu verlassen, wenn der Trend endet.

Wechseln wir nun zum MetaEditor, um mit dem Codieren zu beginnen. Zu diesem Zweck können Sie jeden Expertenberater verwenden, aber für dieses Video verwenden wir die „Timeline GA“ mit dynamischer Losgröße, die wir im vorherigen Video codiert haben. Öffnen Sie die Datei und speichern Sie sie als neuen Expert Advisor mit dem Namen „Stop Loss“. Kompilieren Sie den Code, um sicherzustellen, dass alles fehlerfrei ist.

Um unserem Fachberater einen Trading-Stop-Loss hinzuzufügen, müssen wir einige Schritte befolgen. Fügen wir zunächst eine zusätzliche Eingabe für den Trailing-Stop-Loss hinzu. Fügen Sie im Eingabeabschnitt eine boolesche Eingabevariable mit dem Namen „EnableTrailingStopLoss“ hinzu und legen Sie ihren Standardwert auf „false“ fest. Mit dieser Eingabe können wir den Trading-Stop-Loss aktivieren oder deaktivieren. Kompilieren Sie den Code, um die Änderungen zu übernehmen.

Wechseln Sie nun zurück zur MetaTrader-Plattform und öffnen Sie den Strategietester. Wählen Sie unseren Fachberater „Dynamische Lots mit Trailing Stop Loss“. Im Eingabereiter finden Sie den neu hinzugefügten Eingang „EnableTrailingStopLoss“. Schalten Sie von „false“ auf „true“ um, um den Trading-Stop-Loss zu aktivieren.

Als nächstes schreiben wir die Funktion, die unseren Stop-Loss aktualisiert. Wir platzieren diese Funktion vor der Funktion „ClosePosition“. Überprüfen Sie innerhalb der Funktion zunächst, ob wir den Handels-Stop-Loss aktiviert haben und ob für die Position ein Stop-Loss vorhanden ist. Wenn nicht, besteht keine Notwendigkeit fortzufahren, also kehren Sie von der Funktion zurück.

Lassen Sie uns nun alle offenen Positionen durchgehen. Für jede Position prüfen wir, ob sie unserem Fachberater gehört. Rufen Sie den Positionstyp (Kauf oder Verkauf), den aktuellen Stop-Loss und die Take-Profit-Werte ab. Berechnen Sie den neuen Stop-Loss basierend auf dem aktuellen Preis und der Spanne des Symbols, multipliziert mit dem benutzerdefinierten Stop-Loss-Prozentsatz. Passen Sie den Stop-Loss basierend auf dem Positionstyp an.

Bevor wir die Position mit dem neuen Stop-Loss ändern, müssen wir einige Überprüfungen durchführen. Stellen Sie zunächst sicher, dass sich der neue Stop-Loss vom aktuellen Stop-Loss unterscheidet, um Fehler zu vermeiden. Darüber hinaus legen einige Broker ein Stop-Level fest, um zu verhindern, dass der Stop-Loss zu nahe am aktuellen Preis liegt. Überprüfen Sie, ob der neue Stop-Loss dem Stop-Level entspricht, und fahren Sie andernfalls mit der nächsten Position fort.

Ändern Sie abschließend die Position mit dem neuen Stop-Loss und dem aktuellen Take-Profit-Wert. Wenn die Änderung fehlschlägt, drucken Sie eine Fehlermeldung aus, die das aufgetretene Problem angibt. Rückkehr aus der Funktion, um die Bearbeitung weiterer Positionen zu vermeiden.

Kompilieren Sie den Code, um sicherzustellen, dass keine Fehler oder Warnungen vorliegen. Damit ist die Update-Stop-Loss-Funktion abgeschlossen.

Um diese Funktion in unseren Expert Advisor zu integrieren, müssen wir sie innerhalb der „OnTick“-Funktion aufrufen. Platzieren Sie den Funktionsaufruf, nachdem Sie nach Ausbrüchen gesucht haben. Dadurch wird sichergestellt, dass der Stop-Loss für jeden empfangenen Tick aktualisiert wird.

Kompilieren Sie den Code ein letztes Mal, um die Änderungen zu bestätigen. Jetzt hat unser Fachberater die Möglichkeit, den Stop-Loss basierend auf den benutzerdefinierten Parametern zu verfolgen. Wir haben die Eingabevariable hinzugefügt, um die Trailing-Stop-Loss-Funktion zu aktivieren oder zu deaktivieren, und wir haben die Funktion implementiert, um den Stop-Loss für offene Positionen zu aktualisieren.

Lassen Sie uns nun mit dem Backtest unseres Fachberaters fortfahren, um die Wirksamkeit des Trading-Stop-Loss zu bewerten. Öffnen Sie in der MetaTrader-Plattform den Strategietester und wählen Sie unseren Fachberater „Stop Loss“ zum Testen aus. Wählen Sie das gewünschte Symbol und den gewünschten Zeitrahmen für den Test.

Auf der Registerkarte „Eingaben“ finden Sie verschiedene Parameter zum Konfigurieren, einschließlich des Trailing-Stop-Loss-Prozentsatzes und der Losgröße. Passen Sie diese Parameter entsprechend Ihren Vorlieben und Ihrer Handelsstrategie an.

Klicken Sie auf die Schaltfläche „Start“, um den Backtest zu starten. Der Fachberater führt Trades auf der Grundlage der angegebenen Parameter aus und der Stop-Loss wird dynamisch angepasst, wenn sich der Preis zu unseren Gunsten bewegt.

Sobald der Backtest abgeschlossen ist, können Sie die Ergebnisse auf den Registerkarten „Ergebnisse“ und „Diagramm“ überprüfen. Achten Sie auf Gewinn und Verlust, Drawdown und andere Leistungskennzahlen, um die Auswirkungen des Trailing Stop Loss auf die Strategie zu beurteilen.

Wenn die Backtest-Ergebnisse zufriedenstellend sind, können Sie erwägen, den Expert Advisor mit dem Trading-Stop-Loss in Ihrem Live-Handelskonto zu nutzen. Es ist jedoch wichtig, die Leistung der Strategie gründlich zu bewerten und weitere Tests oder Optimierungen durchzuführen, bevor Handelsentscheidungen getroffen werden.

Zusammenfassend lässt sich sagen, dass wir mithilfe von MQL5 erfolgreich einen Trading-Stop-Loss zu unserem Expertenberater hinzugefügt haben. Indem wir den Stop-Loss hinter dem Preis verfolgen, wollen wir bei günstigen Markttrends die Gewinne maximieren und bei einer Trendumkehr die Verluste minimieren. Denken Sie daran, alle Änderungen oder Strategien gründlich zu testen, bevor Sie sie auf Live-Handelskonten anwenden.

Bitte beachten Sie, dass dies ein allgemeiner Leitfaden ist und es wichtig ist, ein gutes Verständnis der Programmier- und Handelsprinzipien zu haben, bevor Sie solche Änderungen implementieren. Seien Sie stets vorsichtig und ziehen Sie bei Bedarf die Konsultation eines professionellen Finanzberaters in Betracht.

 

Codieren Sie einen einfachen RSI-EA in mql5 | MT5-Programmierung



Codieren Sie einen einfachen RSI-EA in mql5 | MT5-Programmierung

In diesem Tutorial stellt sich Toby vor und erklärt das Ziel des Tutorials, das darin besteht, zu demonstrieren, wie man mit dem MetaEditor einen einfachen Expert Advisor (EA) programmiert. Der EA wird den RSI-Indikator verwenden, um Kauf- und Verkaufssignale basierend auf überverkauften und überkauften Bedingungen zu generieren. Toby erwähnt auch, dass der EA einen Stop-Loss, Take-Profit und eine Option zum Ausstieg aus Geschäften bei einem umgekehrten Signal enthalten wird.

Toby erstellt zunächst eine neue EA-Datei im MetaEditor und bereinigt den vorhandenen Code. Anschließend definiert er die Eingabeparameter für den EA, wie z. B. die magische Zahl, die Losgröße, den RSI-Zeitraum, das RSI-Niveau, den Stop-Loss, den Take-Profit und die Option, Geschäfte bei einem umgekehrten Signal zu schließen. Er weist diesen Eingabeparametern Standardwerte zu und fügt Kommentare hinzu, um jeden einzelnen zu beschreiben.

Nachdem er die Eingabeparameter definiert hat, fährt Toby mit der Erstellung des Abschnitts „Globale Variablen“ fort. Er deklariert Variablen für das RSI-Indikator-Handle, einen Puffer zum Speichern von RSI-Werten, eine Tick-Typ-Variable zum Speichern des aktuellen Ticks, ein Handelsobjekt zum Öffnen und Schließen von Positionen und zwei Datum-Uhrzeit-Variablen, um sicherzustellen, dass nur ein Handel pro Balken eröffnet wird. Er enthält auch die notwendige #include-Direktive für den Zugriff auf die CTrade-Klasse.

Als nächstes implementiert Toby die Validierung der Eingabeparameter in der Funktion OnInit(). Er prüft, ob jeder Eingabeparameter die angegebenen Kriterien erfüllt und zeigt eine Fehlermeldung an, wenn eine Eingabe ungültig ist. Er verwendet die Funktion Alert(), um die Fehlermeldungen auszugeben, und kehrt von der Funktion OnInit() zurück, wenn ein Fehler auftritt.

Zusätzlich zur Eingabevalidierung legt Toby die magische Zahl für das Handelsobjekt fest und erstellt das RSI-Indikator-Handle. Er prüft, ob die Handle-Erstellung erfolgreich war und zeigt eine Fehlermeldung an, wenn sie fehlschlägt. Außerdem legt er die Reihe für den RSI-Puffer fest, um die Arbeit mit den Werten zu vereinfachen.

In der OnDeinit()-Funktion gibt Toby den RSI-Indikator mithilfe der IndicatorRelease()-Funktion frei, um Ressourcen freizugeben.

Als wir mit der OnTick()-Funktion fortfahren, beginnt Toby damit, den aktuellen Tick mithilfe der SymbolInfoTick()-Funktion abzurufen. Er prüft, ob der Tick-Abruf erfolgreich war und zeigt eine Fehlermeldung an, wenn er fehlschlägt. Er weist die Brief- und Geldkurse des aktuellen Ticks zur zukünftigen Verwendung der globalen Variablen currentTick zu.

Als nächstes ruft Toby die RSI-Indikatorwerte mithilfe der Funktion CopyBuffer() ab. Er weist die Werte einer Variablen namens rsiValues zu und prüft, ob der Abruf erfolgreich war. Er speichert die beiden RSI-Werte zur weiteren Analyse im Puffer.

Nachdem die erforderlichen Daten abgerufen wurden, kann Toby nun mit der Implementierung der Handelslogik in der OnTick()-Funktion fortfahren. Allerdings ist der im Text bereitgestellte Code abgeschnitten und die restlichen Details fehlen.

Das Tutorial behandelt die Ersteinrichtung des EA, einschließlich Eingabeparameterdefinition, Eingabevalidierung, Deklaration globaler Variablen, Handhabung von RSI-Indikatoren und Abruf aktueller Ticks. Das Tutorial legt die Grundlage für die Implementierung der Handelslogik in den folgenden Schritten.

 

Erstaunlicher RSI-Handelsbot in mql5! | MT5-Programmierung



Erstaunlicher RSI-Handelsbot in mql5! | MT5-Programmierung

Hey, das ist Toby, und heute zeige ich Ihnen, wie Sie eine Strategie mit einer Gewinnquote von 100 % programmieren. In diesem Tutorial ändern wir einen vorhandenen Expert Advisor (EA) und fügen dem RSI-Indikator einen Filter hinzu. Ich führe Sie Schritt für Schritt durch den Codierungsprozess. Lass uns anfangen!

Schritt 1: Einrichten der Strategie Wir arbeiten im MetaEditor. Öffnen Sie den EA, den wir im vorherigen Video erstellt haben. Wenn Sie es noch nicht gesehen haben, verlinke ich es, damit Sie es nachholen können. Speichern Sie die Datei unter einem neuen Namen, z. B. „RSI_MA_Filter_EA“.

Schritt 2: Ändern der Eingaben Um den Filter zu implementieren, müssen wir eine Eingabe für einen Zeitraum mit gleitendem Durchschnitt hinzufügen. Wir werden auch eine Eingabe für den Zeitrahmen hinzufügen, in dem der gleitende Durchschnitt verläuft. Wir behalten die Stop-Loss-, Take-Profit- und entgegengesetzten Signaleingaben bei, wie sie sind.

Schritt 3: Anpassen globaler Variablen Im Abschnitt „Globale Variablen“ müssen wir das Handle und den Puffer für den RSI-Indikator umbenennen, um sie vom gleitenden Durchschnitt zu unterscheiden. Wir fügen ein Handle und einen Puffer für den gleitenden Durchschnitt hinzu. Darüber hinaus können wir unnötige Variablen im Zusammenhang mit dem Kauf und Verkauf zur offenen Zeit entfernen.

Schritt 4: Änderungen in der onInit-Funktion vornehmen In der onInit-Funktion fügen wir eine Prüfung für die Eingabe des gleitenden Durchschnittszeitraums hinzu. Wir werden auch das RSI-Handle ändern, um den Eröffnungspreis anstelle des Schlusskurses zu verwenden. Anschließend erstellen wir das Handle und den Puffer für den Indikator für den gleitenden Durchschnitt.

Schritt 5: Aktualisieren der Untick-Funktion Innerhalb der Untick-Funktion prüfen wir zunächst, ob der aktuelle Tick ein neuer Balken-Eröffnungstick ist. Wenn nicht, kehren wir zurück und warten auf den nächsten offenen Tick der Bar. Wir fügen eine benutzerdefinierte Funktion hinzu, um diese Prüfung durchzuführen. Anschließend rufen wir die Werte für den gleitenden Durchschnitt ab und speichern sie im Puffer. Wir werden auch die Bedingungen für die Eröffnung von Kauf- und Verkaufspositionen anpassen, um den Filter für den gleitenden Durchschnitt einzubeziehen.

Schritt 6: Kompilieren und Testen Nachdem wir alle erforderlichen Änderungen vorgenommen haben, kompilieren wir den Code, um ihn auf Fehler zu prüfen. Wenn alles erfolgreich kompiliert wurde, können wir mit dem Testen des EA im Strategietester fortfahren. Wir führen einen visuellen Test mit historischen Daten von 2012 bis heute durch und wählen geeignete Eingaben für RSI und gleitende Durchschnittsperioden, Stop-Loss, Take-Profit und die Option, Trades bei einem entgegengesetzten Signal zu schließen.

Durch Befolgen dieses Tutorials haben Sie gelernt, wie Sie eine Strategie mit einer Gewinnquote von 100 % programmieren. Wir haben einen bestehenden EA geändert und dem RSI-Indikator einen gleitenden Durchschnittsfilter hinzugefügt. Denken Sie daran, Ihre Datei zu speichern und fehlerfrei zu kompilieren. Sie können die Strategie jetzt in der MetaTrader 5-Plattform mit dem Strategietester testen. Viel Glück bei Ihren zukünftigen Codierungsbemühungen!

 

Donchian-Kanal benutzerdefinierter Indikator EA | MT5-Programmierung



Donchian-Kanal benutzerdefinierter Indikator EA | MT5-Programmierung

Hey, das ist Toby. Heute zeige ich Ihnen, wie Sie einen benutzerdefinierten Indikator in MQL5 programmieren. Wir werden einen Donchian-Channel-Indikator erstellen und ihn später verwenden, um einen profitablen Expert Advisor (EA) zu entwickeln. Sobald der EA fertig ist, führen wir einige Backtests durch, um seine Leistung zu bewerten. Wie Sie den Ergebnissen entnehmen können, funktioniert die Strategie bemerkenswert gut. Lass uns anfangen!

Lassen Sie uns nun die Ergebnisse im Strategietester analysieren. Der Donchian Channel Expert Advisor zeigt vielversprechende Ergebnisse. Unser erster Schritt besteht also darin, die Strategie zu definieren. Wir programmieren einen benutzerdefinierten Donchian-Channel-Indikator und verwenden ihn, um den Expert Advisor zu erstellen. Lassen Sie uns die grundlegende Strategieidee im Diagramm skizzieren.

Die blauen Linien stellen den Donchian-Kanal-Indikator dar, den wir in diesem Video codieren werden. Der Donchian-Kanal zeigt das höchste Hoch und das niedrigste Tief der vorherigen N-Balken an. Viele Händler nutzen den Donchian Channel, um Breakout-Strategien zu entwickeln, bei denen sie einen Kaufhandel eingehen, wenn der Preis das obere Band überschreitet. Für diesen EA werden wir jedoch den umgekehrten Ansatz untersuchen. Wir gehen einen Verkaufshandel ein, wenn der Preis das obere Band des Donchian-Kanals überschreitet. Ebenso gehen wir eine Kaufposition ein, wenn der Preis das untere Band des Donchian-Kanals unterschreitet. Wir legen außerdem einen Stop-Loss basierend auf Punkten oder einem Prozentsatz des Kanals fest. Darüber hinaus könnten wir dem Donchian Channel EA einen Filter hinzufügen, um die Größe des Kanals zu berücksichtigen.

Lassen Sie uns nun in den Meta-Editor springen, um mit der Codierung unseres benutzerdefinierten Donchian-Channel-Indikators zu beginnen.

Beginnen wir im Meta-Editor mit der Erstellung einer neuen benutzerdefinierten Indikatordatei. Wir werden den Code ein wenig aufräumen, indem wir unnötige Kommentare entfernen und die Klammern ausrichten. Als Nächstes definieren wir die Eigenschaften des Indikators. Wir legen fest, dass es im Hauptdiagrammfenster und nicht in einem separaten Fenster angezeigt werden soll. Wir geben auch die Anzahl der Puffer und Plots an, die unser Indikator haben wird, in diesem Fall also zwei.

Als Nächstes definieren wir die Eingaben für unseren benutzerdefinierten Indikator. Mithilfe dieser Eingaben können Benutzer den Indikator anpassen, wenn sie ihn auf ein Diagramm anwenden. Wir erstellen Eingaben für die Periode des Donchian-Kanals, den Offset des Kanals (in Prozent) und die Farbe des Kanals.

Nachdem wir den Code kompiliert haben, fahren wir mit dem Abschnitt „Globale Variablen“ fort, in dem wir die notwendigen Variablen für den Indikator definieren. Wir erstellen Puffer für die oberen und unteren Werte des Donchian-Kanals und zusätzliche Variablen zum Speichern der oberen und unteren Werte sowie des ersten Balkenindex.

In der OnInit-Funktion initialisieren wir unsere Puffer und legen den Kurznamen des Indikators fest, der zur Identifizierung des Indikators im Diagramm verwendet wird.

Abschließend führen wir in der OnCalculate-Funktion die Berechnung für den Donchian-Channel-Indikator durch. Wir prüfen, ob im Diagramm genügend Balken vorhanden sind, um fortzufahren. Wenn nicht, geben wir Null zurück. Andernfalls berechnen wir die oberen und unteren Werte für jeden Balken anhand der Eröffnungspreise. Wir speichern diese Werte in den entsprechenden Puffern.

Sobald der Code ohne Fehler oder Warnungen kompiliert wurde, können wir unseren benutzerdefinierten Indikator testen. Öffnen Sie ein Diagramm, navigieren Sie zum Navigator und suchen Sie den Indikator „My Donchian Channel“. Ziehen Sie es per Drag & Drop auf das Diagramm. Geben Sie in den Einstellungen des Indikators den gewünschten Zeitraum, den gewünschten Offset und die gewünschte Farbe an.

 

Toller Donchian Channel-Trading-Bot in MQL5! | MT5-Programmierung



Toller Donchian Channel-Trading-Bot in MQL5! | MT5-Programmierung

Sobald Sie den benutzerdefinierten Indikator zum Diagramm hinzugefügt haben, wird der Donchian-Kanal als blaue Linien angezeigt. Der Donchian Channel-Indikator zeigt das höchste Hoch und das niedrigste Tief der vorherigen „n“ Balken. Es wird häufig zum Erstellen von Breakout-Strategien verwendet, bei denen Händler Kaufgeschäfte eingehen, wenn der Preis das obere Band des Donchian-Kanals überschreitet, und Verkaufsgeschäfte, wenn der Preis das untere Band unterschreitet.

Für diesen EA (Expert Advisor) wollen wir jedoch den umgekehrten Ansatz testen. Anstatt zu kaufen, wenn der Preis die Obergrenze überschreitet, verkaufen wir und umgekehrt. Wenn der Preis also das obere Band des Donchian-Kanals überschreitet, gehen wir eine Verkaufsposition ein, und wenn er das untere Band unterschreitet, gehen wir eine Kaufposition ein.

Darüber hinaus legen wir für jeden Trade einen Stop-Loss fest, entweder in Punkten oder als Prozentsatz des Kanals. Wir können auch darüber nachdenken, dem Donchian Channel EA einen Filter hinzuzufügen, der auf der Größe des Kanals basiert. Lassen Sie uns nun in den MetaEditor springen, um mit der Codierung unseres benutzerdefinierten Donchian-Channel-Indikators zu beginnen.

Erstellen Sie im MetaEditor eine neue benutzerdefinierte Indikatordatei, indem Sie oben links auf „Neu“ klicken, „Benutzerdefinierter Indikator“ auswählen und auf „Weiter“ klicken. Benennen Sie die Datei „MyDonchianChannel“ und klicken Sie auf „Weiter“ und „Fertig stellen“, um den Vorgang abzuschließen. Sobald die Datei erstellt ist, bereinigen Sie den Code, indem Sie unnötige Kommentare entfernen und die Klammern ausrichten. Kompilieren Sie als Nächstes den Code, um ihn auf Fehler oder Warnungen zu prüfen.

Definieren wir nun die Eigenschaften unseres benutzerdefinierten Indikators. Wir möchten, dass es im Hauptdiagrammfenster angezeigt wird, also setzen Sie die Eigenschaft „indicator_chart_window“ auf true. Wir müssen auch die Anzahl der Puffer und Diagramme für unseren Indikator definieren. Da wir zwei Zeilen haben (oben und unten), setzen Sie „indicator_buffers“ auf 2 und „indicator_plots“ auf 2.

Als Nächstes definieren wir die Eingabeparameter für unseren benutzerdefinierten Indikator. Wir benötigen Eingaben für die Periode des Donchian-Kanals, den Offset-Prozentsatz und die Farbe der Indikatorlinien. Definieren Sie diese Eingaben mit den entsprechenden Typen (Ganzzahl für Periode und Offset und Farbe für Farbe) und legen Sie Standardwerte und Kommentare für jede Eingabe fest.

Kompilieren Sie den Code erneut, um sicherzustellen, dass keine Fehler oder Warnungen vorliegen.

Kommen wir nun zum Codieren der Funktion „onCalculate“ des benutzerdefinierten Indikators. Überprüfen Sie zunächst, ob die Anzahl der Balken im Diagramm kleiner ist als der Eingabezeitraum plus eins. Wenn dies der Fall ist, sind nicht genügend Balken vorhanden, um den Indikator zu berechnen. Geben Sie also mit Null zurück. Als nächstes legen Sie die Variable „erste“ fest, die den ersten Balken darstellt, für den wir mit der Berechnung des Donchian-Kanals beginnen möchten. Wenn die vorherige Berechnung noch nicht durchgeführt wurde ( previous_calculated ist Null), setzen Sie „first“ auf den Eingabezeitraum. Andernfalls setzen Sie den Wert auf previous_calculated minus eins. Jetzt müssen wir die Balken mithilfe einer for-Schleife durchlaufen. Beginnen Sie die Schleife beim „ersten“ Balken und fahren Sie fort, bis der aktuelle Balken kleiner als die Gesamtzahl der Balken im Diagramm ist. Erhöhen Sie den Balkenzähler am Ende jeder Schleifeniteration.

Berechnen Sie innerhalb der Schleife die oberen und unteren Werte des Donchian-Kanals anhand der Eröffnungspreise jedes Balkens. Speichern Sie diese Werte jeweils in den Variablen „upper“ und „lower“.

Um den Versatz zu berechnen, subtrahieren Sie den unteren Wert vom oberen Wert und multiplizieren ihn mit dem eingegebenen Versatz dividiert durch 100. Dadurch erhalten wir den Versatzwert in Punkten oder als Prozentsatz des Kanals. Abschließend speichern Sie die berechneten Werte mithilfe des Pufferindex und des Balkenzählers in den entsprechenden Puffern. Nachdem wir die Werte berechnet und in den Puffern gespeichert haben, müssen wir die Indikatorbezeichnungen für jedes Diagramm festlegen. Diese Beschriftungen werden im Eigenschaftenfenster des Indikators angezeigt.

Weisen Sie die Beschriftungen für die oberen und unteren Diagramme mit der Funktion SetIndexLabel() zu und übergeben Sie dabei den Pufferindex und die Beschriftung als Parameter. Als Nächstes legen wir die Farben für die Indikatorlinien mithilfe der Funktionen SetIndexStyle() und SetIndexColor() fest. Geben Sie den Pufferindex, den Linienstil (z. B. STYLE_SOLID) und die gewünschte Farbe für jede Linie an.

Abschließend fügen wir noch zusätzlichen Code hinzu, um den Indikator optisch ansprechender zu gestalten. Wir können den Namen des Indikators ausblenden, indem wir die Eigenschaft Indicator_shortname auf eine leere Zeichenfolge setzen. Darüber hinaus können wir mit den Funktionen ObjectCreate() und ObjectSetText() eine Diagrammbeschriftung mit dem aktuellen Wert des oberen Bandes hinzufügen.

Kompilieren Sie den Code noch einmal, um sicherzustellen, dass keine Fehler oder Warnungen vorliegen.

Glückwunsch! Sie haben den benutzerdefinierten Donchian-Kanal-Indikator erfolgreich codiert. Jetzt können Sie diesen Indikator in Ihrem Expert Advisor verwenden, um Ihre Handelsstrategie umzusetzen.

Im nächsten Schritt werden wir mit der Codierung des Expert Advisors (EA) fortfahren, der den Donchian Channel-Indikator für die Ausführung von Trades basierend auf der Breakout-Strategie nutzt. Öffnen Sie eine neue Datei im MetaEditor, nennen Sie sie „DonchianChannelEA“ und wählen Sie die Option „Expert Advisor“. Klicken Sie auf „Weiter“ und „Fertig stellen“, um die Datei zu erstellen. Bereinigen Sie den ursprünglichen Code, indem Sie unnötige Kommentare entfernen und die Klammern ausrichten.

Zuerst definieren wir die Eingabeparameter für unseren EA. Dazu gehören die Losgröße, der Stop-Loss, der Take-Profit sowie der Zeitraum und der Offset für den Donchian Channel. Definieren Sie diese Eingaben mithilfe der entsprechenden Typen und legen Sie Standardwerte und Kommentare für jede Eingabe fest. Als Nächstes codieren wir die Funktion OnInit(). Innerhalb dieser Funktion initialisieren wir den Donchian-Channel-Indikator, indem wir die Funktion iCustom() mit den erforderlichen Parametern aufrufen.

Erstellen Sie Variablen zum Speichern des Indikator-Handles, der oberen und unteren Bandwerte. Verwenden Sie die Funktion ArraySetAsSeries(), um die Arrays als Serien festzulegen, um eine korrekte Indizierung sicherzustellen. Kommen wir nun zum Codieren der Hauptfunktion OnTick(), die die Handelslogik verwaltet.

Überprüfen Sie zunächst, ob genügend Balken zur Berechnung des Donchian-Kanals vorhanden sind. Wenn nicht, kehren Sie mit Null zurück. Rufen Sie mithilfe der Funktion CopyBuffer() die aktuellen oberen und unteren Bandwerte vom Indikator ab. Jetzt prüfen wir, ob ein Kaufsignal vorliegt. Wenn der Preis das obere Band überschreitet, eröffnen Sie eine Verkaufsposition mit der Funktion OrderSend(). Legen Sie den entsprechenden Auftragstyp (OP_SELL), die Losgröße, den Stop-Loss und die Take-Profit-Werte fest. Denken Sie daran, potenzielle Fehler zu behandeln, die von der Funktion OrderSend() zurückgegeben werden.

Überprüfen Sie auch, ob ein Verkaufssignal vorliegt. Wenn der Preis das untere Band unterschreitet, eröffnen Sie eine Kaufposition mit der Funktion OrderSend(). Legen Sie den entsprechenden Auftragstyp (OP_BUY), die Losgröße, den Stop-Loss und die Take-Profit-Werte fest.

Kompilieren Sie den Code, um sicherzustellen, dass keine Fehler oder Warnungen vorliegen.

Das ist es! Sie haben die Codierung für den Donchian Channel Expert Advisor abgeschlossen. Sie können den EA jetzt auf einem Demokonto testen oder ihn mithilfe historischer Daten einem Backtest unterziehen, um seine Leistung zu bewerten. Denken Sie daran, Ihren EA gründlich zu testen und die Implementierung von Risikomanagementtechniken in Betracht zu ziehen, bevor Sie ihn auf einem Live-Handelskonto verwenden. Bitte beachten Sie, dass es sich bei dem bereitgestellten Code um eine Basisimplementierung handelt und möglicherweise weitere Änderungen oder Erweiterungen erforderlich sind, um Ihren spezifischen Handelsanforderungen gerecht zu werden.

Grund der Beschwerde: