Ausbruchshandel

Ausbruchshandel zum Non-Farm-Payrolls per Expert Advisor

Wenn wichtige Neuigkeiten veröffentlicht werden kommen oftmals die Märkte in Bewegung. Volatilität ist gefragt für Trader. Der Haken daran ist, dass man als manuell handelnder Trader oft zu spät dran ist, wenn die Post abgeht - selbst wenn man mit wachen Augen und hellem Geist vor Chartsoftware und Handelssystem sitzt. Hinzu kommen psychologische Herausforderungen, sich an eine im vorhinein wohl überlegte Strategie stringent zu halten. Alles nicht ganz einfach.

Eine schnelle und konsistente Lösung dieser Probleme ist der Handel per Trading Robot, also einer Software, die einen programmierten Handelsalgorithmus automatisiert und gefühlsfrei in Sekundenbruchteilen umsetzt - schneller und konsistenter als das ein Mensch jemals manuell schaffen könnte.

Wenn’s um die Trading-Plattform MetaTrader 4 oder 5 geht, heißen solche Trading Robots Expert Advisors oder, kurz, EA. Wer im News-Trading auf Ausbrüche nach oben oder unten setzen möchte, kann sich per EA bestens darauf vorbereiten - ohne Gewinngarantie versteht sich. Denn ein EA ist ein Werkzeug, nicht mehr und nicht weniger.

Ein EA ist ein Werkzeug, der einen guten Trader noch profitabler, einen schlechten dagegen nur um Verluste reicher macht.

Ein Beispiel für einen solches Hilfsmittel ist unser EA mFX-OpenRangeBreakout, den wir über die letzten Wochen und Monate im Rahmen der Online Workshop-Serie: DELUXE-Version des Open Range Breakout EA programmieren entwickelt und getestet haben. Wir können ihn wirkungsvoll dafür verwenden, um die schnellen Kursbewegungen, die regelmäßig nach Veröffentlichungen von Wirtschaftsdaten, für Gewinn bringende Trades zu nutzen.

Tests des Open-Range-Breakout EA im News-Trading: der monatliche US-Arbeitsmarktbericht “Non-Farm Payrolls”

Ich habe den EA mFX-OpenRangeBreakout im Backtest dazu verwendet, auf folgenden Chartsymbolen die Kursausbrüche zu analysieren, die auf die Veröffentlichung des letzten monatlichen US-Arbeitsmarktberichts “Non-Farm Payrolls” (NFP) am 7.6.2019 folgten:

  1. EURUSD, das meistgehandelte Währungspaar der Welt

  2. USDJPY, die Mutter des Carry-Trades

  3. .US500Cash, ein CFD auf den S&P 500, der für Finanzprofis wichtigste Aktienindex der Welt.

War es möglich, systematische Gewinne zu erzielen?

Beginnen wir mit EURUSD

Die Handelsstrategie “Open-Range-Breakout” (ORB) funktioniert so, dass zwischen zwei festzulegenden Uhrzeiten die Handelsspanne gemessen wird und dann im Laufe des Handelstages Ausbrüche aus dieser Range getradet werden. Wir gestalten den NFP-Handel nun so, dass wir den EA mFX-OpenRangeBreakout in zwei unterschiedlichen Range-Zeiträumen einstellen. Wir vergleichen also zwei unterschiedliche Methoden.

Methode 1: Messung der Range von 8 bis 9 Uhr

Die eigentliche Idee hinter der ORB-Strategie ist, dass man die morgendliche Tageseröffnungsrange misst - daher der Namensbestandteil “Open”. Der relevante Eröffnungszeitraum für die mitteleuropäischen Märkte gilt gemeinhin als die Stunde vor Eröffnung der meisten Aktienbörsen um 9 Uhr. Die Futures auf die wichtigsten Leit-Indizes wie z.B. der Frankfurter DAX 30 oder der Pariser CAC 40 sind in dieser Stunde schon handelbar, was erste Tendenzen für Richtung und Volatilität des Tages vermuten lässt.

