English
preview
Entwicklung eines Toolkits zur Preisaktionsanalyse (Teil 56): Interpretation von Annahme und Ablehnung bei Sitzungen anhand des CPI

Entwicklung eines Toolkits zur Preisaktionsanalyse (Teil 56): Interpretation von Annahme und Ablehnung bei Sitzungen anhand des CPI

MetaTrader 5Beispiele |
22 0
Christian Benjamin
Christian Benjamin

Inhalt


Einführung

Handelssitzungen hinterlassen bleibende strukturelle Spuren. Wenn sich der Kurs innerhalb einer Sitzung entwickelt, werden sein Hoch und sein Tief zu Referenzgrenzen, die künftige Kursbewegungen beachten müssen. Kerzen, die mit diesen vorherigen Niveaus interagieren, zeigen, ob der Markt neue Extremwerte akzeptiert oder ablehnt. Ich habe bereits den Candle Pressure Index (CPI) eingeführt, um den internen Kauf-/Verkaufsdruck über die einfache Kerzenfarbe hinaus zu quantifizieren. Wenn der Kurs zu einer früheren Sitzungsgrenze zurückkehrt, lautet die Schlüsselfrage Annahme oder Ablehnung, und der CPI hilft, diese Frage objektiv zu beantworten.

In diesem Artikel wird dasselbe Konzept auf einen sitzungsbasierten Kontext ausgeweitet. Ziel ist es, mithilfe des CPI festzustellen, ob die Kerzen, die mit den festgelegten Sitzungsgrenzen interagieren, bullischen oder bärischen Druck ausüben. Auf diese Weise werden die Sitzungsebenen nicht mehr als statische Linien auf dem Chart behandelt, sondern als Bereiche, in denen der interne Preisdruck bestimmt, ob der Markt höhere Preise akzeptiert oder ablehnt – was die wahre Annahme oder Ablehnung offenbart und einen objektiven Kontext für diskretionäre Handelsentscheidungen bietet.



Rückblick auf den vorherigen Artikel

In der letzten Folge wurde der Candle Pressure Index (CPI) vorgestellt, der einfach als der interne Kauf- oder Verkaufsdruck definiert werden kann, der in jeder geschlossenen Kerze enthalten ist. Dieser Druck spiegelt wider, wie sich der Preis während der Entstehung der Kerze verhalten hat, und geht über das hinaus, was die Kerzenfarbe allein aussagen kann. Um die in diesem Artikel behandelten Themen wieder aufzugreifen, ist die Diskussion in zwei Teile gegliedert. Der erste Teil befasst sich mit dem VPI-Konzept selbst, der zweite Teil mit den Ergebnissen, die nach dem Test des VPI-Indikators beobachtet wurden. Beide werden hier kurz skizziert, bevor die Analyse in diesem Artikel vertieft wird.

CPI-Konzept

Wenn Sie jemals ein Fußballspiel gesehen haben, werden Sie feststellen, dass nicht immer die Mannschaft gewinnt, die besser gespielt hat. Eine Mannschaft kann den Ballbesitz dominieren, mehr Chancen kreieren und konstanten Druck ausüben, aber trotzdem das Spiel verlieren. Die meisten Menschen erinnern sich nur an das Endergebnis, aber die ganze Geschichte des Spiels bleibt oft im Verborgenen. Kerzen funktionieren auf die gleiche Weise. Viele Menschen schauen nur auf die Kerzenfarbe und begnügen sich damit. Der CPI wirkt wie eine versteckte Spielstatistik, die den Druck im Inneren der Kerze offenbart, den die Preisfarbe allein nicht erkennen lässt. 

Er wird anhand des Hochs, des Tiefs und des Schlusskurses der Kerze berechnet, wie in der folgenden Formel dargestellt.

Die CPI-Werte werden innerhalb eines festen Bereichs von -1 bis +1 normalisiert, sodass die Druckstärke bei allen Kerzen einheitlich verglichen werden kann.
Test-Ergebnisse
Nachdem wir den Indikator erfolgreich entwickelt hatten, testeten wir ihn und erhielten die folgenden Ergebnisse.

Diese Ergebnisse veranschaulichen deutlich den Druck, der in jeder Kerze enthalten ist, wobei die mit Pfeilen markierten Kerzen eine stärkere Kauf- oder Verkaufsdominanz durch die Farbintensität hervorheben. Im folgenden Abschnitt wird eine erweiterte Verwendung des CPI zur Unterscheidung von Ausbruchs- und Umkehrverhalten auf wichtigen Marktsitzungsniveaus vorgestellt.



