English Русский 日本語
preview
Vom Neuling zum Experten: Animierte Nachrichtenschlagzeile mit MQL5 (VII) – Post-Impact-Strategie für den Nachrichtenhandel

Vom Neuling zum Experten: Animierte Nachrichtenschlagzeile mit MQL5 (VII) – Post-Impact-Strategie für den Nachrichtenhandel

MetaTrader 5Beispiele |
96 0
Clemence Benjamin
Clemence Benjamin

Inhalt:


Einführung

Die Strategie, die wir im vorigen Artikel untersucht haben, konzentrierte sich auf die Platzierung schwebender Aufträge kurz vor einer aufsehenerregenden Pressemitteilung. Ziel war es, Gewinne aus den starken Kursbewegungen zu erzielen, die häufig auf solche Ereignisse folgen. Dieser Ansatz kann zwar effektiv sein, aber es gibt Szenarien, in denen er zu kurz greift, z. B. wenn einer der Aufträge ausgelöst wird, aber das Take-Profit-Niveau nicht erreicht und stattdessen der Stop-Loss erreicht wird.

Glücklicherweise haben wir in unserer früheren Implementierung eine Logik in den EA eingebaut, um die gegenüberliegende schwebende Order automatisch zu stornieren, sobald eine solche ausgelöst wird. Diese Automatisierung ist von entscheidender Bedeutung, da sie verhindert, dass beide Aufträge während eines „Whipsaw“ aktiviert werden, was sonst zu einem doppelten Verlust führen könnte. Da sich der EA auf die Geschwindigkeit des Algorithmus verlässt, um diese Entscheidungen innerhalb von Millisekunden zu treffen, bietet er ein Maß an Präzision, das manuell kaum zu erreichen ist.

Möchte ein Händler dieses „Whipsaw“-Risiko jedoch gänzlich vermeiden, wird eine alternative Strategie erforderlich. In dieser Diskussion richten wir unsere Aufmerksamkeit auf eine Post-News-Handelsstrategie – die Ausführung von Handelsgeschäften nach dem aufsehenerregenden Ereignis – die als Ergänzung und Erweiterung der Möglichkeiten des bestehenden News Headline EA konzipiert ist.

Im nächsten Abschnitt werden wir uns mit dem Integrationsplan für diese Strategie befassen und ihre Durchführbarkeit anhand der Analyse des Chart-Verlaufs und der Implementierung der Live-Logik beurteilen.


Erkundung des Strategiekonzepts

Für unsere Tests und Untersuchungen wollen wir historische Chart-Daten verwenden, um das Marktverhalten nach wichtigen Nachrichtenereignissen zu analysieren, insbesondere nach der Veröffentlichung der Non-Farm Payroll (NFP). Da die NFP-Ankündigungen regelmäßig stattfinden (in der Regel am ersten Freitag eines jeden Monats), sind sie leicht zu erkennen und stimmen mit bekannten Kalenderdaten überein. Daher sind sie ideal, um zu untersuchen, wie die Kurse in den Minuten und Stunden nach den Nachrichten reagieren.

Indem wir die NFP-Termine im Wirtschaftskalender berücksichtigen und die minutengenauen Chart-Daten des Zeitrahmens rund um diese Ereignisse beobachten, können wir wertvolle Erkenntnisse darüber gewinnen, wie sich verschiedene Instrumente nach der Veröffentlichung der Nachrichten verhalten. Dieser Ansatz ermöglicht es uns, unser Handelsinstrument des After-Impact zu entwickeln und zu verfeinern, das die bestehende Strategie für schwebende Aufträge ergänzt, indem es Einstiegsmöglichkeiten bietet, sobald sich die anfängliche Volatilität gelegt hat und sich eine klare Richtung abzeichnet.

Diese Methode des historischen Testens ermöglicht es uns, die Handelslogik auch außerhalb der Echtzeit-Marktbedingungen zu simulieren und zu verfeinern, was eine effektive Möglichkeit darstellt, unser Post-News-Execution-Framework vor der vollständigen Implementierung zu validieren. Im Folgenden finden Sie weitere Einzelheiten.

Erforschung der Preisaktionsgeschichte mit einem nutzerdefinierten Expert Advisor

In diesem Abschnitt werden wir einen Expert Advisor (EA) in MQL5 entwickeln, der es uns ermöglicht, mit dem MetaTrader 5 Strategy Tester durch historische Chart-Daten zu „reisen“. Ziel ist es, das Kursgeschehen kurz nach der Veröffentlichung wichtiger wirtschaftlicher Daten – insbesondere der Non-Farm Payroll (NFP) – manuell zu beobachten und wertvolle Erkenntnisse für die Entwicklung unserer Post-Impact-Handelsstrategie zu gewinnen.

Diese Phase dient als praktische Lernmöglichkeit, um unser Verständnis der MQL5-Programmierung zu vertiefen und uns gleichzeitig mit der Funktionsweise des Strategy Testers vertraut zu machen. Indem wir uns auf bestimmte historische Ereignisse konzentrieren, können wir reale Marktbedingungen simulieren und analysieren, wie sich die Kurse in den Momenten nach aufsehenerregenden Nachrichten verhalten haben.

Die in dieser Testphase gewonnenen Erkenntnisse und Beobachtungen werden uns helfen, unsere Handelsannahmen zu validieren, bevor wir zur endgültigen Umsetzung übergehen. Letztendlich ist dies die Grundlage für die Integration einer verfeinerten Post-Impact-Handelslogik in den Haupt-EA für Nachrichtenschlagzeilen, die es ermöglicht, sich auf Nachrichten vorzubereiten und im Anschluss daran intelligent zu handeln.

Der Non-Farm Payrolls (NFP)-Bericht gehört zu den wichtigsten wirtschaftlichen Veröffentlichungen an den Finanzmärkten, insbesondere für Währungspaare, die den US-Dollar (USD) beinhalten. Ihre Ankündigung führt in der Regel zu sofortigen und oft starken Kursbewegungen, was sie zu einem idealen Kandidaten für Handelsstrategien sowohl vor als auch nach der Veröffentlichung von Nachrichten macht. Für das Testen und die Entwicklung von Strategien sind die wichtigsten USD-Paare wie EURUSD, GBPUSD, USDJPY und USDCHF die wichtigsten Instrumente, da sie am konsistentesten und deutlichsten auf die NFP-Veröffentlichungen reagieren. Dies macht sie zu perfekten Testgebieten für Algorithmen, die darauf abzielen, Volatilitätsmuster rund um wichtige Wirtschaftsnachrichten auszunutzen.

Bevor Sie sich mit der vollständigen Logik und Funktionalität des Expert Advisors NFP_Event_Replay.mq5 befassen, sollten Sie verstehen, wie Sie ein solches Tool programmieren. Starten Sie in MetaTrader 5 den MetaEditor, gehen Sie dann auf Datei/Neu/Expert Advisor... (Vorlage) und geben Sie einen Namen wie NFP_Event_Replay ein. Dadurch wird eine Grundstruktur mit OnInit(), OnDeinit() und OnTick() Funktionen erzeugt. Von dort aus können Sie mit dem Aufbau Ihrer Logik beginnen – beginnend mit Zeitprüfungen, der Identifizierung von Nachrichtentagen und Zeichenwerkzeugen – und das Skelett allmählich zu einem voll funktionsfähigen Hervorhebungsprogramm für historische Ereignisse ausbauen, wie in den folgenden Abschnitten beschrieben.