In dieser ersten Methode untersuchen wir also, ob ein Tag, an dem ein Non-Farm-Payroll Datum veröffentlicht wird, besonders vorteilhaft volatil für die Open Range Breakout-Strategie ist, nicht nur die Zeit nach der Nachricht selbst. Denn diese wird regelmäßig erst um 14:30 Uhr MEZ der Nachrichten-hungrigen Welt präsentiert.

Wir nutzen also die Standard-Einstellungen des EA’s mFX-OpenRangeBreakout, indem wir als Uhrzeit für den Rangebeginn 07:00 Uhr eingeben. Der MT4-Tradeserver unseres Brokers JFD Bank befindet sich auf Londoner Zeitzone, weshalb wir für 8 Uhr in Deutschland/Österreich/Schweiz 7 Uhr in England und somit im EA veranschlagen. Für das Rangeende geben wir 07:59 Uhr ein, weil die M1-Kerze mit dem Zeitstempel “07:59” im MetaTrader um 7:59:00 beginnt und um 7:59:59 endet. Ab Punkt 8 Uhr können somit Ausbrüche gehandelt werden.

Für den letzten NFP-Freitag am 7. Juni 2019 sieht dies im visuellen Modus des Strategietesters, einem Backtest also, folgendermaßen aus:

ORB-EA EURUSD Standardeinstellung.png

Wenige Minuten nach 8 Uhr (in Chart- bzw. Tradeserverzeitzone gesprochen) eröffnet der EA einen BUY-Deal, der mit Eröffnung des SELL-Deals um ca. 11 Uhr im Verlust geschlossen wird. Erst Trade Nr. 3 des Tages, der BUY-Deal kurz nach 12 Uhr, welcher auch den SELL-Deal im Verlust schließt, bringt den erhofften Gewinn, da der standardmäßig eingestellte Take-Profit-Abstand von 3 Range-Höhen erreicht wird.

Bei 10.000 EUR anfänglichem Kontostand und 0,1% Risiko pro Deal (es stehen also 10 EUR pro Deal auf dem Spiel), verbleibt ein Netto-Gewinn nach allen Transaktionskosten von 4,03 EUR oder 0,04%.

Methode 2: Messung der Range von 8 bis 14:30 Uhr

Wir gehen analog der Methode 1 vor, mit dem einzigen Unterschied, dass die Range nun von 8 Uhr bis 14:30 Uhr, dem Zeitpunkt der NFP-Veröffentlichung, gemessen wird und dann erst getradet werden soll.

Im EA mFX-OpenRangeBreakout geben wir als Range-Beginn 07:00 und als Range-Endzeit 13:29 ein, um der Zeitzone unseres Testbrokers sowie der Funktionsweise des EA’s (für beides siehe oben) Rechnung zu tragen. Wir starten damit den Stragietester im visuellen Modus und erhalten folgendes Tagesergebnis:

Nur ein einziger Deal wird eröffnet, dessen Lotsize wieder auf Basis von 10.000 EUR Kontokapital und 0,1% (= 10 EUR) Risiko pro Deal berechnet wird. Dieser BUY-Deal bleibt bis zum standardmäßig eingestellten Handelsschluss um 19 Uhr Chartzeit geöffnet, obwohl sein SL durch die Trailing-Stop-Funktionalität des EA’s schön in den Gewinn gezogen wurde. Um 19 Uhr schließt der EA den Deal mit 22,70 EUR Profit nach Abzug aller Transaktionskosten. Mehr als doppelt soviel Gewinn wie Risiko, das gefällt mir gut.

Weitere Tests und LIVE-Trading Webinar

Nächste Woche folgen im Freitag-morgendlichen Blog die Tests für US500 sowie USDJPY.

Danach, für 14:15 Uhr MESZ, lade ich Sie herzlich für das LIVE-Webinar Open Range Breakout EA live in Aktion ein. Wir werden den EA mFX-OpenRangeBreakout in Echtzeit auf einem Demokonto testen, während um 14:30 Uhr die Non-Farm-Payrolls veröffentlicht werden.