Strategiekonzept

Sitzungsstruktur als Marktgedächtnis

Das Ende einer Handelssitzung markiert den Abschluss einer bestimmten Phase der Marktteilnahme. Während dieses Zeitraums erkundete der Preis eine Spanne, testete die Liquidität und pendelte sich schließlich auf einem Schlussniveau ein, das widerspiegelt, wo Käufer und Verkäufer eine vorübergehende Einigung erzielten. Die Höchst- und Tiefstwerte der Sitzung sind keine willkürlichen Extremwerte; sie stellen die äußeren Grenzen dieses Entscheidungsprozesses dar.

Einmal festgelegt, bleiben diese Grenzen im Markt verankert. Wenn der Preis den Höchst- oder Tiefststand einer vorangegangenen Sitzung wieder erreicht, interagiert er nicht mit einem zufälligen Niveau, sondern kehrt in eine Zone zurück, in der zuvor ein Ungleichgewicht, eine Absorption und eine Auflösung stattgefunden haben. Infolgedessen dienen die Höchst- und Tiefststände der Sitzungen oft als dauerhafte Unterstützungs- und Widerstandsniveaus – Referenzpunkte, an denen der Markt frühere Einschätzungen neu bewertet.

Annahme und Ablehnung auf Sitzungsebenen

Wenn der Preis zu einer früheren Sitzungsgrenze zurückkehrt, gibt es für den Markt zwei mögliche Ergebnisse: Annahme oder Ablehnung. Die Annahme tritt ein, wenn sich der Preis über das Niveau hinaus bewegt und sich über oder unter diesem Niveau hält, was darauf hindeutet, dass die Teilnehmer bereit sind, außerhalb der Spanne der vorherigen Sitzung zu handeln. Eine Ablehnung tritt ein, wenn der Kurs das Niveau testet, aber nicht in der Lage ist, den Druck darüber hinaus aufrechtzuerhalten und in den früheren Bereich zurückkehrt.

Betrachten Sie das Hoch der letzten Sitzung bei 1,1000. Wenn der Preis zurückkehrt:

  • Annahme: Nachhaltiger Schlusskurs oberhalb mit stark positivem CPI.
  • Ablehnung: Sondierung nach oben, aber Schlusskurs zurück nach innen mit einem negativen Vorzeichenwechsel des CPI.

Dies wird durch die Schlussposition der Kerze innerhalb ihres Bereichs bestimmt, nicht nur durch den Docht oder die Farbe. Das nachstehende Diagramm verdeutlicht den Entscheidungsprozess, der eintritt, wenn der Kurs eine frühere Sitzungsgrenze erreicht, wobei die Annahme oder Ablehnung durch das Verhalten auf diesem Niveau und nicht durch die anfängliche Prüfung bestimmt wird.

Diese Ergebnisse werden nicht durch einen einzelnen Tick oder Docht definiert, sondern dadurch, wie sich der Kurs bis zum Kerzenschluss auf diesem Niveau verhält. Der Schluss bedeutet Verpflichtung. Eine Bewegung über ein Sitzungsniveau hinaus, die den Druck bis zum Schluss nicht aufrecht erhält, ist keine Bestätigung, während ein Schlusskurs, der sich über dem Niveau hält, eine anhaltende Beteiligung widerspiegelt.

Beschränkungen der Kerzenfarbe an den Sitzungsgrenzen

Bei wichtigen Sitzungsniveaus liefert die Kerzenfarbe allein oft unvollständige oder irreführende Signale. Eine Kerze kann oberhalb ihres Eröffnungswerts schließen und bullisch erscheinen, aber nach einer kurzen Aufwärtsbewegung schwach innerhalb ihres Bereichs enden. In solchen Fällen impliziert die Kerzenfarbe Stärke, während das innere Verhalten auf Zögern oder Absorption hindeutet.

Umgekehrt kann eine Kerze, die mit einer bärischen Farbe schließt, in der Nähe ihres Höchststandes enden, was darauf hindeutet, dass der Verkaufsdruck eher absorbiert als dominiert wurde. Solche Widersprüche treten besonders häufig in der Nähe von Höchst- und Tiefstständen auf, wo die Liquidität konzentriert ist und gegensätzliche Aufträge aufeinandertreffen. Wenn man sich an diesen Punkten ausschließlich auf die Kerzenfarbe verlässt, kann dies zu einer Fehlinterpretation der Marktabsicht führen.

