EA-programmieren lernen

Wie man den SL und TP als Faktor einer Range berechnet (und einen EA entsprechend programmiert)

Hier und heute geht es um Range-bezogene Strategien wie zum Beispiel einer Open-Range-Breakout-Strategie oder einer gleitenden Handelsspanne à la Donchian Channel bzw. Turtle Traders. Bei solchen Systemen bietet es sich oftmals an, auf fixe Stop-Loss- und Take-Profit-Abstände in Pips zu verzichten und stattdessen das Kursrisiko und die Kurschance als Vielfaches der gemessenen Range zu definieren.

Wenn z.B. der Kurs aus einer EURUSD-Range zwischen 1,1325 und 1,1355 ausbricht, ist die gemessene Handelsspanne 0,0030 USD pro EUR, was 30 Pips oder, bei 5-stelliger Quotierung, 130 Punkten entspricht. Ein Expert Advisor (EA) für MetaTrader (MT4/MT5), der nun mit 1-facher Range den SL-Abstand setzt, würde bei einem Short den Stop-Loss (SL) 30 Pips über, bei einem Long 30 Pips unter dem jeweiligen Einstandskurs setzen.

Analoge Vorgehensweise beim Take-Profit (TP): wählen wir beispielsweise das 3-fache der Handelsspanne als Kurschance, würde der EA den TP beim Buy 3 x 30 Pips = 90 Pips über dem Einstiegskurs platzieren. Bei einer Sell-Position wäre der TP 0,00900 USD pro EUR unterhalb der Dealeröffnung durchzuführen.

Ich zeige Ihnen im Rest dieses Artikels anhand unseres EA’s mFX-HochTiefAusbruch, der quasi ein Donchian-System, also Ausbrüche aus einer gleitend gemessenen Range im MT4 automatisiert, wie Sie den MQL4-Code eines EA’s von fixen Pips auf Range-Faktoren umprogrammieren können.

Los geht’s!

EA mit Range-Faktoren für SL und TP ausstatten

Wir gehen wie immer Schritt für Schritt vor, damit Sie alles leicht nachvollziehen können. Alle Code-Veränderungen und -Ergänzungen markiere ich mit Fettschrift.

Wichtiger Hinweis: die folgende Vorgehensweise ist eine von vielen Möglichkeiten. Jeder Programmierer hat seine eigene Art und Weise, die Programmiersprache MQL4 so zu verwenden, dass der Expert Advisor am Ende das tut, was er soll.

Schritt 1: EA-Datei unter neuem Namen abspeichern

Wir öffnen die existierende MQ4-Datei mFX-HochTiefAusbruch_v1.50 im MetaEditor. Im Menü Datei wählen wir Speichern Als… und speichern die Datei unter dem neuen Namen mFX-HochTiefAusbruch_v1.60 ab. Damit stellen wir sicher, dass wir jederzeit auf die gut und zuverlässig funktionierende Version v1.50 zurückgreifen können - eine Vorsichtsmaßnahme also.

Schritt 2: Versionsnummer und Erstellungsdatum ändern

Nun ändere ich die Versionsnummer und das Datum, wann ich zuletzt daran gearbeitet habe. Das dient meiner eigenen Dokumentation und unterstützt sozusagen mein Erinnerungsvermögen.

#property version "1.60" //16.11.2018

Das Datum hinter den zwei Schrägstrichen hat dabei keinerlei funktionale Bedeutung für den EA. Denn die beiden zwei Schrägstriche markieren alles folgende in dieser Zeile als Programmierer-Kommentar, welches im Kompilierprozess nicht in Programmcode umgewandelt wird.

Schritt 3: Auswahlliste erstellen

Wir erstellen nun eine Auswahlliste, um zwischen dem bisherigen Pip-basierten und dem neuen Range-Faktor-gestützten Dealmanagement hin und her wechseln zu können. Ich füge folgenden Code direkt vor die Eingabevariablen für TP, SL und Trailing Stop (TS) ein:

enum BASIS_DEALMANAGEMENT
{
PIPS,
RANGE
};

enum definiert immer die darauffolgende Auswahlliste (Enumeration), deren Bestandteile innerhalb der geschwungenen Klammern aufgeführt werden. Diese Auswahlliste können wir nun als Variablenart verwenden, indem wir die Eingabevariable Pips_oder_Range damit definieren und mit dem Standardwert RANGE versehen:

extern BASIS_DEALMANAGEMENT Pips_oder_Range = RANGE;

Beide Code-Bestandteil habe ich vor die TP-/SL-/TS-Eingabevariablen platziert, siehe folgender Screenshot.

Die existierenden Eingabevariablen für TP, SL und TS können wir nun in der EA-Programmierung so verwenden, dass Sie Pips ausdrücken, wenn unter Pips_oder_Range “PIPS” ausgewählt ist. Wenn hingegen “RANGE” ausgewählt ist, wie nun standardmäßig der Fall, werden die Eingaben als Range-Vielfaches ausgelegt.

Schritt 4: Voreinstellungen für Eingabevariablen ändern

Da wir als Standardeinstellung “RANGE” verwenden, ist es ratsam, auch gleich die Standardwerte für TP, SL und TS auf sinnvolle Werte anzupassen. Während beim TP z.B. 55 Pips durchaus Sinn macht, wäre das 55-fache der Range als TP-Abstand hingegen viel zu hoch gegriffen. Daher ändern wir die Voreinstellungen folgendermaßen:

extern double TP = 3;
extern double SL = 1;
extern bool TrailingStopp = false;
extern double TrailingStopp_AktivProfit = 0.1,
TrailingStopp_Abstand = 1,
TrailingStopp_Schritt = 0.01;

Wenn der Nutzer des EA’s mFX-HochTiefAusbruch diese Standards fürs Trading übernimmt, würde der EA folgendermaßen agieren:

  1. TP-Abstand ist das 3-fache der Range, im obigen Beispiel also 3 x 0,0030 USD pro EUR, also 0,0090 Kursgewinn als Ziel.

  2. SL-Abstand ist das 1-fache der Range, im obigen Beispiel wären das 0,0030 Kursrisiko.

  3. Trailing-Stopp ist durch “false” ausgeschaltet. Wenn es aber durch Auswahl von “true” aktiviert würde, wäre es aktiv (TrailingStopp_AktivProfit) ab einem Positionsgewinn von 0,1 x die Range von 0,0030, also ab 0,0003 oder 3 Pips Deal-Gewinn. Der eigentliche Nachzieh-Abstand TrailingStopp ist mit 1 eingestellt, was 0,0030, also die einfache Range, ergibt. Jeder SL-Nachzug muss einen SL-Schritt von mindestens 0,01 der Range ausmachen (TrailingStopp_Schritt), was 0,01 x 0,0030 USD pro EUR, also 0,00003 Kursdifferenz bedeutet.

Schritt 5: Handelsspanne in einer Variable speichern

Im Haupt-Code, der vom EA bei jedem empfangenen Kurstick durchlaufen wird, haben wir schon das gleitende Range-Hoch sowie -Tief ermittelt:

Aus dem Handelsspannen-Hoch RangeUp und dem Range-Tief RangeLo können wir nun die Handelsspannen-Größe errechnen. Dazu fügen

double Range = RangeUp - RangeLo ;

Diese neue Variable Range können wir im nächsten Schritt mit den Dealmanagement-Faktoren multiplizieren.

Schritt 6: Range und Multiplikator zum Dealmanagement verwenden

Wie wir nun die Range-abhängigen SL-, TP- und Trailing-Stop-Abstände berechnen, zeige ich Ihnen am Beispiel des Stop-Losses. Bislang berechnen wir den SL-Kurs, den der EA bei Übermittlung eines Buy-Deals verwendet, durch folgende Code-Zeile:

double SLset = NormalizeDouble ( Ask - ( SL * UsePoint ) , Digits ) ;

Die an dieser Stelle belegen wir die neu eingeführte Variable SLset, die dann in der OrderSend- oder OrderModify-Funktion verwendet werden kann, mit dem SL-Kurs. Dabei hält die Variable UsePoint bei 4- und 5-stelliger Quotierung den Wert 0,0001. Die Funktion NormalizeDouble rundet den Wert auf die Anzahl der Nachkommastellen des Chartsymbols Digits. Im Endeffekt rechnen wir also Ask-Preis minus der Pip-Anzahl, die wir in der Eingabe-Variable SL eingestellt haben.