Diese Aufschlüsselung geht durch jeden Teil des EA und hilft sowohl Anfängern als auch fortgeschrittenen MQL5-Entwicklern zu verstehen, wie man vergangene NFP-Ereignisse auf historischen Charts mit Hilfe von Rechtecken, Zeitlogik und zeitzonenspezifischen Berechnungen programmatisch hervorhebt – eine leistungsstarke Methode, um After-News-Handelsstrategien visuell zu untersuchen und zu verfeinern.

1. Metadaten und Nutzereingaben

Zu Beginn des EA werden in den Metadaten der Autor, die Version und der Zweck des Expert Advisors beschrieben. Das Hauptmerkmal dieses Tools ist es, Händlern zu helfen, das NFP (Non-Farm Payroll) Marktverhalten im MetaTrader 5 Strategy Tester visuell wiederzugeben und zu studieren. Zwei Nutzereingaben – MinutesBefore und MinutesAfter – ermöglichen es dem Händler, die Größe des Fensters (in Minuten) vor und nach dem Ereignis festzulegen, in dem die Kursbewegung hervorgehoben wird. Dies ermöglicht eine individuelle Anpassung, je nachdem, wie viel von der Kursbewegung rund um die Pressemitteilung Sie untersuchen möchten.

input int MinutesBefore = 5;
input int MinutesAfter = 5;

2. Globale und Initialisierung

Globale Variablen werden deklariert, um den Namen des Rechtecks zu verwalten, das aktuelle Jahr und den aktuellen Monat zu verfolgen, in dem eine Zeichnung zuletzt erstellt wurde, und um wiederholte Warnmeldungen zu verhindern. Diese helfen bei der Steuerung des logischen Ablaufs und stellen sicher, dass Rechtecke nicht wiederholt am selben Tag gezeichnet werden und dass die Bereinigung während der Initialisierung und Deinitialisierung ordnungsgemäß durchgeführt wird.

string rectName = "NFP_Event_Window";
int drawnYear = 0, drawnMonth = 0;
bool alertShown = false;

3. Berechnung des ersten Freitags

Eines der wichtigsten Elemente der Logik ist die Bestimmung des Datums des ersten Freitags im Monat. Dies ist wichtig, da die NFP am ersten Freitag jedes Monats veröffentlicht wird. Der EA verwendet Kalenderberechnungen, um dieses Datum dynamisch auf der Grundlage des aktuellen Jahres und Monats zu ermitteln, sodass der EA in künftigen Jahren ohne Änderungen wiederverwendet werden kann.

//+------------------------------------------------------------------+
//| Calculate day of first Friday                                    |
//+------------------------------------------------------------------+
int GetFirstFriday(int year, int month)
{
    MqlDateTime dt = {0};
    dt.year = year;
    dt.mon = month;
    dt.day = 1;
    datetime first = StructToTime(dt);
    TimeToStruct(first, dt);
    
    // Calculate days to first Friday (5 = Friday)
    int daysToAdd = (5 - dt.day_of_week + 7) % 7;
    return 1 + daysToAdd;
}

4. IsFirstFriday Prüfung

Diese Funktion prüft, ob der aktuelle Zeitpunkt, der bearbeitet wird, auf den ersten Freitag des Monats fällt. Es stützt sich auf die frühere Logik des ersten Freitags und vergleicht den aktuellen Tag und Wochentag, um die Förderfähigkeit zu bestimmen. Diese Prüfung dient als Einfallstor, um unnötige Berechnungen oder Rechteckzeichnungen an Nicht-NFP-Tagen zu vermeiden.

//+------------------------------------------------------------------+
//| Check if date is first Friday                                    |
//+------------------------------------------------------------------+
bool IsFirstFriday(datetime time)
{
    MqlDateTime dt;
    TimeToStruct(time, dt);
    int firstFriday = GetFirstFriday(dt.year, dt.mon);
    return (dt.day_of_week == 5 && dt.day == firstFriday);
}

5. GetTimeGMTOffset

Diese Funktion bestimmt den lokalen Offset des Brokers von der GMT (UTC) auf der Grundlage der Serverzeit. Da NFP-Ereignisse in den USA angekündigt werden Eastern Time (je nach Sommerzeit UTC-4 oder UTC-5) ist dieser Offset erforderlich, um den Zeitstempel des Ereignisses korrekt zu konvertieren, damit er mit der Zeitzone des Brokers und der Kartenzeit übereinstimmt.

//+------------------------------------------------------------------+
//| Get UTC offset for a specific time                               |
//+------------------------------------------------------------------+
int GetTimeGMTOffset(datetime time)
{
    MqlDateTime dt;
    TimeToStruct(time, dt);
    datetime timeUTC = StructToTime(dt);
    return (int)(time - timeUTC);
}

6. EA-Initialisierung und Bereinigung

Wenn der EA initialisiert wird (OnInit), setzt er einen 1-Sekunden-Timer, der als Herzschlag fungiert und kontinuierlich überprüft, ob wir uns an einem relevanten NFP-Datum befinden. Bei der Deinitialisierung (OnDeinit) wird der Timer angehalten und das Rechteck-Objekt gelöscht, falls es gezeichnet wurde. Dadurch wird sichergestellt, dass die Testsitzungen sauber beginnen und keine Restgrafiken auf dem Chart hinterlassen.

//+------------------------------------------------------------------+
//| Program entry point                                              |
//+------------------------------------------------------------------+
int OnInit()
{
    EventSetTimer(1);
    return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Cleanup on exit                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
    EventKillTimer();
    ObjectDelete(0, rectName);
}

7. OnTimer: Das Herzstück der EA

Die Funktion OnTimer ist der Hauptausführungsblock, der jede Sekunde vom Timer aufgerufen wird. Es vermeidet redundante Verarbeitung, indem es auf Änderungen der aktuellen Kartenzeit prüft. Handelt es sich bei dem Tag um einen gültigen ersten Freitag, wird der Zeitstempel der NFP-Veröffentlichung für das aktuelle Jahr und den aktuellen Monat berechnet, eine eventuell erforderliche Zeitzonenverschiebung vorgenommen und dann geprüft, ob die aktuelle Zeit in das vom Nutzer definierte Rechteckfenster fällt. Wenn die Bedingungen erfüllt sind und die Zeichnung für den aktuellen Monat noch nicht stattgefunden hat, wird das Ereignisrechteck gezeichnet. Darüber hinaus werden Debug-Meldungen zur besseren Übersichtlichkeit beim Testen ausgegeben. Außerhalb der NFP-Tage setzt der EA die Tracking-Variablen zurück und entfernt alle bestehenden Zeichnungen.