CPI als Sitzungsvalidierungsschicht

Der Candle Pressure Index (CPI) behebt diese Einschränkung, indem er bewertet, wo der Preis innerhalb der Kerzenspanne schließt, anstatt sich nur auf die Farbe zu verlassen. Durch die Messung des internen Kauf- und Verkaufsdrucks zeigt der CPI an, ob die Kontrolle bei Käufern, Verkäufern oder keinem von beiden liegt.

Der Höchst- oder Tiefststand der Sitzung liefert den strukturellen Kontext; der VPI bewertet die Qualität der Preisinteraktion mit dieser Struktur. Ein Ausbruch über das Sitzungshoch in Verbindung mit einem stark positiven Verbraucherpreisindex deutet darauf hin, dass der Kaufdruck bis zum Handelsschluss anhält. Ein Bruch mit einem schwachen oder negativen CPI bedeutet dagegen ein unzureichendes Engagement und eine größere Wahrscheinlichkeit der Ablehnung. Die gleiche Logik gilt für die Tiefststände der Sitzungen.

Druck interpretieren

In diesem Rahmen wird beobachtet, wie sich der Preis auf den verschiedenen Niveaus der Sitzung verhält, und die Reaktion wird anhand interner Druckmetriken bewertet. Dadurch bleibt die Analyse reaktiv und basiert auf beobachtbarem Verhalten, wodurch spekulative Annahmen vermieden werden.

Der CPI klassifiziert die Qualität der gegenwärtigen Interaktion. Auf diese Weise hilft es, zwischen bedeutungsvoller Annahme und oberflächlichen Unterbrechungen sowie zwischen echter Ablehnung und vorübergehendem Zögern zu unterscheiden.

Umfang und Zielsetzung des Ansatzes

Dies ist ein Rahmen für die Interpretation der Sitzungsniveaus. Es kombiniert die Sitzungsstruktur mit dem CPI, um zu bewerten, ob der Preis ein Niveau akzeptiert oder ablehnt, basierend darauf, wie die Kerzen innerhalb ihrer Spanne schließen. Der nächste Abschnitt zeigt, wie diese Logik in MQL5 mithilfe der Auswertung von geschlossenen Kerzen und sitzungsisolierten Berechnungen umgesetzt wird.

Dieses Beispiel verdeutlicht, wie die Sitzungsstruktur den Kontext liefert, während das Verhalten der Kerze an der Grenze bestimmt, ob die Ebene akzeptiert oder abgelehnt wird.


MQL5-Implementierung

Die MQL5-Implementierung setzt das Konzept des Candle Pressure Index (CPI) in ein Analysetool für geschlossene Kerzen um. Es werden die Rechtecke der Sitzungen von Tokio, London und New York gezeichnet und die Annahme und Ablehnung von Ausbrüchen an den Sitzungsgrenzen anhand von CPI-Daten klassifiziert. Das Ziel ist die Konsistenz, d. h., die Anwendung derselben Logik sowohl bei der historischen Rekonstruktion als auch beim Live-Betrieb. Alle Klassifizierungen werden ausschließlich an vollständig geschlossenen Kerzen vorgenommen.

Intern ist die Implementierung um drei Kernaufgaben herum strukturiert: Konstruktion von Sitzungsfenstern in Broker-(Server-)Zeit, Abtasten von Sitzungs-Ranges aus geschlossenen Kerzen und Auswertung von CPI-bestätigten Interaktionen unter Verwendung eines Zwei-Kerzen-Modells an Sitzungsgrenzen.

Sitzungskonfiguration und Zustandsverwaltung

Sitzungen werden über HH:MM-formatierte Eingabestrings in Broker-(Server-)Zeit konfiguriert. Dieser Ansatz gewährleistet die Übertragbarkeit zwischen den Brokern, ohne sich auf die lokale Rechnerzeit zu verlassen. Jede Sitzung wird durch eine SessionState-Struktur dargestellt, die den Sitzungsnamen und das konfigurierte Zeitfenster, die berechneten Zeitstempel startDT und endDT, die am korrekten Handelstag verankert sind, einen laufenden Höchst- und Tiefstwert für das Zeichnen des Sitzungsrechtecks sowie zwei Kontrollflags (doneHighSide, doneLowSide) zur Unterdrückung wiederholter Klassifizierungen an derselben Grenze enthält. Drei Instanzen (g_sess[3]) werden erstellt und einheitlich aktualisiert, sodass sich Tokio, London und New York mit einer gemeinsamen Logik identisch verhalten.