Nun fügen wir unter diese Zeile den Code hinzu, der den Range-Bezug herstellt:

if ( Pips_oder_Range == RANGE )
SLset = NormalizeDouble ( Ask - ( SL * Range ) , Digits ) ;

Wenn also die Eingabe-Variable Pips_oder_Range durch den Nutzer des EA’s mFX-HochTiefAusbruch mit dem Auswahl-Wert RANGE belegt wurde, wird fast die exakt gleiche Berechnung durchgeführt. Der einzige Unterschied ist, dass die Eingabe-Variable SL nicht mehr mit UsePoint (bei EURUSD also 0,0001), sondern mit der Größe der Handelsspanne Range multipliziert wird.

Die beiden Code-Zeilen des EA’s sehen nun im MetaEditor folgendermaßen aus:

SLset wird also zunächst mit dem Pip-abhängigen SL belegt. Nur wenn RANGE als Dealmanagement-Methode ausgewählt ist, wird die Variable SLset noch entsprechend verändert. Das ist praktisch und robust.

Schritt 7: Wiederholen Sie die Variablenberechnung analog für den Sell-SL sowie für TP und Trailing Stop auf beiden Seiten.

Nun sind Sie an der Reihe, die eben gelernte Lektion sofort und direkt anzuwenden. Zunächst für den SL der Sell-Seite, danach für TP und Trailing Stop für Long und Short. Wie ergeht es Ihnen bei diesem Versuch? Schreiben Sie Ihre Antworten unten in die Kommentare.

Ich hoffe, dass Ihnen dieser Blog-Artikel bei Ihren eigenen Programmier-Bemühungen weiterhilft.

Neue EA Version v1.60 ab sofort verfügbar

Diese neue Dealmanagement-Methode ist ab sofort in der neuen EA-Version v1.60 des mFX-HochTiefAusbruch eingebaut. Alle Informationen zu diesem MT4-EA, der Ausbrüche aus gleitend gemessenen Handelspannen automatisch handelt, inklusive Kaufpreis, Lizenzbedingungen und Sofort-Download finden Sie hier unter folgendem Link: https://www.mindfulfx.de/hochtiefausbruch/

Alles Gute für Ihr Trading wünscht
Cristof Ensslin von mindful FX, Ihr EA Programmierer

Schriftgröße im MetaEditor verändern

Wer im MetaEditor einen Expert Advisor (EA) oder Indikator programmiert, hat sich vielleicht schon mal gewundert, warum die angezeigte Schriftgröße nicht mit der 2-Finger-Technik auf dem Touchpad veränderbar ist, wie z.B. in Microsoft Word oder einem Browser wie Google Chrome. Ich selbst habe daraus lange Zeit die (falsche) Schlussfolgerung gezogen, dass die Schriftanzeige im MetaEditor einfach fix ist, ich sie also nicht verändern kann.

Kürzlich bin ich darauf gestoßen, dass ich aber auf andere (schon fast alt-herkömmliche) Art und Weise die Anzeige vergrößern kann. Insbesondere ist das wertvoll, wenn ich Webinare oder Videokonferenzen halte, in denen ich den EA Code erkläre.

So verändern Sie die Schriftgröße im MetaEditor

Drei einfache Schritt führen Sie zum Ziel.

Schritt 1: öffnen Sie eine Code-Datei (.mq4 oder .mq5) im MetaEditor.

Ich öffne eine mq4-Datei, z.B. die Code-Datei unseres Moving-Average-Crossover EA’s mFX-MAXingPro im MetaEditor.

Schritt 2: wählen Sie im Menü Werkzeuge den Punkt Optionen aus.

Im Menü Werkzeuge des MetaEditors wähle ich nun also den Unterpunkt Optionen aus.

Dadurch öffnet sich ein Fenster zu Einstellung verschiedener Programm-Eigenschaften.

Schritt 3: im Reiter Schriftart legen Sie die gewünschte Schriftgröße fest.

Nun klicke ich auf den Reiter Schriftart. Dort kann ich Schriftart und Größe ändern. Die Schriftart belasse ich hier auf Courier New, während ich bei Größe 16 einstelle. Nun klicke ich auf OK.

