Diskussion zum Artikel "Entwicklung eines Toolkits für die Price-Action-Analyse (Teil 29): Boom and Crash Interceptor EA"

 

Neuer Artikel Entwicklung eines Toolkits für die Price-Action-Analyse (Teil 29): Boom and Crash Interceptor EA :

Erfahren Sie, wie der „Boom & Crash Interceptor EA“ Ihre Charts in ein proaktives Warnsystem verwandelt – indem er explosive Kursbewegungen durch blitzschnelle Scans, Prüfungen auf Volatilitätsschübe, Trendbestätigungen und Pivot-Zone-Filter erkennt. Mit den klar erkennbaren Pfeilen, grün für „Boom“ und rot für „Crash“, die Sie bei jeder Entscheidung leiten, filtert dieses Tool das Marktrauschen heraus und ermöglicht es Ihnen, von Kurssprüngen zu profitieren wie nie zuvor. Tauchen Sie ein und erfahren Sie, wie es funktioniert und warum es zu Ihrem nächsten entscheidenden Vorteil werden kann.

Der EA „Boom & Crash Interceptor“ verfolgt denselben disziplinierten Ansatz bei der Auswertung von Marktdaten.  Ein gleitendes Fenster zur Messung der Kursgeschwindigkeit ermittelt, ob der aktuelle Kursimpuls das jüngste Kursverhalten übertrifft. Ein auf dem ATR basierender Multiplikator für Volatilitätssprünge bestätigt, dass die Volatilität deutlich zugenommen hat, und Trendfilter auf Basis gleitender Durchschnitte bestätigen die Marktrichtung.  Optionale Pivot-Zonen- und Filter nach Handelszeiten unterdrücken Signale zusätzlich, die andernfalls in Phasen geringer Liquidität auftreten würden. 

Sobald alle Ebenen bestätigt sind, zeichnet der EA einen eindeutigen „BOOM“- oder „CRASH“-Pfeil in das Chart ein, komplett mit benutzerdefinierten Farben, Abständen und CSV-Protokollierung. Dadurch wird sichergestellt, dass die Aufmerksamkeit den Chancen mit hoher Wahrscheinlichkeit vorbehalten bleibt.  Auf den folgenden Seiten wird erläutert, wie die einzelnen Erkennungsschichten kalibriert werden können und wie dieses MQL5-Tool als robuste, signalgesteuerte Komponente eines umfassenderen Handelsframeworks eingesetzt werden kann.


Autor: Christian Benjamin

 
Nochmals vielen Dank für die ausführlichen Ideen und den Brainstorming-Beitrag zur MQL5-Welt. Ich wünsche dir und deinen Liebsten alles Gute für die Zukunft.
 
Mustafa Nail Sertoglu #:
Nochmals vielen Dank für die ausführlichen Ideen und den Brainstorming-Beitrag zur MQL5-Welt. Ich wünsche dir und deinen Liebsten alles Gute für die Zukunft
Gern geschehen!
Ich weiß es wirklich zu schätzen, dass du dich gemeldet hast.
 
NACH ALL DEM KANN ICH SAGEN: DU KOMMST AUS AFRIKA, STIMMT’S?
 

Hallo,

Kann ich das bitte herunterladen? Ich finde keine Links.

Viele Grüße

Harry

 

Es gibt ein Problem mit dem Geschwindigkeitssensor.

ArraySort(d);

In Kaufrichtung funktioniert er gut,

bei negativen Kursbewegungen ist die Sortierung jedoch fehlerhaft.
Du musst dies separat vornehmen oder die Indexformel ändern (bei Verkäufen die Sortierung negativer Werte!!!)

 

if(delta>0) { for(int i = 1; i < VelocityHistoryBars; i++)     d[i - 1] = velHistory[0] - velHistory[i]; ArraySort(d); } if(delta<0) { for(int i = 1; i < VelocityHistoryBars; i++)     d[i - 1] = velHistory[i] - velHistory[0]; ArraySort(d); }

int idx= (int)MathRound((VelocityPctile / 100.0) * (ArraySize(d) - 1)); double velTh = d[ArraySize(d) - 1 - idx]; bool okVel = MathAbs(delta) > velTh;

 

Ich habe einige Varianten zur Pivot-Ausrichtung.
Ich weiß nicht, ob das besser ist.
(Ausgehend von dem Kurs, bei dem der Pivot nach oben zeigt, erwarten wir eine Aufwärtsbewegung ...)

bool okZone = false;
if((delta > 0 ) && (priceNow > pivot)) okZone = true;
if((delta < 0 ) && (priceNow < pivot)) okZone = true;
bool okZone = false;

if((delta > 0 ) && (priceNow > pivot) && (priceNow < ( pivot + ZONE_Points * _Point)))  okZone = true;
if((delta < 0 ) && (priceNow < pivot) && (priceNow > ( pivot - ZONE_Points * _Point)))  okZone = true;

 

Gute Bewertung der Balken in Richtung des Geschwindigkeitsdetektors:
Wir können die grünen/roten Balken prozentual filtern.
(Die negative Richtung wurde in positive Werte umgewandelt)
0,8 = 80 % der Balken waren in der richtigen Richtung.

   double goodBars = 1;

   for(int i=ArraySize(d) - 1; i>=0; i--)
         if(d[i] < 0) goodBars=1 - (i+1.0)/ArraySize(d);