struct SessionState
{
   string   name;
   string   startHHMM;
   string   endHHMM;
   color    rectColor;

   datetime anchorMidnight;
   datetime startDT;
   datetime endDT;
   bool     active;

   double   high;
   double   low;

   bool     doneHighSide;
   bool     doneLowSide;
};

SessionState g_sess[3];

Sitzungsgrenzen und Umgang mit Mitternacht

Sitzungsgrenzen werden mit der Funktion BuildSessionBounds() erstellt. Diese Funktion analysiert die HH:MM-Eingaben und berechnet die an anchorMidnight verankerten startDT- und endDT-Werte. Sitzungen, die über Mitternacht hinausgehen (bei denen die Startzeit nach der Endzeit liegt), werden explizit behandelt, sodass das Sitzungsfenster auch dann korrekt bleibt, wenn es sich über zwei Kalendertage erstreckt.

void BuildSessionBounds(const string startHHMM, const string endHHMM,
                        datetime now, datetime &sessStart,
                        datetime &sessEnd, datetime &anchorMidnight)
{
   // Parses HH:MM, anchors to midnight,
   // handles sessions that cross midnight
}

Die Funktion wählt auch die relevanteste Sitzung in Bezug auf die aktuelle Uhrzeit aus, um sicherzustellen, dass die Ausrichtung der Sitzung auf den beabsichtigten Handelstag und nicht nur auf den Kalendertag erfolgt.

Logik der Sitzungszugehörigkeit (Datumsfilterung)

Die Implementierung vermeidet die Zuordnung von Sitzungsfenstern zu Bar-Indexbereichen. Stattdessen werden die Sitzungsgrenzen als Datumswerte (startDT, endDT) gespeichert, und die Einbeziehung von Kerzen wird durch den Vergleich der Eröffnungszeit jeder Bar (iTime) mit dem Sitzungsfenster bestimmt.

datetime t1 = iTime(_Symbol, _Period, 1);
if(t1 >= s.startDT && t1 <= s.endDT)
{
   double h1 = iHigh(_Symbol, _Period, 1);
   double l1 = iLow(_Symbol, _Period, 1);

   if(h1 > s.high) s.high = h1;
   if(l1 < s.low)  s.low  = l1;
}

Im Live-Betrieb prüft UpdateOneSessionLive() die zuletzt geschlossene Kerze (bar[1]) und aktualisiert die Sitzungs-Range nur, wenn ihr Zeitstempel innerhalb von [startDT, endDT] liegt. Bei der historischen Rekonstruktion wendet UpdateOneSessionAtShift() dieselbe Logik an, wobei eine beliebige Bar-Verschiebung verwendet wird. Da jede Kerze einen absoluten Zeitstempel hat, verhält sich dieser zeitbasierte Ansatz über alle Zeitrahmen hinweg konsistent.

Visuelle vs. analytische Sitzungs-Ranges

Die Implementierung verwaltet zwei verschiedene Arten von Sitzungs-Ranges.

ObjectCreate(0, name, OBJ_RECTANGLE, 0,
             s.startDT, s.high,
             s.endDT,   s.low);

ObjectSetInteger(0, name, OBJPROP_FILL, true);
ObjectSetInteger(0, name, OBJPROP_COLOR,
                 ColorToARGB(s.rectColor, InpRectTransparency));

  • Der Rechteckbereich (s.high, s.low) wird bei der Verarbeitung von Kerzen inkrementell aktualisiert und dient ausschließlich zum Zeichnen von visuellen Sitzungsrechtecken (OBJ_RECTANGLE). Diese Rechtecke bleiben im Chart bestehen und tragen Namen, die den Zeitstempel anchorMidnight der Sitzung enthalten. Es wird jedoch keine separate persistente Datenstruktur der abgeschlossenen Sitzungs-Ranges geführt.
  • Der analytische Bereich wird bei Bedarf über SessionRangeFromShift() berechnet. Diese Funktion durchsucht historische Kerzen, deren Zeitstempel innerhalb des Sitzungsfensters liegen, beginnend mit einer angegebenen Startschicht, um neuere Kerzen auszuschließen. Durch diese Trennung wird sichergestellt, dass die Auswertungskerze das Sitzungsniveau, mit dem sie verglichen wird, nicht beeinflusst.