Zum Abschluss sehe ich den gleichen EA Code wie vorher, aber in geänderter Schriftgröße. Die größere Anzeige dient mir zum Beispiel zur besseren Leserlichkeit für mich selbst oder aber meinen Zuschauern in YouTube-Videos, Webinaren oder Videokonferenzen mit Bildschirmübertraung.

Ihnen viel Erfolg beim EA Programmieren und Traden
Cristof Ensslin von mindful FX, Ihr EA-Programmierer

Für meine Freitags-Mails rund um die Themen TRADING, EXPERT ADVISORS UND EA-PROGRAMMIERUNG anmelden:

Datenschutz nach DSGVO. Sie können sich jederzeit aus unserem Email-Verteiler austragen. Powered by ConvertKit

EA Programmieren anfangen mit MQL4 oder MQL5?

Bei meinem letzten JFD-Webinar am 2.10.2018 wurde ich nach einer Empfehlung gefragt, ob man besser auf MT4 oder gleich auf MT5 das Programmieren von Expert Advisors lernen sollte. Hier meine Antwort.

Die Programmiersprache MQL4 für den MetaTrader 4 ist sehr viel einfacher als die Programmiersprache MQL5 für den MetaTrader 5. Damit eignet sie sich schlicht und ergreifend besser für Programmier-Einsteiger.

Die beiden Sprachen sind weiter voneinander entfernt als es deren Namensgebung erwarten lässt. EAs für MT5 zu programmieren kann man dan als zweiten Schritt lernen, wenn man den Einstieg ins Programmieren durch MT4 EAs geschafft hat.

Ich vergleiche das gerne mit Spanisch und Portugiesisch. Beide Sprachen sind eng miteinander verwandt. Spanisch ist aber viel leichter zu lernen, unter anderem weil die Aussprache sehr nah am geschriebenen Wort liegt. Das kommt dem deutschen Muttersprachler sehr entgegen. Portugiesisch hingegen hat zusätzlich ganz andere Ausspracheregeln, so dass dies zu einem höheren Schwierigkeitsgrad für das Erlernen dieser schönen Sprache führt.

Wenn Sie sich die einfachere Sprache zuerst aneignen, erhalten Sie zunächst das Verständnis für Vokabular und Grammatik. Noch wichtiger: Sie generieren in sich selbst die Fähigkeit, eine Sprache zu lernen. Das erleichtert den nächsten Schritt, eine weitere Sprache zu lernen.

Weil das EA-programmieren in MT5 deutlich schwieriger ist, halte ich es für Programmierneulinge für die überlegene Strategie, zunächst mit MQL4 zu beginnen.

“Wird nicht MT5 den MT4 irgendwann komplett ersetzen?” höre ich als Einwurf immer wieder. Das kann gut sein, wird aber sicherlich sich noch über Jahre hinziehen. Die Firma MetaQuotes, die beide Versionen des MetaTraders entwickelt, hat meines Erachtens sogar ein großes Interesse daran, entweder MT4 langfristig beizubehalten oder aber die Masse an MT4-Programmen für MT5 kompatibel zu machen. Warum?

Über deren Website mql5.com, die deren offizielle Plattform für MT4 und MT5 ist, gibt es tausende von EAs, Indikatoren und Signale für MT4 zu kaufen oder mieten. Die Anzahl der für MT5 verfügbaren Programme ist deutlich niedriger. An jedem Kauf, an jeder Miete und an jedem Abonnement verdient MetaQuotes mit ca. 20% mit.

Würden Sie eine solche Einkommensquelle einfach so abschalten? Wahrscheinlich nicht. Daher werden EAs und Co für MT4 in meiner idealen Welt voll kompatibel werden für MT5. Hinweise dafür gibt es schon:

Im Juni 2018 wurde seitens MetaQuotes bekannt gegeben, dass die in MQL4 verfügbaren Funktionen zum Kursdetail-Abruf (z.B. iTime, iOpen, iHigh, iLow, iClose, iVolume etc.) nun auch in MQL5 verwendet werden können. Das erleichtert das “Übersetzen” von MT4 EAs in MT5 EAs ungemein.

Außerdem seien laut Christian Kämmerer von JFD Brokers noch immer sieben mal mehr Lizenzen für MT4 im Umlauf als für MT5, wie er während unseres gemeinsamen Webinars vom 2.10.2018 erwähnte. Das bedeutet, dass der Umstellungsprozess noch eine ganze Weile dauern wird.