//+------------------------------------------------------------------+
//| Timer handler - main logic                                       |
//+------------------------------------------------------------------+
void OnTimer()
{
    static datetime lastBarTime = 0;
    datetime now = TimeCurrent();
    
    if(now == lastBarTime) return;
    lastBarTime = now;
    
    MqlDateTime dtNow;
    TimeToStruct(now, dtNow);
    
    // Process only on first Fridays
    if(IsFirstFriday(now))
    {
        // Show alert once per day
        if(!alertShown)
        {
            Alert("NFP Day: Set tester replay speed to 70%");
            alertShown = true;
        }
        
        // Calculate exact NFP release time in UTC
        int releaseDay = GetFirstFriday(dtNow.year, dtNow.mon);
        datetime nfpUTC = GetNFPTimestamp(dtNow.year, dtNow.mon, releaseDay);
        
        // Convert to broker time (Zimbabwe CAT = UTC+2)
        int offset = GetTimeGMTOffset(now);
        datetime nfpBroker = nfpUTC + offset;
        
        // Calculate rectangle boundaries
        datetime startTime = nfpBroker - MinutesBefore*60;
        datetime endTime = nfpBroker + MinutesAfter*60;
        
        // Draw rectangle if in time window
        if(now >= startTime && now <= endTime)
        {
            if(drawnYear != dtNow.year || drawnMonth != dtNow.mon)
            {
                DrawEventWindow(startTime, endTime);
                drawnYear = dtNow.year;
                drawnMonth = dtNow.mon;
                
                // Debug output
                Print("NFP UTC Time: ", TimeToString(nfpUTC, TIME_MINUTES|TIME_SECONDS));
                Print("Broker Time: ", TimeToString(now, TIME_MINUTES|TIME_SECONDS));
                Print("NFP Broker Time: ", TimeToString(nfpBroker, TIME_MINUTES|TIME_SECONDS));
                Print("Event Window: ", TimeToString(startTime), " to ", TimeToString(endTime));
            }
        }
    }
    else
    {
        alertShown = false;
        if(drawnYear != 0 || drawnMonth != 0)
        {
            ObjectDelete(0, rectName);
            drawnYear = 0;
            drawnMonth = 0;
        }
    }
}

8. GetNFPTimestamp: NFP um 8:30 Uhr Ostküste

Diese Funktion erstellt den genauen UTC-Zeitstempel der NFP-Freigabe. Es berücksichtigt die US-Sommerzeit, um zu bestimmen, ob die Freigabezeit als 12:30 UTC (Sommer) oder 13:30 UTC (Winter) gelten soll. Dieser genaue Zeitstempel ist für die Synchronisierung des Chart-Fensters mit dem realen Ereigniszeitpunkt unerlässlich.

//+------------------------------------------------------------------+
//| Create precise UTC timestamp for NFP event                       |
//+------------------------------------------------------------------+
datetime GetNFPTimestamp(int year, int month, int day)
{
    MqlDateTime dt = {0};
    dt.year = year;
    dt.mon = month;
    dt.day = day;
    
    // Determine correct UTC hour based on US daylight saving
    // US Eastern Time: EST = UTC-5 (winter), EDT = UTC-4 (summer)
    // NFP always releases at 8:30 AM US Eastern Time
    bool isDst = IsUSDST(StructToTime(dt));
    dt.hour = isDst ? 12 : 13;  // 12:30 UTC (summer) or 13:30 UTC (winter)
    dt.min = 30;
    
    return StructToTime(dt);
}

9. Logik der Sommerzeit

Um die Änderungen der Sommerzeit in den USA zu berücksichtigen, berechnet diese Funktion, ob ein bestimmtes Datum in das Zeitfenster der Sommerzeit fällt. Nach amerikanischem Recht beginnt die Sommerzeit am zweiten Sonntag im März und endet am ersten Sonntag im November. Durch die Berechnung der Grenzen für jedes Jahr und die Überprüfung des Datums anhand dieser Grenzen passt der EA seine Zeitstempelberechnung im Laufe des Jahres dynamisch an.

//+------------------------------------------------------------------+
//| Check if US is in daylight saving time                           |
//+------------------------------------------------------------------+
bool IsUSDST(datetime time)
{
    MqlDateTime dt;
    TimeToStruct(time, dt);
    
    // US DST rules (since 2007):
    // Starts: Second Sunday in March at 2:00 AM
    // Ends: First Sunday in November at 2:00 AM
    
    // Calculate DST start
    datetime dstStart = GetNthDayOfMonth(dt.year, 3, 0, 2) + (2 * 3600);  // Second Sunday in March at 2:00 AM
    // Calculate DST end
    datetime dstEnd = GetNthDayOfMonth(dt.year, 11, 0, 1) + (2 * 3600);    // First Sunday in November at 2:00 AM
    
    return (time >= dstStart && time < dstEnd);
}

10. GetNthDayOfMonth

Diese Nutzenfunktion ermittelt das n-te Vorkommen eines bestimmten Wochentags in einem bestimmten Monat. So kann beispielsweise der zweite Sonntag im März oder der erste Sonntag im November zurückgegeben werden, der zur Bestimmung der Sommerzeitumstellung verwendet wird. Diese Funktion macht den EA robust und zukunftsfähig, sodass er sich über Jahre hinweg automatisch anpassen kann, ohne dass Aktualisierungen erforderlich sind.

//+------------------------------------------------------------------+
//| Get nth day of week in a month                                   |
//+------------------------------------------------------------------+
datetime GetNthDayOfMonth(int year, int month, int dayOfWeek, int nth)
{
    MqlDateTime dtFirst = {0};
    dtFirst.year = year;
    dtFirst.mon = month;
    dtFirst.day = 1;
    datetime first = StructToTime(dtFirst);
    
    MqlDateTime dt;
    TimeToStruct(first, dt);
    int firstDayOfWeek = dt.day_of_week;
    
    // Calculate days to the first occurrence
    int daysToAdd = (dayOfWeek - firstDayOfWeek + 7) % 7;
    datetime firstOccurrence = first + daysToAdd * 86400;
    
    // Add weeks for nth occurrence
    if(nth > 1)
    {
        firstOccurrence += (nth - 1) * 7 * 86400;
    }
    
    // Verify if still in same month
    TimeToStruct(firstOccurrence, dt);
    if(dt.mon != month)
    {
        // Adjust to last occurrence in month
        firstOccurrence -= 7 * 86400;
    }
    
    return firstOccurrence;
}

11. Zeichnen des Rechtecks auf dem Chart

Sobald das richtige Zeitfenster für den NFP bestimmt ist, erstellt der EA ein Rechteck, das diesen Zeitraum umfasst. Das Rechteck deckt die gesamte sichtbare Preisspanne ab und ist mit eindeutigen visuellen Eigenschaften gestaltet, wie z. B. gestrichelten Rändern und einer hellblauen Hintergrundfüllung. Wenn ein Rechteck bereits aus einem früheren Lauf existiert, wird es zunächst gelöscht, um Überschneidungen oder Duplikate zu vermeiden.