CPI-Berechnung und Rauschunterdrückung

Der CPI wird mit CalcCPI(high, low, close) berechnet und auf einen Bereich zwischen -1 und +1 normiert. Eine Rauschunterdrückung (InpMinRangePoints) filtert Kerzen heraus, deren High-Low-Bereich unter einem bestimmten Minimum liegt, um falsche Klassifizierungen der Bars mit geringer Aktivität zu vermeiden.

bool SessionRangeFromShift(const SessionState &s,
                           int startShift,
                           double &outHigh,
                           double &outLow)
{
   for(int sh = startShift; sh < Bars(_Symbol,_Period); sh++)
   {
      datetime tt = iTime(_Symbol,_Period, sh);
      if(tt < s.startDT) break;
      if(tt > s.endDT)  continue;

      outHigh = MathMax(outHigh, iHigh(_Symbol,_Period, sh));
      outLow  = MathMin(outLow,  iLow(_Symbol,_Period, sh));
   }
   return true;
}

CPI wird ausschließlich auf geschlossene Kerzen angewendet, und zwar auf die beiden in die Auswertung einbezogenen Bars: sh1 ist die neuere Bestätigungskerze, und sh2 = sh1 + 1 ist die ältere Kontextkerze, die die Ausbruchsbedingungen festlegt oder den vorherigen CPI-Status liefert.

Signalauswertungsmodell (Zwei-Kerzen-Kern)

Alle Klassifizierungen werden innerhalb von EvaluateSignalsCore() unter Verwendung eines konsistenten Zwei-Kerzen-Modells durchgeführt. Die ältere Kerze (sh2) bestätigt den Ausbruch oder liefert den vorherigen CPI-Kontext für Umkehrungen, während die neuere Kerze (sh1) den Ausbruch durch ein Retest-Verhalten bestätigt oder eine Ablehnung durch das innere Verhalten der Schlusskerzen identifiziert.

int sh1 = 1;        // confirmation candle
int sh2 = sh1 + 1; // context / break candle

double cpi1 = CalcCPI(h1, l1, c1);
double cpi2 = CalcCPI(h2, l2, c2);

Dieses Modell wird sowohl im Live-Betrieb (mit sh1 = bar[1]) als auch bei der historischen Rekonstruktion (mit sh1 auf eine beliebige historische Verschiebung gesetzt) verwendet, sodass die Logik in beiden Modi identisch ist.

Annahme der Ausbruchskriterien

Die Annahme des Ausbruchs wird durch eine Zwei-Kerzen-Sequenz bestätigt. Die Ausbruchskerze (sh2) muss über die relevante Sitzungsgrenze hinaus schließen, wobei der CPI eine definierte Stärke-Schwelle in Richtung des Ausbruchs überschreiten muss. Die Bestätigungskerze (sh1) muss dann die Begrenzung innerhalb eines Toleranzbandes erneut testen und wieder darüber schließen.

double hiBrk, loBrk;
SessionRangeFromShift(s, sh1 + 2, hiBrk, loBrk);

bool bullBreak =
   (c2 > hiBrk + tol) &&
   (cpi2 >= InpStrongThreshold) &&
   RetestTouchesFromAbove(l1, hiBrk, touchTol) &&
   (c1 > hiBrk);

Der Ausbruchs-Referenzpegel (hiBrk oder loBrk) wird über SessionRangeFromShift() mit startShift = sh1 + 2 berechnet. Dadurch werden sowohl die Ausbruchs- als auch die Bestätigungskerze aus dem Bereich ausgeschlossen, der zur Definition des Niveaus verwendet wird, um sicherzustellen, dass die Ausbruchssequenz die Grenze, die sie zu durchbrechen versucht, nicht beeinflusst.

Ablehnungskriterien und Schwellenwertlogik

Eine Ablehnung wird klassifiziert, wenn die Bestätigungskerze (sh1) über eine Sitzungsgrenze hinausgeht, aber wieder innerhalb der Sitzungs-Range schließt. Beim Sitzungshoch muss sich die Kerze über das Hoch bewegen und darunter schließen (bärische Ablehnung). Am Tiefpunkt der Sitzung muss die Kerze unter den Tiefpunkt fallen und darüber schließen (bullische Ablehnung).