Im Webinar gibt’s, speziell für Echtgeld-Kunden (Neu- und Bestandskunden!) unseres Top-Partnerbrokers JFD Bank, ein Sonderangebot für den EA. Vielleicht gibt’s ihn sogar komplett kostenfrei? Wer weiß… Daher am besten gleich anmelden zum Webinar und den Termin fest in Ihren Kalender eintragen:

Webinar-Anmeldung: Open Range Breakout EA live in Aktion

Ich melde mich zum kostenlosen Webinar am 5. Juli 2019 um 14:15 Uhr an. Bitte informieren Sie mich per Email über Einwahl-Link und andere Webinar-Infos (wie z.B. Erinnerungsmail eine Stunde vor Beginn oder Zugang zur Webinar-Aufzeichnung):

    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

    Bis nächsten Freitag wünscht Ihnen beste Trading-Erfolge
    Cristof Ensslin von mindful FX, Ihr EA-Programmierer

    Letzte Feinschliffe am Open Range Breakout EA (inkl. Notiz zum Gewinnpotenzial)

    Letzte Woche berichtete ich im Blog-Artikel ORB EA Dauertest läuft seit Sonntag nacht berichtete, dass nach der Expert-Advisor-Entwicklungs-Phase nun der Open Range Breakout EA mFX-OpenRangeBreakoutDELUXE im Livebetrieb auf einem Demokonto auf Mark und Bein getestet wird. Das liefert uns wertvolle Informationen zur stabilen Funktionalität sowie erste Erkenntnisse zwecks Profitabilität.

    Zum Gewinnpotenzial des EA’s aber weiter unten noch mehr.

    Zunächst konnten wir in dieser Woche noch ein paar kleinere, nur in besonderen Situationen auftretenden Programmfehler orten und beheben. Es ist auch nach nunmehr 7 Jahren Programmiererfahrung erstaunlich, dass immer wieder neue Szenarien geschehen, die bedacht sein müssen, um einem komplizierteren Expert Advisor (EA) wie dem mFX-OpenRangeBreakoutDELUXE Robot vollständige Zuverlässigkeit zu verleihen.

    Hier in diesem Beispiel hatte die Volumens-Verdoppelung nach Verlustdeal nicht funktioniert, weil die Eröffnung des zweiten Deals (Zeile mit weißem Hintergrund) schon eine Sekunde vor Schließung des ersten Deals (Zeile mit blauem Hintergrund) durch SL geschah.

    Verbesserungen, die wir am Code vornehmen konnten, bezogen sich auf:

    • stabilere Funktionalität der Volumens-Erhöhung nach einem SL-Deal

    • das Sicherstellen, dass immer nur ein Deal gleichzeitig eröffnet ist

    • korrekte Rundung der Lotsizes nach der Volumens-Erhöhung, damit die Folge-Deals immer ausgeführt werden können.

    Ab nächstem Freitag kann dieser EA auch Ihre Trading-Arbeit erleichtern

    Wenn alles nach Plan verläuft, erhalten Sie als Blog-Leser und Empfänger meiner Freitagsmail nächste Woche eine Einladung zur Premiere des EA’s mFX-OpenRangeBreakoutDELUXE - ein LIVE-Webinar-Event mit Verkaufsstart und speziellem Angebot für Kunden unseres Partnerbrokers JFD Bank. Am besten hier schon mal ein Konto eröffnen und entsprechend Ihrer Gesamtanlagestrategie kapitalisieren.

    Noch ohne dass ich mir irgendwelche tieferen Gedanken zu den Einstellung des neuen Trading Robots gemacht habe, bin ich überrascht, wie meine eher zufällig gewählten Testeinstellungen Stand jetzt (Donnerstag, 13.6. um 13:30 Uhr) das Demokontoguthaben schon vermehrt haben. Test-Symbole sind:

    1. EURUSD

    2. XAUUSD

    3. USDJPY

    4. AAPL

    5. .US30Cash

    6. .DE30Cash

    7. AUDNZD

    8. AUDUSD

    Natürlich kann dies reiner Zufall sein. Dass in der ORB-Trading-Systematik und somit im EA mFX-OpenRangeBreakoutDELUXE aber ein großes Gewinnpotenzial steckt, dafür sind erste gute Hinweise deutlich zu erkennen.

    Bleiben Sie daher informiert und lassen sich die Einladung zum bald anstehenden, kostenlosen Webinar zur Premiere des EA’s zukommen. Dazu melden Sie sich einfach gleich hier zu meinem Freitagsmail-Verteiler an, dann werden Sie direkt informiert nächste Woche:

    Herzliche Grüße und beste Trading-Erfolge
    Cristof Ensslin von mindful FX, Ihr EA-Programmierer

    Open Range Breakout DELUXE Version nimmt im ersten Workshop-Teil Form an

    Nachdem wir aus dem Basis-Workshop Open Range Breakout EA fertig programmieren, der letzte Woche zu Ende ging, eine schlagkräftige Basis-Version des Expert Advisors (EA) für MetaTrader 4 (MT4) erstellt haben, die

    1. eine in Uhrzeiten eingebbare Range erkennt und Ausbrüche daraus handelt

    2. effektives Risikomanagement durch Beschränkung der Anzahl der zu handelnden Ausbrüche pro Tag und automatische Errechnung der Lotsize aus einzusetzendem Kapital durchführt und

    3. per Range-abhängigem Dealmanagement wie z.B. Stop-Loss, Take-Profit, Break-Even-Funktionalität und Trailing-Stop die eröffneten Orders steuert,

    machen wir (14 Teilnehmer und ich) uns im diesen Dienstag gestarteten Aufbau-Workshop daran, eine mit noch mehr nützlichen Funktionalitäten ausgestattete DELUXE-Version dieses ORB-EA’s zu programmieren. In der ersten der drei Sessions lernten wir viel Brauchbares, wie z.B.

    1. Dealeröffnungen nur dann zuzulassen, wenn Rangegröße innerhalb vorgebbarer Größenordnung in Punkten liegt.

    2. was ein Punkt ist (vs. Pip oder Indexpunkt etc.) in MT4.

    3. wie wir einen eingebauten Indikator abrufen, hier: Average True Range (ATR).

    4. wie wir in den Eingabevariablen ein Dropdown-Menü für eine Timeframe-Abfrage erstellen.

    5. wie wir die Rangegrößen-Zulassung anhand eines Vielfachen des ATR’s messen und somit auf Volatilität und Preisniveau automatisch anzupassen.

    6. wie wir aus Indikatoren generierte Variablenwerte mittels der Comment()-Funktion überprüfen können.

    7. wie wir Funktionalitäten direkt nach deren Programmierung im Strategietester überprüfen.

    8. dass alle, wirklich alle mit && verknüpften Signal-Bedingungen erfüllt sein müssen und somit keine Hierarchie besteht.

    9. die Lotsize zu erhöhen nach einem Verlustdeal (weil uns die Zeit ausging trotz Überstunden, müssen wir hieran noch weiter feilen, aber ansatzweise steht diese Funktionalität schon).

    10. die Verwendung der Exponential-Rechnung durch Funktion MathPow().

    11. das Ausschalten von Funktionalitäten (hier: Lotsizeerhöhung nach Verlustdeal) durch Nutzung von vorhandenen Eingabevariablen (hier: Eingabevariable auf 0 setzen) statt durch Einführung zusätzlicher true/false Variablen.

    12. wie wir in den Eingabevariablen visuelle Ordnung herstellen können.

    13. Fehlermeldungen zu deuten durch Link: https://docs.mql4.com/constants/errorswarnings/errorcodes

    Da ist hoffentlich eine ganze Menge an Nützlichem hängen geblieben. Nächste Woche geht’s weiter im Text!

    Open Range Breakout EA Infos per Email erhalten

    Bitte informieren Sie mich sofort, sobald es Neues zum ORB-EA gibt, per Email 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

      Bis dahin alles Gute und beste Programmier- und Tradingerfolge
      Cristof Ensslin von mindful FX, Ihr EA-Programmierer

      Ein Ausbruch pro Kerze jetzt handelbar mit mFX-HochTiefAusbruch EA

      Vermehrt habe ich in den letzten Wochen und Monaten von Käufern unseres MT4 Expert Advisors mFX-HochTiefAusbruch den Wunsch gehört, dass die Mindest-Wartezeit zwischen zwei Deals nicht nur in Minuten angegeben werden kann. Vielmehr wird für diesen Range-Ausbruchs-Robot gewünscht, dass die Mindest-Wartezeit sich nach Beginn einer neuen Kerze von selbst erledigt und somit sofort ab Beginn einer neuen Kerze ein neuer Ausbruchs-Deal erzeugt werden kann.

      Ein Kunde beschreibt dies in folgendem Szenario:

      Ausbruch aus der vorhergehenden Stundenkerze, also immer ein Trade pro Stunde (sofern kein Außen- oder Innenstab). Nach Tradebeendigung wird auf den nächsten Stundenschluß gewartet und dann wieder der Ausbruch durch das Hoch/Tief gehandelt.

      Mit der Einstellung Mindestzeit/Wartezeit [des EA’s mFX-HochTiefAusbruch] kann ich jedoch nur eine Zeit
      in Minuten bis zum nächsten Trade einstellen. Wenn also um 10:45 Uhr ein Trade beendet wird und die Wartezeit auf 30 Minuten steht, kann der nächste Trade erst um 11:15 Uhr ausgeführt werden. Ich möchte aber erreichen, dass der nächste Trade bereits um 11:00, also zum Stundenschluss ausgeführt werden kann.

      Wie kann man das in den Einstellungen berücksichtigen?
      — J.H., Käufer des Breakout-EA's mFX-HochTiefAusbruch

      In der neuen Version v1.70, die ab sofort hier unter diesem Link käuflich erhältlich ist, ist dies nun möglich. Sie können darin einfach den neu eingeführten EA-Eingabe-Parameter Reset_NeueKerze auf “True”, also JA, einstellen. Die Wartezeit stellen Sie gleichzeitig am besten gleich der Minutenzahl des Chart-Timeframes ein: fürs Trading im H1-Timeframe wäre somit die Eingabe von 60 passend. Siehe folgender Screenshot des neuen Eingabefensters:

      Damit erreichen Sie, dass nach einer Dealeröffnung wegen Breakout aus der Range der letzten Kerze, auch wenn diese in der ersten Sekunde einer Kerze geschieht, auf alle Fälle bis zum Kerzenbeginn der Folgeperiode auf ein neues Signal gewartet wird. Mit Beginn eben dieser Folgeperiode wird aber die Wartezeit gelöscht, so dass ein neuer Ausbruchsdeal geschehen kann, auch wenn der vorangegangene Ausbruch erst wenige Sekunden vor Kerzenende getradet wurde.

      Möchten Sie die Trading-Strategie “Ausbruch aus einer gleitenden Range” mittels unseres Bestseller-EA’s mFX-HochTiefAusbruch in Ihr eigenes Trading aufnehmen und automatisieren? Dann finden Sie hier unter diesem Link alle Infos zum EA sowie zum ab 95 EUR käuflichen Download.

      Kostenlose Updates

      Wenn Sie den EA innerhalb der letzten 6 Monate (Variante EX4) bzw. 12 Monate (Variante MQ4) gekauft haben, finden Sie die neue Version in Ihrem persönlichen Download-Portal bereit für Sie zum Download.

      Beste Trading-Erfolge wünscht Ihnen
      Cristof Ensslin von mindful FX, Ihrem EA-Programmierer

      mFX-HochTiefAusbruch Updates per Email

       Ja, ich möchte eine Email erhalten, wenn neue Programm-Versionen des Expert Advisors mFX-HochTiefausbruch (EA für MT4) verfügbar werden: 

        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

        Wie programmiert man einen EA, damit Range-Ausbrüche nur auf Schlusskursbasis getradet werden?

        In diesem Blogpost zeige ich Ihnen, wie Sie einem Expert Advisor (EA) für MetaTrader 4 (MT4) sagen können, dass er Signale nur auf Schlusskursbasis handeln soll. Das bedeutet, dass zum Eröffnungstick einer jeden Kerze der gerade festgestellte Kerzenschluss der Vorperiode analysiert wird. Das geschieht dann anstelle der ständigen Tick-für-Tick-Beobachtung.

        Ein Beispiel anhand unseres mFX-HochTiefAusbruch EA's: dieser vergleicht bislang bei jedem Kurstick, ob der aktuelle Bid-Kurs höher oder tiefer als die Handelsspanne der letzten 24 abgeschlossenen Kerzen liegt, wobei die Periodenanzahl '24' einstellbar ist durch den EA-Nutzer. Wenn ein Kursausbruch aus dieser gleitenden Range auf dieser kontinuierlichen Beobachtungsbasis vorliegt, tradet der EA vollautomatisch in Ausbruchsrichtung.

        Was aber, wenn Sie als Trader auf den Schlusskurs warten und damit eine eindeutige Signalbestätigung erhalten möchten, um viele voreilige Fehlsignale herauszufiltern? (Eine sehr ähnliche Schlusskurs-orientierte Ausbruchsstrategie hat übrigens die legendären Turtle Trader aus Chicago berühmt und reich gemacht.)

        Um ein Chart-Beispiel für Ausbruch auf Schlusskursbasis und Fehlausbruch auf kontinuierlicher Beobachtungsbasis zu betrachten, sehen Sie sich bitte obiges Video von Minute 0:27 bis Minute 1:24 an. Dann sehen Sie sofort, was ich meine.

        Jetzt zeige ich Ihnen die Elemente im MQL4-Code des EA's, die notwendig sind, um dieses Ziel zu erreichen. Geänderte oder neue Codebestandteile werde ich dabei in Fettschrift darstellen.

        Schritt 1: EA-Datei unter neuem Namen abspeichern und Versionsnummer und Datum ändern

        Zunächst öffnen wir die mq4-Datei des EA's mFX-HochTiefAusbruch, die wir schon haben, und speichern sie unter einem neuen Namen (mFX-HochTiefAusbruch_v1.50) ab. Damit stellen wir sicher, dass wir jederzeit zur Ausgangs-Version v1.40 zurück kehren können, von der wir wissen, dass sie einwandfrei funktioniert.

        Nun ändern wir die Versionsnummer und das Erstellungsdatum ab, um unsere Arbeit im EA jederzeit identifizieren können. Die geänderte Code-Zeile lautet:

        #property version "1.50" // 14.08.2018

        Die neue Versionsnummer in Anführungszeichen wird nun im Reiter "Allgemein" des EA-Eigenschaften-Fensters ohne Anführungszeichen angezeigt.

        Schritt 2: Neue Eingabevariable definieren

        Wir fügen nun im Code-Block der Eingabevariablen eine neue durch den EA-Nutzer in den EA-Eingaben einstellbare boolesche Variable ein, also ein True/False- bzw. An/Aus-Schalter. Damit können wir später in der Nutzung des fertigen EA's zwischen alter und neuer Version hin und her springen, z.B. um in Tests festzustellen, in welcher Marktphase die ständige Ausbruchsbeobachtung besser ist und wann wir lieber die Schlusskursbetrachtung bevorzugen sollten.

        Die neue, eingefügte Code-Zeile lautet:

        extern bool AusbruchNurAufSchlusskursBasis = true ;

        Schritt 3: Eröffnungstick einer neuen Kerze erkennen

        Als nächstes benötigen wir einen Mechanismus, der feststellt, wann eine neue Kerze eröffnet wurde. Denn im Moment der neuen Kerzeneröffnung liegt uns effektiv ein gerade abgeschlossener Kerzenschlusskurs vor, den der EA auf Range-Ausbruch hin untersuchen soll.

        Dazu brauchen wir zunächst eine neue Datum-und-Zeit-Variable (Variablentyp "datetime" in MQL4) auf globaler Basis, also außerhalb aller Funktionen definiert. Diese Variable kann somit in der OnInit-Funktion einen ersten Wert erhalten, der dann einfach in der OnTick-Funktion verwertet werden kann.

        Wir nennen sie "CurrentTimeStamp", also der Zeitstempel der aktuellen Kerze, und fügen diese Variable im relevanten Code-Block zu schon bestehenden, global verfügbaren datetime-Variablen des EA's hinzu:

        datetime SignalTime, Waitzeit, WaitzeitTP, CurrentTimeStamp ;    

        Schritt 4: neue Variable mit erstem Wert belegen  

        In der OnInit-Funktion, die einmalig bei jedem Start des EA's durchlaufen wird, lassen wir den EA nun die neue Variable CurrentTimeStamp mit dem ersten Wert belegen. Das nennt sich auch "initialisieren".

        Innerhalb der geschweiften Klammern der OnInit-Funktion fügen wir folgende Code-Zeile ein:

        CurrentTimeStamp = Time[0] ;

        Time[0] fragt den Zeitstempel (Time) der aktuellen Kerze ([0]) ab. Time[1] wäre der Zeitstempel der zuletzt abgeschlossenen Kerze, Time[2] der davor etc.

        Schritt 5: Tick für Tick den Chart auf neue Kerze hin überprüfen

        Nun bewegen wir uns zur OnTick-Funktion. Das ist der Code-Bestandteil, in dem Sie definieren, was der EA bei jedem Empfang eines Kursticks des gewählten Chartsymbols berechnen und ausführen soll.

        Hier überprüfen wir nun jeden Tick, ob der Zeitstempel der aktuellen Kerze noch dem in der Variable CurrentTimeStamp festgehaltenen Wert entspricht. Wenn ja, befinden wir uns offensichtlich noch in der selben Kerze wie zum vorherigen Tick. Wenn nein, was in MQL4 durch die Zeichenkombination != geprüft wird, dann ist soeben eine neue Kerze eröffnet worden.

        In diesem letzteren Fall müssen wir eine zuvor neu definierte Wahr-Falsch-Variable NewBar (englisch für neuer Balken, neue Kerze) für diesen einen Kurstick auf WAHR (true) stellen sowie die CurrentTimeStamp-Variable auf den jetzt vorhandenen Zeitstempel anpassen.

        Das alles geht folgendermaßen:

        bool NewBar = false ;
        if (Time[0]  != CurrentTimeStamp)
           {
           NewBar = true ;
           CurrentTimeStamp = Time[0] ;
           }

        Für den Rest des OnTick-Codes, also alles, was unterhalb dieses eben eingefügten Code-Blocks geschrieben ist, kann nun die Variable NewBar, die nun exakt einen Tick lang auf True steht, als Hinweis auf die Kerzeneröffnungs-Situation verwertet werden.

        Schritt 6: Handelssignal auf beide Ausbruchsmethoden anpassen

        Den bestehenden Code, der ein Ausbruchs-Handelssignal in der kontinuierlichen Betrachtungsmethode auslöst, müssen wir nun daraufhin anpassen, dass er nur noch dann durchlaufen wird, wenn eben diese Ausbruchsmethode ausgewählt ist. Wir erinnern uns an Schritt 3: das wird dadurch durch den EA-Nutzer gesteuert, dass die Eingabevariable AusbruchNurAufSchlusskursBasis auf False gesetzt wird.

        Das fragen wir nun so ab:

        if ( !AusbruchNurAufSchlusskursBasis && Bid > LongLevel && HandelsRichtung >= 0 ) LongSignal = true ;
        if( !AusbruchNurAufSchlusskursBasis && Bid < ShortLevel && HandelsRichtung <= 0 ) ShortSignal = true ;

        Hinweise: LongLevel und ShortLevel sind Variablen, die aus Range-Untergrenze bzw. Range-Obergrenze ermittelt werden, siehe weiter unten. HandelsRichtung ist eine Eingabevariable des EA's, die die erlaubte Handels-Richtung definiert, also Long (1), Short (-1), oder Long&Short (0).

        Nun ergänzen wir Code für den Fall, dass AusbruchNurAufSchlusskursBasis auf True eingestellt ist:

        if ( AusbruchNurAufSchlusskursBasis && NewBar && Close[1] > LongLevel && HandelsRichtung >= 0 ) LongSignal = true ;
        if ( AusbruchNurAufSchlusskursBasis && NewBar && Close[1] < ShortLevel && HandelsRichtung <=0 ) ShortSignal = true ;

        Damit fragen wir nun diese Ausbruchslogik nur einmal pro Kerze ab (NewBar, also zum ersten Tick einer Kerze) und vergleichen dann den gerade festgestellten Schlusskurs (Close[1]) mit der Range.

        Schritt 7: Range aus den richtigen Kerzen ermitteln

        Kommen wir nun zur Range-Ermittlung, also zur Berechnung der Variablen LongLevel und ShortLevel. Diese müssen wir nun noch so anpassen, dass sie bei der Schlusskurs-basierten Verwendung unseres Ausbruch-EA's die Range aus den richtigen Kerzen ermittelt.

        Wir befinden uns ja im Moment der Kerzeneröffnung schon in einer neuen Kerze, wollen aber nun die Vorkerze mit den vor dieser Vorkerze liegenden Extremkursen vergleichen. Daher müssen wir die Höchst- und Tiefstkursabfrage um eine Kerze nach links verschieben, den Abfrage-Shift also um eins erhöhen.

        Das machen wir so:

        int barshift = 0 ;
        if ( AusbruchNurAufSchlusskursBasis ) barshift = 1 ;
        double RangeUp = High [ iHighest ( NULL, 0, MODE_HIGH, HochTief_Perioden, 1+barshift ) ] ;
        double RangeLo = Low [ iLowest ( NULL, 0, MODE_LOW, HochTief_Perioden, 1+barshift ) ] ;
        double LongLevel = RangeUp + ( Puffer_Pips * UsePoint ) ;
        double ShortLevel = RangeLo - ( Puffer_Pips * UsePoint ) ;

        LongLevel und ShortLevel werden in dieser Programmierweise durch einen Zwischenschritt berechnet. Zunächst berechnen wir die Variablen RangeUp und RangeLo, die den höchsten Höchstkurs bzw. den tiefsten Tiefstkurs innerhalb der durch die Eingabevariable HochTief_Perioden in Anzahl Kerzen definierten Rangedauer zugewiesen bekommen. Danach adjustieren wir die Range noch um einen manuellen Puffer, der durch die Eingabevariable Puffer_Pips in Pips vom EA-Nutzer definiert wird. UsePoint enthält dann unsere Pip-Definition: 1 Pip = 0,0001 Kursbewegung, wenn 4- oder 5-stellig quotiert wird; 1 Pip = 0,01 Kursbewegung, wenn 3-stellig quotiert wird; 1 Pip = 1,00 Kursbewegung, wenn 0-, 1- oder 2-stellig quotiert wird.

        Diese sieben Schritte sind nun im MQL4-Code für den EA mFX-HochTiefAusbruch eingefügt, wodurch Sie nun ab sofort in Deals einsteigen können, so wie die Turtle Traders aus Chicago es getan hätten - nur mit dem klitzekleinen Unterschied, dass Sie es mit einem EA voll automatisch haben können anstatt manuell die Märkte überwachen zu müssen.

        Wollen Sie mehr EA-programmieren lernen? Kommen Sie einfach zu meinem Präsenz-Workshop MQL4-Intensivkurs - EA-programmieren lernen in Stuttgart im Oktober. Klicken Sie hier oder auf das Bild, um sich zu informieren und dann anzumelden.

        Herzliche Grüße und beste Wünsche für Ihr eigenes Trading
        Ihr Cristof Ensslin von mindful FX, Ihr EA-Programmierer