//+------------------------------------------------------------------+
//| Draw the NFP event window on chart                               |
//+------------------------------------------------------------------+
void DrawEventWindow(datetime start, datetime end)
{
    ObjectDelete(0, rectName);
    
    double high = ChartGetDouble(0, CHART_PRICE_MAX);
    double low = ChartGetDouble(0, CHART_PRICE_MIN);
    
    if(ObjectCreate(0, rectName, OBJ_RECTANGLE, 0, start, high, end, low))
    {
        ObjectSetInteger(0, rectName, OBJPROP_COLOR, clrDodgerBlue);
        ObjectSetInteger(0, rectName, OBJPROP_STYLE, STYLE_DASHDOT);
        ObjectSetInteger(0, rectName, OBJPROP_WIDTH, 2);
        ObjectSetInteger(0, rectName, OBJPROP_BACK, true);
        ObjectSetInteger(0, rectName, OBJPROP_FILL, true);
        ObjectSetInteger(0, rectName, OBJPROP_BGCOLOR, C'240,248,255'); // AliceBlue
    }
}

12. OnTick() (Platzhalter)

Obwohl der EA so konzipiert ist, dass er mit zeitbasierten Ereignissen und nicht mit Preis-Ticks arbeitet, ist aus Gründen der Vollständigkeit und Kompatibilität dennoch eine leere OnTick-Funktion definiert. Sie dient in dieser Implementierung keinem Zweck, wird aber von der Struktur des MetaTrader EA benötigt.

Testen der NFP_Event-Wiederholung

Nachdem wir den kompletten EA aus den obigen Codeabschnitten erfolgreich kompiliert hatten, testeten wir seine Funktionalität mit dem Visualisierungsmodus des Strategy Testers in MetaTrader 5. Die Ergebnisse waren beeindruckend – an jedem identifizierten NFP-Veröffentlichungstag hob der EA das Ereignisfenster mit einem clrAliceBlue-Rechteck genau hervor. Anhand dieser visuellen Markierung konnten wir das Kursverhalten im Umfeld der NFP-Ankündigung leicht erkennen. Insbesondere das Replay-Segment von Juni 2024 bis Dezember 2024 zeigt deutlich die typische Volatilitätsspitze, die mit dem NFP verbunden ist, was bestätigt, dass der EA den Ereigniszeitraum korrekt identifiziert und markiert. Unterhalb der Ergebnisse habe ich einige der aufgezeichneten Chartausschnitte zusammengestellt, die nun analysiert werden, um eine robuste After-Impact-Handelsstrategie auf der Grundlage des Kursverhaltens nach dem NFP zu entwickeln.

Strategy Tester-NFP_ Event_Replay.ex5

Testen der NFP_Event_Replay

Tester-Protokoll:

2025.07.17 19:20:59.343 USDJPY.0: symbol to be synchronized
2025.07.17 19:20:59.346 USDJPY.0: symbol synchronized, 3960 bytes of symbol info received
2025.07.17 19:20:59.347 USDJPY.0: history synchronization started
2025.07.17 19:20:59.514 USDJPY.0: load 31 bytes of history data to synchronize in 0:00:00.013
2025.07.17 19:20:59.514 USDJPY.0: history synchronized from 2024.05.26 to 2025.07.20
2025.07.17 19:20:59.547 USDJPY.0: start time changed to 2024.05.27 00:00 to provide data at beginning
2025.07.17 19:20:59.548 USDJPY.0,M1: history cache allocated for 224402 bars and contains 173 bars from 2024.05.26 21:05 to 2024.05.26 23:59
2025.07.17 19:20:59.548 USDJPY.0,M1: history begins from 2024.05.26 21:05
2025.07.17 19:20:59.563 USDJPY.0,M1 (Deriv-Demo): every tick generating
2025.07.17 19:20:59.563 USDJPY.0,M1: testing of Experts\NFP_Event_Replay.ex5 from 2024.01.01 00:00 to 2024.12.31 00:00 started with inputs:
2025.07.17 19:20:59.563   MinutesBefore=5
2025.07.17 19:20:59.563   MinutesAfter=5
2025.07.17 19:29:59.082 2024.06.07 00:00:00   Alert: NFP Day: Set tester replay speed to 70%
2025.07.17 19:30:02.995 2024.06.07 12:25:00   NFP UTC Time: 12:30:00
2025.07.17 19:30:02.995 2024.06.07 12:25:00   Broker Time: 12:25:00
2025.07.17 19:30:02.995 2024.06.07 12:25:00   NFP Broker Time: 12:30:00
2025.07.17 19:30:02.995 2024.06.07 12:25:00   Event Window: 2024.06.07 12:25 to 2024.06.07 12:35
2025.07.17 19:30:41.055 2024.07.05 00:00:00   Alert: NFP Day: Set tester replay speed to 70%
2025.07.17 19:30:41.717 2024.07.05 12:25:00   NFP UTC Time: 12:30:00
2025.07.17 19:30:41.717 2024.07.05 12:25:00   Broker Time: 12:25:00
2025.07.17 19:30:41.717 2024.07.05 12:25:00   NFP Broker Time: 12:30:00
2025.07.17 19:30:41.717 2024.07.05 12:25:00   Event Window: 2024.07.05 12:25 to 2024.07.05 12:35
2025.07.17 19:30:55.060 2024.08.02 00:00:00   Alert: NFP Day: Set tester replay speed to 70%
2025.07.17 19:30:55.551 2024.08.02 12:25:00   NFP UTC Time: 12:30:00
2025.07.17 19:30:55.551 2024.08.02 12:25:00   Broker Time: 12:25:00
2025.07.17 19:30:55.551 2024.08.02 12:25:00   NFP Broker Time: 12:30:00
2025.07.17 19:30:55.551 2024.08.02 12:25:00   Event Window: 2024.08.02 12:25 to 2024.08.02 12:35
2025.07.17 19:31:15.547 2024.09.06 00:00:00   Alert: NFP Day: Set tester replay speed to 70%
2025.07.17 19:31:16.250 2024.09.06 12:25:00   NFP UTC Time: 12:30:00
2025.07.17 19:31:16.250 2024.09.06 12:25:00   Broker Time: 12:25:00
2025.07.17 19:31:16.250 2024.09.06 12:25:00   NFP Broker Time: 12:30:00
2025.07.17 19:31:16.250 2024.09.06 12:25:00   Event Window: 2024.09.06 12:25 to 2024.09.06 12:35
2025.07.17 19:31:30.214 2024.10.04 00:00:00   Alert: NFP Day: Set tester replay speed to 70%
2025.07.17 19:31:30.699 2024.10.04 12:25:00   NFP UTC Time: 12:30:00
2025.07.17 19:31:30.699 2024.10.04 12:25:00   Broker Time: 12:25:00
2025.07.17 19:31:30.699 2024.10.04 12:25:00   NFP Broker Time: 12:30:00
2025.07.17 19:31:30.699 2024.10.04 12:25:00   Event Window: 2024.10.04 12:25 to 2024.10.04 12:35
2025.07.17 21:23:38.212 2024.11.01 00:00:00   Alert: NFP Day: Set tester replay speed to 70%
2025.07.17 21:23:38.448 2024.11.01 12:25:00   NFP UTC Time: 12:30:00
2025.07.17 21:23:38.448 2024.11.01 12:25:00   Broker Time: 12:25:00
2025.07.17 21:23:38.448 2024.11.01 12:25:00   NFP Broker Time: 12:30:00
2025.07.17 21:23:38.448 2024.11.01 12:25:00   Event Window: 2024.11.01 12:25 to 2024.11.01 12:35
2025.07.17 21:23:47.754 2024.12.06 00:00:00   Alert: NFP Day: Set tester replay speed to 70%
2025.07.17 21:23:47.940 2024.12.06 13:25:00   NFP UTC Time: 13:30:00
2025.07.17 21:23:47.940 2024.12.06 13:25:00   Broker Time: 13:25:00
2025.07.17 21:23:47.940 2024.12.06 13:25:00   NFP Broker Time: 13:30:00
2025.07.17 21:23:47.940 2024.12.06 13:25:00   Event Window: 2024.12.06 13:25 to 2024.12.06 13:35