bool bearRejAtHigh =
   (h1 > hiRev + tol) &&
   (c1 < hiRev) &&
   (cpi1 <= -InpStrongThreshold) &&
   (cpi2 >= -InpNeutralBand) &&
   PassWickHigh(o1,h1,l1,c1);

Bei der CPI-Validierung wird ein Schwellenwert-Umkehrmodell anstelle einer schrittweisen Verbesserung verwendet. Für eine bärische Ablehnung muss sh1 einen stark negativen CPI aufweisen, während sh2 nicht stark negativ sein darf. Für eine bullische Ablehnung muss sh1 einen stark positiven CPI aufweisen, während sh2 nicht stark positiv sein darf. Optionale Dochtfilter können aktiviert werden, um eine Mindestdochtlänge zu verlangen und so falsch-positive Ergebnisse von flachen oder uneindeutigen Entwicklungen zu reduzieren.

Die Referenzwerte für die Ablehnung (hiRev / loRev) werden mit startShift = sh1 + 1 berechnet, wobei die Bestätigungskerze ausgeschlossen und die bestehende Sitzungsstruktur beibehalten wird.

Klassifizierungsbegrenzung pro Sitzung

Um wiederholte Markierungen an derselben Grenze zu verhindern, kann über InpOncePerSessionPerSide eine einmalige Klassifizierungsregel pro Seite aktiviert werden. Wenn diese Funktion aktiviert ist, unterdrückt doneHighSide wiederholte Klassifizierungen an der oberen Grenze der Sitzung, und doneLowSide unterdrückt wiederholte Klassifizierungen an der unteren Grenze der Sitzung. Diese Flags werden automatisch zurückgesetzt, wenn die Sitzung zu einem neuen Ankerfenster wechselt.

if(InpOncePerSessionPerSide)
{
   if(s.doneHighSide) bearRejAtHigh = false;
   if(s.doneLowSide)  bullRejAtLow  = false;
}

Visuelle Ausgabeschicht

Die visuelle Ebene ist eher für die Interpretation als für die Ausführung gedacht. Sitzungsrechtecke werden mit OBJ_RECTANGLE mit konfigurierbarer Farbe und Transparenz gezeichnet. Wenn ein Ausbruch oder eine Ablehnung bestätigt wird, werden Signalpfeile auf der Bestätigungskerze (sh1) platziert. CPI-Minimarkierungen werden auch auf dem sh1 eingezeichnet, um die Stärke und Richtung des Drucks zu visualisieren: Die Höhe des Markers steht für die Stärke, die Farbe für die Intensität der Hausse/Baisse.

DrawArrow(t1, h1 + 10*_Point, false, s.name+"_REJH");
DrawCPIMarkerOnBar(t1, h1, l1, cpi1, s.name+"_CPI");

Alle visuellen Elemente werden ausschließlich von geschlossenen Kerzen abgeleitet und nicht bei jedem Tick neu berechnet, was eine deterministische Darstellung gewährleistet.

Historische Rekonstruktion vs. Live-Betrieb

Wenn das Tool an ein Chart angehängt ist, kann es mit EvaluateHistoryLookback() eine begrenzte historische Rekonstruktion durchführen und von älteren Bars zu neueren Bars wandern, um Sitzungsrechtecke neu zu erstellen und Ereignisse zu klassifizieren, ohne Alarme auszulösen.

if(bar0 != g_lastBarTime)
{
   g_lastBarTime = bar0;
   for(int i=0;i<3;i++)
      EvaluateSignalsForSessionLive(g_sess[i]);
}

Im Live-Betrieb wird die Sitzungsverfolgung anhand der zuletzt geschlossenen Kerze aktualisiert, und die Signalklassifizierung erfolgt erst, wenn sich eine neue Bar bildet. Dadurch wird sichergestellt, dass die Auswertungslogik genau mit dem historischen Verhalten übereinstimmt – eine Bewertung pro geschlossener Kerze ohne Diskrepanzen zwischen den Modi.

EvaluateHistoryLookback(); // no alerts



Tests und Ergebnisse