Daher ist es meines Erachtens weiterhin sehr sinnvoll, die Programmiersprache MQL4 für MT4 zu lernen und somit die Chance wahrzunehmen, den einfacheren Weg in die Welt des EA-programmierens zu nehmen.

 Heute ist Anmeldeschluss für Oktober-Kurs

Heute ist Anmeldeschluss für Oktober-Kurs

Übrigens: heute ist Anmeldeschluss für die nächste Ausgabe für unseren MQL4-Intensivkurs - EA-programmieren lernen. Noch ein paar Plätze sind verfügbar, so dass Schnellentschlossene am 29. und 30. Oktober 2018 direkt von mir das EA-Programmieren für MT4 lernen können. Klicken Sie rechts auf die Grafik oder oben auf den Link, um sich vollständig zu informieren und anzumelden.

Ich würde mich freuen, Sie Ende Oktober in Stuttgart zu sehen.

Herzliche Grüße
Cristof Ensslin von mindful FX, Ihr EA-Programmierer

MQL4-Intensivkurs - EA-programmieren lernen

infomiert bleiben:

Datenschutz nach DSGVO. Sie können sich jederzeit aus unserem Email-Verteiler austragen. Powered by ConvertKit

MQL5-Intensivkurs - EA-programmieren lernen

infomiert bleiben:

Datenschutz nach DSGVO. Sie können sich jederzeit aus unserem Email-Verteiler austragen. Powered by ConvertKit

Webinaraufzeichnung: EA programmieren in 60 Minuten (oder ein paar Minuten mehr…)

Letzte Woche Dienstag, 2.10.2018, hatte ich die Ehre, bei JFD Brokers in ihrem Oktober 2018 - JFD Live Event - Regelbasierte Trading Strategien und Algos im Einsatz zu Gast sein zu dürfen. Im Webinar habe ich live zum Zuschauen und Mitmachen die Zuschauerschaft ins EA-programmieren für MT4 eingeführt.

Wir haben eine Ausbruchsstrategie nach meiner Wert-gebenden Trading-Philosophie aufgesetzt. Fertig wurden wir dabei auf der Buy-Seite. Gerne noch dazu programmiert hätte ich die Sell-Seite sowie eine Schleife, die die Range-Begrenzungen von nicht nur der Vorkerze, sondern mehreren Vorkerzen ermittelt. Dazu hatte die Zeit aber am Ende nicht ausgereicht, vielleicht können wir’s beim nächsten Mal nachholen.

Wie einfach Sie das EA-Programmieren lernen können, sehen Sie hier selbst in der Aufzeichnung des Webinars, kostenfrei in voller Länge:

Den gemeinsam programmierten Expert Advisor MQL4-Code gibt’s ab sofort hier und heute kostenfrei zum Download, unter dem wichtigen HAFTUNGSAUSSCHLUSS UND RISIKOHINWEIS, dass dieser EA keine Handelsempfehlung darstellt, sondern lediglich zur Veranschaulichung des MQL4-Programmierens und somit nur für Lernzwecke des EA-Programmierens dient. Nutzen Sie ihn ausschließlich auf Demo-Konten!

Webinar-EA per Email bestellen

Bitte senden Sie mir den gemeinsam im Webinar vom 2.10.2018 entwickelten MQL4-Code für den MT4-EA an folgende Email-Adresse:

    Freitagsmails mit wichtigen und spannenden Themen rund ums EA-Programmieren und Trading gewünscht (kostenlos und jederzeit abbestellbar):

    Datenschutz nach DSGVO. Sie können sich jederzeit aus unserem Email-Verteiler austragen.

    Powered By ConvertKit

    Danke für Ihr Interesse!

    Viel Spaß und Erfolg beim selbst Programmieren und Traden
    Cristof Ensslin von mindful FX, Ihr EA Programmierer

    PS: wenn Sie das EA Programmieren von Grund auf lernen möchten, lege ich Ihnen unseren MQL4-Intensivkurs - EA-programmieren lernen vom 29.-30. Oktober 2018 in Stuttgart wärmstens ans Herz. Alle Infos hier: https://www.mindfulfx.de/mql4intensivkurs/