Analyse der NFP-Ereignisse nach Impact

Der EA hat uns effektiv geholfen, die NFP-Tage auf der Grundlage unserer individuellen Logik zu ermitteln. Während die frühere animierte Wiedergabe einen schnellen Überblick bot, war sie aufgrund der hohen Wiedergabegeschwindigkeit nicht ideal, um die feinen Details des Kursgeschehens genau zu untersuchen. Aus diesem Grund habe ich im Folgenden eine Reihe von Standbildern zusammengestellt, die eine gezieltere und detailliertere Analyse ermöglichen. Diese Momentaufnahmen bieten einen klareren Überblick über die Marktreaktionen rund um das NFP-Ereignisfenster, wodurch es einfacher wird, wiederkehrende Muster zu erkennen und praktikable Strategien zu entwickeln, um die Bewegungen nach dem NFP zu nutzen. Sehen Sie sich die Bilder an und lesen Sie meine Gedanken direkt unter den Bildern.

NFP Juni 2024

NFP Juni 2024

NFP Juli 2024

NFP Juli 2024

NFP Aug 2024

NFP Aug 2024

NFP September 2024

NFP September 2024

NFP Okt 2024

NFP Oktober 2024

NFP Nov 2024

NFP Nov 2024

NFP Dez 2024

NFP Dezember 2024

Die obige Sammlung von Bildern bietet eine klare visuelle Darstellung des Kursgeschehens vor, während und nach der Veröffentlichung des NFP. Diese Momentaufnahmen zeigen, wie die Märkte auf solche einschneidenden Ereignisse reagieren. Ich bin davon überzeugt, dass mit der Integration von maschinellem Lernen und einer tiefer gehenden Analyse historischer, hochaktueller Nachrichtendaten viele versteckte Muster und Handelsmöglichkeiten aufgedeckt werden können. Aus den in der zweiten Hälfte des Jahres 2024 beobachteten Ergebnissen ergibt sich eine wichtige Erkenntnis: Wenn zwei oder mehr Kerzen auf den anfänglichen Anstieg in dieselbe Richtung folgten, setzte sich der Kurs häufig in diesem Schwung fort. In den Fällen jedoch, in denen eine solche Bestätigung ausblieb, konnte der Markt die Bewegung nicht aufrechterhalten und kehrte stattdessen häufig um oder konsolidierte sich.

Gute Beispiele für dieses Verhalten sind die NFP-Ereignisse im Juni, Oktober und Dezember. Im Juni und Oktober setzte sich die starke Richtungsbewegung nach der Spitze noch einige Minuten lang fort, was das Momentum bestätigte und potenzielle Einstiegsmöglichkeiten schuf. Im Gegensatz dazu zeigte das Juli-Ereignis zwar anfängliche Volatilität, aber es fehlte an Folgeerscheinungen, was zu einer abgehackten oder gescheiterten Fortsetzung führte – ein wichtiger Unterschied bei der Entwicklung von Handelsstrategien nach dem Aufprall.

Strategie-Entwurf

Wenn ein wichtiges Nachrichtenereignis eintritt, löst es oft innerhalb weniger Ticks einen starken Aufwärts- oder Abwärtsimpuls aus. In manchen Fällen testet der Markt schnell beide Richtungen – aufwärts und abwärts – bevor er sich beruhigt, was zu verfrühten Stop-Outs oder unbeabsichtigt ausgelösten Aufträgen führen kann. Um die mit dieser anfänglichen Volatilität verbundenen Risiken zu vermeiden, konzentriert sich diese Strategie auf den Einstieg in den Handel kurz nach der Spitze, sobald der Markt eine klarere Absicht zeigt. Der Einstieg basiert auf der Bestätigung der Bedingungen, die auf das Ereignis folgen, und nicht auf der Antizipation der Bewegung selbst. Im Folgenden werden sowohl Aufwärts- als auch Abwärtsstrategien vorgestellt, die auf diesem Post-Impact-Ansatz basieren.

Aufwärts-Einstellung

Nach einem Ausreißer nach oben, der durch ein wichtiges Nachrichtenereignis ausgelöst wurde, benötigt unsere Strategie zwei aufeinanderfolgende Aufwärtskerzen als Bestätigung, bevor eine Kaufposition eingegangen wird. Sobald diese bestätigenden Kerzen erscheinen, leiten wir einen Kaufhandel ein. Die von den beiden Kerzen abgedeckte Preisspanne definiert unsere Risikozone – sie ist die Grundlage für die Festlegung des Stop-Loss. Das Take-Profit-Niveau sollte eine Belohnung bieten, die größer ist als das Risiko, um ein günstiges Risiko-Ertrags-Verhältnis zu erhalten. In einigen Szenarien kann diese Konstellation auch den Beginn eines starken Schwungs signalisieren, der das Potenzial für außergewöhnlich hohe Renditen bietet, wenn er frühzeitig erfasst wird. Die nachstehende Abbildung, die während der NFP-Ereigniswiederholung von der Strategietester-Visualisierung aufgenommen wurde, zeigt das Setup in Aktion.

Strategie für ein Aufwärtsmomentum

Post Impact Strategie – Aufwärtsmomentum

Abwärts-Einstellung

Ein Abwärts-Setup spiegelt die oben erläuterte Vorgehensweise bei einem Aufwärts-Setup. Die folgende Abbildung veranschaulicht, wie dieses Muster typischerweise abläuft.

Strategie bei einem Abwärtsmomentum

Post Impact Strategie – Abwärtsmomentum

Was wir oben getan haben, ist eine Übung zur Strategieentwicklung auf der Grundlage der Preisaktionsanalyse. Durch die Nutzung der Leistungsfähigkeit von MQL5 haben wir einen einzigartigen EA entwickelt, der in der Lage ist, NFP-Ereignisse wiederzugeben und zu markieren – etwas, das manuell mühsam, zeitaufwändig und ineffizient wäre. Dieser Ansatz hat uns wertvolle Erkenntnisse und umsetzbare Ideen geliefert, die nun in eine Handelslogik umgesetzt werden können. Im nächsten Schritt werden wir uns auf die Implementierung der Handelsstrategie konzentrieren, die es dem EA ermöglicht, diese Setups zu erkennen und Handelsgeschäfte automatisch auszuführen. Diese neue Logik wird die zuvor untersuchte Strategie für ausstehende Aufträge ergänzen und so ein robusteres und vielseitigeres Instrument für den Nachrichtenhandel schaffen.