Die Tests wurden mit dem Strategietester des MetaTrader 5 im visuellen Modus durchgeführt, um die strukturelle Richtigkeit, die zeitliche Disziplin und das identische Verhalten der Klassifizierung zu bewerten. Der Zweck der Tests war die analytische Validierung und nicht die Handelsleistung. Dieselbe Implementierung, dieselben Parameter und dieselben Sitzungskonfigurationen wurden ohne Änderungen übernommen.

Um die Robustheit unter verschiedenen Marktbedingungen zu überprüfen, wurden Tests mit dem EURUSD, der ein relativ stabiles FX-Umfeld repräsentiert, und dem XAUUSD (Gold), der ein Instrument mit höherer Volatilität und stärkeren sitzungsbedingten Bewegungen darstellt, durchgeführt.

Aufbau und Stabilität der Sitzung

Bei beiden Symbolen wurden die Sitzungsfenster in Tokio, London und New York nacheinander gebildet und korrekt auf die Brokerzeit abgestimmt. Die Sitzungsrechtecke vergrößerten sich nur, solange die jeweiligen Sitzungen aktiv waren, und blieben stabil, wenn das Sitzungsfenster weiterlief. Die Grenzen werden nach dem Schließen der Kerze nicht mehr geändert. Dieses Verhalten wurde durchgängig bei der historischen Rekonstruktion und der Live-Wiedergabe des Testers beobachtet, was bestätigt, dass die Zugehörigkeit zu einer Sitzung anhand von absoluten Kerzenzeitstempeln bewertet wird und bei der Konstruktion des Bereichs die Beschränkungen für geschlossene Kerzen eingehalten werden.

Abbildung oben: Strategie-Tester für EURUSD H1

Annahme und Ablehnung an den Grenzen der Sitzung

Beim EURUSD verlief die Interaktion an den Sitzungsgrenzen im Allgemeinen ordnungsgemäß. Die Annahme des Ausbruchs erfolgte nach einer klaren Sequenz von zwei Kerzen: einer vom CPI unterstützten Ausbruchskerze, gefolgt von einer Bestätigungskerze, die die Sitzungsgrenze erneut testete und darüber hinaus hielt. Ablehnungsfälle zeigten kurze Vorstöße über die Sitzungsniveaus hinaus, gefolgt von entschiedenen Schließungen innerhalb der Spanne, oft begleitet von eindeutigen Umkehrungen der CPI-Schwelle.

Beim XAUUSD galt diese Logik auch bei höherer Volatilität. Die Sitzungsgrenzen wurden aggressiver getestet, aber die Klassifizierungen blieben kontrolliert und nicht wiederholend. Die Rauschunterdrückung und die CPI-Schwellenwerte filterten geringfügige Fluktuationen heraus, sodass nur strukturell bedeutsame Interaktionen markiert werden konnten.

Die Beschränkung auf eine Sitzung pro Seite erwies sich als besonders wirksam bei unbeständigen Bedingungen, da sie wiederholte Klassifizierungen während schneller Grenztests verhinderte.

Abbildung oben: Test auf XAUUSD H1

Visuelle Interpretation und analytischer Wert

Sitzungsrechtecke lieferten einen zeitlich strukturellen Kontext, während Pfeile klassifizierte Interaktionen an Sitzungsgrenzen markierten. Die CPI-Minimarker fügten direkt auf den Bestätigungskerzen einen Druckkontext hinzu, der es ermöglichte, Annahme von Ablehnung zu unterscheiden, ohne sich allein auf die Kerzenfarbe zu verlassen.

Beim EURUSD ergab dies saubere und lehrreiche Beispiele. Beim XAUUSD verdeutlichte die gleiche visuelle Sprache die Absicht innerhalb großer Intraday-Ranges und trennte die Volatilität von der Richtungsbestimmung.


Schlussfolgerung

In diesem Artikel wurde untersucht, wie die Sitzungsstruktur und der Druck auf Kerzenebene kombiniert werden können, um Annahme und Ablehnung an wichtigen Marktgrenzen zu interpretieren. Durch die Behandlung jeder Handelssitzung als eigenständige Phase mit einer eigenen Entwicklungsspanne wurden Höchst- und Tiefststände nicht als statische Linien betrachtet, sondern als kontextbezogene Entscheidungszonen, deren Relevanz sich aus dem Preisverhalten und dem internen Druck ergibt.