Endgültige Umsetzung – Integration der Post-Impact-Strategie in die Nachrichtenschlagzeile EA

Um unseren News Headline EA noch anpassungsfähiger und leistungsfähiger zu machen, besteht der nächste logische Schritt darin, beide Strategien – den Ansatz schwebender Aufträge und die Post-Impact-Bestätigungsstrategie – in ein nahtloses System zu integrieren. Während die Strategie der schwebenden Aufträge darauf abzielt, die anfängliche Volatilitätsspitze zu erfassen, indem sie kurz vor der Veröffentlichung der Nachrichten gehandelt wird, ermöglicht die auf der Bestätigung basierende Strategie dem EA, intelligent zu reagieren, nachdem der Markt seine Tendenz offenbart hat.

Durch die Kombination beider Techniken kann der EA sowohl den unmittelbaren Ausbruch als auch die oft folgende nachhaltige Bewegung handeln. Dieser duale Ansatz erhöht die Flexibilität und verbessert die Chancen auf profitable Setups, unabhängig davon, ob die Nachrichten einen scharfen, sauberen Ausbruch oder einen „Whipsaw“, gefolgt von einem klareren Trend, verursachen. In dieser Entwicklungsphase werden wir beide Strategien in die Logik des EA einbetten, sodass er sie je nach Ereignisprofil oder nutzerdefinierten Einstellungen auswählen, abwechseln oder sogar kombinieren kann.

Kommen wir zu den nächsten Schritten: Wir werden den Code unten in Abschnitte aufteilen, jeden Abschnitt detailliert erklären und genau zeigen, wie die neu hinzugefügten Zeilen in die bestehenden Module und die Gesamtstrategie integriert werden.

Schritt 1: Konfiguration der Eingänge für Post-Impact

Ganz oben im EA führen wir einen eigenen Block mit Eingabeparametern ein, mit denen der Nutzer die Post-Impact-Strategie aktivieren oder deaktivieren und ihr Verhalten anpassen kann. In MQL5 definiert eine Eingabe eine Kompilierzeitkonstante, die Händler im Eigenschaftsdialog des EAs anpassen können. Hier schaltet ein boolesches Flag die Funktion ein oder aus, während numerische Eingaben das Zeitfenster um das Ereignis (Minuten vor und nach dem Ereignis), die Mindestgröße des Spikes in Pips, die Anzahl der erforderlichen Bestätigungsbalken, den Puffer nach dem Referenzhoch oder -tief und das gewünschte Reward-to-Risk-Verhältnis angeben. Durch diese Konstruktion ist die Strategie in hohem Maße konfigurierbar, ohne dass der Code selbst geändert werden muss.

//--- POST-IMPACT STRATEGY INPUTS -------------------------------------
input bool   InpEnablePostImpact       = false;  // Enable post-impact market orders
input int    InpPostImpactBeforeMin    = 0;      // Minutes before event to start window
input int    InpPostImpactAfterMin     = 5;      // Minutes after event to end window
input double InpSpikeThresholdPipsPI   = 20.0;   // Minimum pip spike magnitude
input int    InpConfirmBarsPI          = 2;      // Number of confirming bars
input double InpBufferPipsPI           = 5.0;    // Buffer beyond reference high/low
input double InpRR_PIP                 = 2.0;    // Desired reward:risk ratio

Schritt 2: Statusvariablen Globale Objekte

Um den Lebenszyklus des Merkmals zu verwalten, deklarieren wir mehrere globale Variablen. Flags wie postImpactPlaced und postRectDrawn stellen sicher, dass wir unsere Hervorhebung auf dem Chart zeichnen und eine Marktorder nur einmal pro Ereignis platzieren. Wir weisen dem Rechteck-Objekt einen eindeutigen Textkennzeichen zu, damit wir es zuverlässig erstellen, referenzieren und löschen können. Außerdem instanziieren wir ein einzelnes CTrade-Objekt, das dem EA integrierte Handelsmethoden (Buy(), Sell() usw.) zur programmgesteuerten Ausführung von Aufträgen bietet.

// Trade object & post-impact state
CTrade  trade;
bool    postImpactPlaced = false;          // Ensures only one post-impact trade
string  postRectName     = "PostImpact_Window";  // Unique object name
bool    postRectDrawn    = false;          // Ensures rectangle drawn once

Schritt 3: Zurücksetzen des Status in ReloadEvents()

Jedes Mal, wenn der EA seine Liste der anstehenden wirtschaftlichen Ereignisse aktualisiert, ruft er ReloadEvents() auf. Am Ende dieser Routine setzen wir alle Statusflags nach dem Aufprall zurück und löschen alle vorhandenen Rechteckobjekte. Dieser „Clean-Slate“-Ansatz garantiert, dass jedes neue Ereignis unabhängig behandelt wird, sodass keine Artefakte oder doppelte Abschlüsse aus früheren Ereignissen übrig bleiben.

// Inside ReloadEvents(), after nextEventTime is computed:
ordersPlaced      = false;
postImpactPlaced  = false;
postRectDrawn     = false;
ObjectDelete(0, postRectName);  // Remove any old rectangle

Schritt 4: Zeichnen des Fensters von Post-Impact

Im Haupt-Timer (OnTimer()) zeichnen wir ein halbtransparentes Rechteck auf dem Chart, sobald die aktuelle Serverzeit in das nutzerdefinierte Fenster um ein wichtiges Ereignis herum eintritt. Wir rufen die sichtbaren Höchst- und Tiefstpreise des Charts ab und verwenden dann die Objektverwaltungsfunktionen von MQL5, um ein OBJ_RECTANGLE zu erstellen und zu gestalten. Ein boolesches Flag stellt sicher, dass diese Zeichnung nur einmal erfolgt, sodass das Ereignis visuell auffällt, ohne dass es bei jedem Tick neu gezeichnet wird.

// In OnTimer(), when now ∈ [evt - BeforeMin, evt + AfterMin]
if(!postRectDrawn && now >= winStart && now <= winEnd)
{
   double hi = ChartGetDouble(0, CHART_PRICE_MAX);
   double lo = ChartGetDouble(0, CHART_PRICE_MIN);
   ObjectCreate(0, postRectName, OBJ_RECTANGLE, 0, winStart, hi, winEnd, lo);
   ObjectSetInteger(0, postRectName, OBJPROP_COLOR, clrOrange);
   ObjectSetInteger(0, postRectName, OBJPROP_STYLE, STYLE_DASH);
   ObjectSetInteger(0, postRectName, OBJPROP_BACK,  true);
   ObjectSetInteger(0, postRectName, OBJPROP_FILL,  true);
   postRectDrawn = true;
}