Der Candle Pressure Index ist ein praktisches Instrument, um dieses Verhalten zu bewerten. Über die Kerzenfarbe oder -größe hinaus zeigte der CPI, ob die Interaktionen an den Sitzungsgrenzen durch anhaltenden Kauf- oder Verkaufsdruck unterstützt wurden oder ob sie schwache Anzeichen für ein Scheitern darstellten. Bei Anwendung der Logik der geschlossenen Kerze und eines Zwei-Kerzen-Bestätigungsmodells ermöglichte dieser Ansatz die Unterscheidung zwischen Fortsetzung und Ablehnung, ohne diskretionäre Regeln einzuführen. Die MQL5-Implementierung zeigte, dass der Rahmen über verschiedene Instrumente und Volatilitätsregime hinweg stabil bleibt. Die Tests für EURUSD und XAUUSD zeigten eine konsistente Sitzungskonstruktion, CPI-Auswertung und Klassifizierungsverhalten, wenn die Analyse auf vollständig geschlossene Kerzen beschränkt wurde. Beide Modi führten zu übereinstimmenden Ergebnissen, was die analytische Zuverlässigkeit des Ansatzes unterstreicht.

Dieser Rahmen wird ausschließlich als Analyseinstrument und nicht als eigenständiges Handelssystem vorgestellt. Sein Wert liegt in der Klarheit. Durch die Kombination einer zeitbasierten Sitzungsstruktur mit einer druckbasierten Kerzenbewertung bietet die Implementierung eine strukturierte Möglichkeit, das Kursverhalten auf Sitzungsebene neben anderen Formen der Marktanalyse zu beobachten, zu untersuchen und zu kontextualisieren. 

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

Beigefügte Dateien |
CPI_Session_EA.mq5 (52.56 KB)
Die Übertragung der Trading-Signale in einem universalen Expert Advisor. Die Übertragung der Trading-Signale in einem universalen Expert Advisor.
In diesem Artikel wurden die verschiedenen Möglichkeiten beschrieben, um die Trading-Signale von einem Signalmodul des universalen EAs zum Steuermodul der Positionen und Orders zu übertragen. Es wurden die seriellen und parallelen Interfaces betrachtet.
Statistische Arbitrage durch kointegrierte Aktien (Teil 10): Erkennen von Strukturbrüchen Statistische Arbitrage durch kointegrierte Aktien (Teil 10): Erkennen von Strukturbrüchen
In diesem Artikel werden der Chow-Test zur Aufdeckung von Strukturbrüchen in Paarbeziehungen und die Anwendung der kumulativen Summe der Quadrate – CUSUM – zur Überwachung und Früherkennung von Strukturbrüchen vorgestellt. In dem Artikel werden die Ankündigung der Partnerschaft zwischen Nvidia und Intel und die Ankündigung der US-Außenhandelszölle als Beispiele für die Umkehrung der Steigung bzw. die Verschiebung des Abschnitts verwendet. Für alle Tests werden Python-Skripte zur Verfügung gestellt.
Eine alternative Log-datei mit der Verwendung der HTML und CSS Eine alternative Log-datei mit der Verwendung der HTML und CSS
In diesem Artikel werden wir eine sehr einfache, aber leistungsfähige Bibliothek zur Erstellung der HTML-Dateien schreiben, dabei lernen wir auch, wie man eine ihre Darstellung einstellen kann (nach seinem Geschmack) und sehen wir, wie man es leicht in seinem Expert Advisor oder Skript hinzufügen oder verwenden kann.
Entwicklung des Indikators „Market Memory Zones“: Wohin der Kurs wahrscheinlich zurückkehren wird Entwicklung des Indikators „Market Memory Zones“: Wohin der Kurs wahrscheinlich zurückkehren wird
In dieser Diskussion werden wir einen Indikator entwickeln, um Preiszonen zu identifizieren, die durch starke Marktaktivitäten entstehen, wie z. B. impulsive Bewegungen, Strukturverschiebungen und Liquiditätsereignisse. Diese Zonen stellen Bereiche dar, in denen der Markt aufgrund nicht ausgeführter Aufträge oder rascher Preisverschiebungen einen „Speicher“ verlassen hat. Durch die Markierung dieser Regionen auf dem Chart hebt der Indikator hervor, wo der Preis statistisch gesehen mit größerer Wahrscheinlichkeit in der Zukunft wieder auftauchen und reagieren wird.