Schritt 5: Spike-Erkennung Platzierung von Marktaufträgen

Nach dem Schließen des Ereignisfensters lokalisiert der EA den exakten Ein-Minuten-Balken am Zeitstempel des Ereignisses. Es berechnet die Preisspitze in Pips, indem es den Schluss- und den Eröffnungswert des Balkens vergleicht, und prüft, ob diese Spitze den vom Nutzer festgelegten Schwellenwert überschreitet. Wenn dies der Fall ist, prüft der EA eine konfigurierbare Anzahl nachfolgender Balken, um die Richtung zu bestätigen (alle steigenden oder alle fallenden). Nach erfolgreicher Bestätigung platziert es eine Marktorder zum nächsten Eröffnungskurs, wobei es die Stop-Loss- und Take-Profit-Levels auf der Grundlage der vom Nutzer festgelegten Puffer- und Reward-to-Risk-Einstellungen berechnet. Ein letztes globales Kennzeichen verhindert mehr als einen Handel pro Ereignis.

// In OnTimer(), once now > winEnd and !postImpactPlaced
int barIdx = iBarShift(_Symbol, PERIOD_M1, evt, true);
if(barIdx >= 0)
{
   double point = SymbolInfoDouble(_Symbol, SYMBOL_POINT), pip = point*10.0;
   double o = iOpen(_Symbol,PERIOD_M1,barIdx), c = iClose(_Symbol,PERIOD_M1,barIdx);
   double spike = (c - o)/pip;
   if(MathAbs(spike) >= InpSpikeThresholdPipsPI)
   {
      bool bullish = (c > o), ok = true;
      for(int i=1; i<=InpConfirmBarsPI; i++)
      {
         double oi = iOpen(_Symbol,PERIOD_M1,barIdx-i), ci = iClose(_Symbol,PERIOD_M1,barIdx-i);
         if(bullish ? (ci <= oi) : (ci >= oi)) { ok=false; break; }
      }
      if(ok)
      {
         int entryBar = barIdx - InpConfirmBarsPI - 1;
         double entry = iOpen(_Symbol,PERIOD_M1,entryBar);
         double refP  = bullish ? iLow(_Symbol,PERIOD_M1,barIdx-1)
                                : iHigh(_Symbol,PERIOD_M1,barIdx-1);
         double sl   = bullish ? refP - InpBufferPipsPI*pip : refP + InpBufferPipsPI*pip;
         double rr   = MathAbs(entry - sl);
         double tp   = bullish ? entry + rr*InpRR_PIP : entry - rr*InpRR_PIP;
         postImpactPlaced = true;
         trade.SetExpertMagicNumber(888888);
         trade.SetDeviationInPoints(5);
         if(bullish)
            trade.Buy(InpOrderVolume, _Symbol, entry, sl, tp, "PostImpact Buy");
         else
            trade.Sell(InpOrderVolume, _Symbol, entry, sl, tp, "PostImpact Sell");
      }
   }
}

Der vollständig integrierte, kompakte Quellcode – einschließlich aller Funktionen – wird am Ende dieses Artikels zur Verfügung gestellt und kann von Ihnen kompiliert werden. Nun können wir mit dem Testabschnitt fortfahren.


Tests

Der voll integrierte News Headline EA konnte im Strategy Tester nicht ausreichend validiert werden, da der Tester keine Echtzeit-Kalender und News-Feeds unterstützt. Der Replay-Modus mit dem kombinierten EA lieferte keine aussagekräftigen Signale, sodass ich die Post-Impact-Orderlogik in den speziellen NFP_Event_Replay EA migriert habe. Durch die Verwendung des Replay-Frameworks – bei dem die Non-Farm-Payroll-Veröffentlichungen auf der Grundlage historischer Daten simuliert werden – konnte ich das Einstiegs-, Stop-Loss- und Take-Profit-Verhalten der Strategie schnell überprüfen, ohne auf wichtige Live-Veröffentlichungen warten zu müssen. Die nachstehende Animation, die mit dem Strategy Tester aufgenommen wurde, zeigt, dass die Post-Impact-Logik unter kontrollierten, wiederholbaren Bedingungen genau wie vorgesehen funktioniert. Im Anhang finden Sie die zweite Version von NFP_Event_Replay mit der kompletten Handelslogik am Ende des Artikels.

Testergebnis der Post-Impact-Strategie

Ergebnis des Post-Impact-Strategie-Tests für die NFP-Nachrichten am ersten Freitag für den Monat Juli 2024

Neue Headline EA mit Post Impact Auftragsausführung

Neue Headline EA mit Post Impact Auftragsausführung


Schlussfolgerung

Wir haben gerade eine weitere eingehende, lehrreiche Untersuchung abgeschlossen – dieses Mal haben wir eine Post-Impact-Handelsstrategie in unseren News Headline EA integriert und sie dann über das NFP_Event_Replay-Framework validiert. Indem wir unmittelbar nach wichtigen Nachrichten handeln, nutzen wir Setups mit höherer Wahrscheinlichkeit: Die anfängliche Volatilitätsspitze ist vorbei, der Kurs hat sich „eingependelt“, und die Bestätigungsbalken geben uns Klarheit über Richtung und Stärke. Dieser Ansatz fügt sich nahtlos in unsere anderen nachrichtenorientierten Taktiken ein und macht den EA noch vielseitiger und robuster.

Darüber hinaus können dieselben Methoden, die wir hier verwendet haben – systematische Ereigniserkennung, Pip-basierte Spike-Filter, Multi-Bar-Bestätigung und Reward-to-Risk-Management – durch maschinelles Lernen oder KI weiter verbessert werden. Stellen Sie sich ein Modell vor, das seine Spike-Schwelle oder Bestätigungsregeln auf der Grundlage historischer Erfolgsraten für verschiedene Währungen oder Nachrichtenarten anpasst. Es gibt reichlich Raum, um jede Funktion, die wir entwickelt haben, zu verfeinern, sei es die Visualisierung auf dem Chart, Warnmeldungen oder die automatische Auftragsvergabe. Und natürlich, während unser Fokus auf NFP für Präzision in der Historie und Testgeschwindigkeit im Strategy Tester lag, bleibt das Tool auch für den Live-NFP-Handel sofort nützlich.

Ich würde gerne Ihr Feedback hören! Teilen Sie Ihre Erfahrungen, Ideen oder Fragen in den Kommentaren unten mit. Gemeinsam können wir die Entwicklung von MQL5 weiter vereinfachen und immer leistungsfähigere, händlerfreundliche algorithmische Tools entwickeln.


Wichtige Lektionen

Lektion Beschreibung
1. Post-Impact-Handel Der Handel kurz nach der Veröffentlichung von Nachrichten mit hoher Bedeutung ist möglich und kann die Gewinnrate verbessern, indem man abwartet, bis die anfängliche Volatilität nachlässt.
2. Zeitabhängige Ereigniserkennung Verwendung von MQL5-Datums- und Zeitfunktionen, um programmatisch bestimmte Kalenderereignisse wie den ersten Freitag eines jeden Monats (NFP-Tag) zu finden und die Logik mit realen Zeitplänen abzustimmen.
3. Strategie-Tester Visualisierung Erstellung visueller Elemente wie Rechtecke und Linien zur Markierung historischer Fenster während des Backtests, um die manuelle Strategiebewertung zu verbessern, ohne auf externe Tools angewiesen zu sein.
4. Dynamisches Zeichnen von Objekten Verwendung von ObjectCreate() und ObjectSetInteger() zur dynamischen Darstellung von Chart-Objekten auf der Grundlage von berechneten Zeiten und Werten, was die Verfolgung von Ereignissen und visuelles Feedback ermöglicht.
5. Echtzeit vs. Testmodus Verwendung von MQLInfoInteger(MQL_TESTER) zur Unterscheidung zwischen Strategietester und Live-Ausführung, was angepasste Logikpfade für Test- und Produktionsumgebungen ermöglicht.
6. Handelsmanagement über CTrade Integration der Klasse CTrade für sichere und strukturierte Orderplatzierung, Stop-Loss, Take-Profit und Orderstornierung in Pre-Impact- und Post-Impact-Strategien.
7. Post-Impact-Bestätigungslogik Aufbau von verzögerten Handelseinstiegen auf der Grundlage von Kerzen-Bestätigungen nach starken Ausschlägen – eine sicherere und regelbasierte Alternative zur sofortigen Ausführung.
8. Anpassung der Eingabeparameter Verwendung von Eingabevariablen, mit denen die Nutzer steuern können, welche Strategien aktiv sind, wie viele Bestätigungskerzen erforderlich sind und welche Ereignisauswirkungen die Logik auslösen sollen.
9. Kalender-API-Integration Verwendung von eingebauten MQL5-Kalenderfunktionen (CalendarValueHistory, CalendarEventById, etc.), um mit anstehenden wirtschaftlichen Ereignissen ohne externe API-Abhängigkeiten zu arbeiten.
10. Canvas-basiertes UI-Rendering Verwendung der Klasse CCanvas zur Erstellung nutzerdefinierter Bildlaufoberflächen für Wirtschaftsnachrichten, technische Indikatoren und KI-gesteuerte Erkenntnisse, die direkt in das Chart eingeblendet werden.
11. Entwurf einer hybriden Strategie Kombination von Pre-Impact schwebenden Aufträge und Post-Impact reaktiven Handelsgeschäften in einem einzigen EA-System mit Laufzeitbedingungen, was die Flexibilität und Anpassungsfähigkeit an verschiedene Marktbedingungen fördert.

Anlagen

Dateiname Version Beschreibung
NFP_Event_Replay.mq5 1.0 Visuelles Tool von Strategy Tester, das NFP-Ereignisfenster mit Hilfe von Rechtecken markiert, die auf der historischen Logik des ersten Freitags und der US-Sommerzeit basieren. Hilft bei der manuellen Analyse von Kursreaktionen während aufsehenerregender Nachrichtenereignisse.
News_Headline_EA.mq5 1.11 Echtzeit-Wirtschaftskalender-EA mit Ereignis-Scrolling, Alpha Vantage-Schlagzeilen, KI-Einsichten und dualer Strategie-Ausführungslogik für schwebende Aufträge und Post-Impact-Bestätigungs-Handelsgeschäfte. Einschließlich NFP-Wiederholungskompatibilität während der Tests.
NFP_Event_Replay.mq5 1.01 Zweite Version des NFP Replay EA, die nun die vollständige Logik für die Auftragsausführung von Post Impact enthält.

Zurück zum Inhalt

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

Beigefügte Dateien |
Selbstoptimierende Expert Advisors in MQL5 (Teil 11): Eine sanfte Einführung in die Grundlagen der linearen Algebra Selbstoptimierende Expert Advisors in MQL5 (Teil 11): Eine sanfte Einführung in die Grundlagen der linearen Algebra
In dieser Diskussion werden wir die Grundlagen für die Verwendung leistungsstarker linearer Algebra-Werkzeuge schaffen, die in der MQL5-Matrix- und Vektor-API implementiert sind. Damit wir diese API sachkundig nutzen können, müssen wir die Grundsätze der linearen Algebra, die den intelligenten Einsatz dieser Methoden bestimmen, genau kennen. Dieser Artikel zielt darauf ab, dem Leser ein intuitives Verständnis einiger der wichtigsten Regeln der linearen Algebra zu vermitteln, die wir als algorithmische Händler in MQL5 benötigen, um mit der Nutzung dieser leistungsstarken Bibliothek zu beginnen.
Selbstoptimierende Expert Advisors in MQL5 (Teil 10): Matrix-Faktorisierung Selbstoptimierende Expert Advisors in MQL5 (Teil 10): Matrix-Faktorisierung
Die Faktorisierung ist ein mathematischer Prozess, der dazu dient, Erkenntnisse über die Eigenschaften von Daten zu gewinnen. Wenn wir die Faktorisierung auf große Mengen von Marktdaten anwenden – die in Zeilen und Spalten organisiert sind – können wir Muster und Merkmale des Marktes aufdecken. Die Faktorisierung ist ein mächtiges Werkzeug, und dieser Artikel zeigt Ihnen, wie Sie es im MetaTrader 5-Terminal über die MQL5-API nutzen können, um tiefere Einblicke in Ihre Marktdaten zu gewinnen.
MQL5-Assistenten-Techniken, die Sie kennen sollten (Teil 76):  Verwendung von Mustern des Awesome Oszillators und der Envelope-Kanäle mit überwachtem Lernen MQL5-Assistenten-Techniken, die Sie kennen sollten (Teil 76): Verwendung von Mustern des Awesome Oszillators und der Envelope-Kanäle mit überwachtem Lernen
Wir knüpfen an unseren letzten Artikel an, in dem wir das Indikatorpaar des Awesome Oszillators und die Envelope-Kanäle vorstellten, indem wir uns ansehen, wie dieses Paar durch überwachtes Lernen verbessert werden kann. Der Awesome Oszillator und die Envelope-Kanäle sind eine Mischung aus Trendspotting und Unterstützung/Widerstand, die sich gegenseitig ergänzen. Unser überwachter Lernansatz ist ein CNN, der das Punktprodukt-Kernel mit Cross-Time-Attention einsetzt, um seine Kernel und Kanäle zu dimensionieren. Wie üblich erfolgt dies in einer nutzerdefinierten Signalklassendatei, die mit dem MQL5-Assistenten zur Zusammenstellung eines Expert Advisors arbeitet.
Entwicklung des Price Action Analysis Toolkit (Teil 35): Training und Einsatz von Vorhersagemodellen Entwicklung des Price Action Analysis Toolkit (Teil 35): Training und Einsatz von Vorhersagemodellen
Historische Daten sind alles andere als „Müll“ – sie sind die Grundlage für jede solide Marktanalyse. In diesem Artikel führen wir Sie Schritt für Schritt von der Erfassung der Historie über die Verwendung zur Erstellung eines Prognosemodells bis hin zum Einsatz dieses Modells für Live-Preisprognosen. Lesen Sie weiter, um zu erfahren, wie!