und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
- Ansichten:
- 10
- Rating:
- Veröffentlicht:
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Überblick
Fast jedes Risikomanagement-Tool im Standard-Toolkit von MetaTrader 5 basiert auf einer versteckten Annahme: dass der schlimmste Verlust, für den man planen sollte, in etwa dem schlimmsten Verlust entspricht, den man bereits erlebt hat. Die Average True Range bemisst die Positionsgröße anhand der jüngsten Volatilität. Ein Monte-Carlo-Resampler mischt die tatsächlich getätigten Trades neu. Der historische Value at Risk (VaR) entnimmt direkt aus Ihrer Renditehistorie ein Perzentil. Alle diese Methoden betrachten den Hauptteil der Verteilung und hoffen stillschweigend, dass die Zukunft nichts Extremeres hervorbringt als die Vergangenheit.
Finanzielle Renditen weisen „Fat Tails“ auf, sodass diese Hoffnung fehl am Platz ist. Große Kursbewegungen treten häufiger auf und reichen weiter, als es eine Normalverteilung zulässt, und der schlimmste Tag in einer Stichprobe ist fast nie der schlimmste Tag, zu dem der Markt fähig ist. Jede Methode, die Verluste nur so hoch einschätzen kann wie die, die bereits in ihrem Betrachtungsfenster liegen, wird einen seltenen Crash systematisch unterschätzen.

Das Normalmodell (Kurve) im Vergleich zu realen Renditen mit dicken Enden (Histogramm). Der schattierte linke Schwanz stellt den Verlust dar, den das Modell übersieht.
Dieser Indikator integriert den für diese Lücke entwickelten Zweig der Statistik nativ in MQL5. Die Extremwerttheorie modelliert nicht die gesamte Verteilung; sie modelliert nur den Randbereich, und zwar mit einer Form, die durch einen Grenzwertsatz begründet und nicht angenommen wird. Das angepasste Modell kann dann über alles in der Stichprobe hinaus extrapolieren: einen Verlust von 99,9 %, eine Bewegung, die etwa einmal alle drei Jahre auftritt – eine Zahl, die Ihre historische Datenreihe tatsächlich nie hervorgebracht hat.
Die Methode. Der Indikator implementiert „Peaks-Over-Threshold“. Er wandelt die Schlusskurse des Charts in eine einseitige Abwärtsverlustreihe um, wobei die Größe jeder Abwärtsbewegung beibehalten und jede Aufwärtsbewegung auf Null gesetzt wird. Er wählt einen hohen Schwellenwert u an einem Quantil dieser Reihe aus, verworfen alles darunter und untersucht nur die Überschreitungen – die Beträge, um die die Verluste den Schwellenwert überschreiten. Der Satz von Pickands-Balkema-de Haan besagt, dass diese Überschreitungen für eine breite Klasse von zugrunde liegenden Verteilungen mit steigendem Schwellenwert zu einer einzigen Familie konvergieren: der verallgemeinerten Pareto-Verteilung. Die Form des Schwanzes muss also nicht geschätzt, sondern lediglich angepasst werden.

„Peaks-Over-Threshold“: Für die Verlustreihe wird ein Schwellenwert festgelegt, die darüber liegenden Überschreitungen werden herausgefiltert, und allein an diese Überschreitungen wird eine verallgemeinerte Pareto-Verteilung angepasst.
Die Anpassung erfolgt durch eine echte Maximum-Likelihood-Optimierung von Form und Skala der GPD, die über den im Terminal enthaltenen ALGLIB-Optimierer mit Nebenbedingungen durchgeführt wird. Es gibt keine Python-Brücke, keine DLL und keinerlei externe Abhängigkeiten.
Was es anzeigt
Drei Zahlen werden in einem gleitenden Fenster berechnet und in einem Panel direkt im Chart angezeigt, wobei die erste davon zusätzlich als Linie in einem Unterfenster dargestellt wird, sodass beobachtet werden kann, wie sich der „Tail“ im Laufe der Zeit verengt oder ausweitet.
| Interpretation | Was es ist | Anwendung |
|---|---|---|
| EVT-VaR | Value at Risk bei dem gewählten Konfidenzniveau, extrapoliert aus dem angepassten Tail statt aus den historischen Daten abgelesen. | Der Verlust, den Sie einkalkulieren sollten. Wird im Panel als Prozentsatz angezeigt und als Linie im Unterfenster dargestellt. Eine ansteigende Linie bedeutet, dass sich der Schwanz verdickt. |
| EVT ES | Expected Shortfall, der durchschnittliche Verlust, falls der VaR überschritten wird. | Wie schlimm es wird, wenn der Worst-Case-Szenario eintritt. Immer schlimmer als der VaR und der ehrlichere Wert für die Platzierung von Stopps. |
| xi (Form) | Der angepasste Tail-Index. Je größer, desto schwergewichtiger: Die Verluste summieren sich weiter in der Zukunft. | Die Regime-Anzeige, im Panel farblich gekennzeichnet. Dies ist der Parameter, der bestimmt, wie weit die Extrapolation reicht. |
Bei den beiden Schätzern handelt es sich um die Standardformen von GPD-POT, sodass das Panel genau Folgendes angibt:
VaR_p = u + (sigma / xi) * [ ( (Nu / n) / (1 - p) )^xi - 1 ] ES_p = VaR_p / (1 - xi) + (sigma - xi * u) / (1 - xi)
Hier ist u der Schwellenwert, Sigma und xi sind die angepasste Skala und Form, und Nu / n ist die Überschreitungsrate. Beide verfügen über eine exponentielle Grenze, die automatisch verwendet wird, wenn die angepasste Form nahe bei Null liegt, was die Arithmetik genau in dem Regime stabil hält, in dem eine Division durch die Form dies nicht tun würde.
Die „Tail-Ampel“. Das Panel färbt die Form so ein, dass der Bereich ohne Interpretation einer Zahl abgelesen werden kann:
| xi | Farbe | Ablesewert |
|---|---|---|
| unter 0,10 | Grün | Ähnlich wie bei der Exponentialverteilung mit schmalem Schwanz. Ruhig. |
| 0,10 bis 0,30 | Gold | Mäßig stark, hier liegen die meisten liquiden Instrumente. |
| über 0,30 | Rot | Schwere Schwänze. Verluste summieren sich und Kursabstürze häufen sich. |
Diese Grenzwerte dienen eher als Orientierungshilfe als als statistische Schwellenwerte und können nach Belieben angepasst werden. Entscheidend ist, dass dieselbe Verteilung, die die Farbe bestimmt, auch die Formeln bestimmt, sodass das Panel nicht grün anzeigen kann, während die Berechnung im Hintergrund einen VaR mit dickem Schwanz ermittelt.

Die Anzeige im Diagramm: Das Panel zeigt den VaR, den Expected Shortfall und die farbcodierte Schwanzform an, während das Unterfenster den EVT-VaR im Zeitverlauf darstellt.
Es weigert sich zu raten
Dies ist eine Designentscheidung, die man kennen sollte, bevor man das Panel einbindet, da sie die Bedeutung eines leeren Messwerts verändert. Eine Zweiparameter-Schwanzanpassung benötigt eine bestimmte Anzahl von Überschreitungen, um vertrauenswürdig zu sein, und in der EVT-Literatur werden etwa dreißig bis fünfzig Schwanzpunkte als praktischer Mindestwert angesehen. Die Engine schreibt dreißig vor. Unterhalb dieser Grenze meldet sie ihren Status statt eines Zahlenwerts, und das Panel drückt dies in klaren Worten aus:
| Status | Bedeutung |
|---|---|
| OK | Die Anpassung konvergierte auf genügend Tail-Daten. VaR, ES und xi sind aktiv. |
| Unzureichende Tail-Daten (weniger als 30 Überschreitungen) | Das Zeitfenster ergab weniger als dreißig Überschreitungen. Erhöhen Sie den Lookback-Zeitraum oder senken Sie das Schwellenquantil. |
| Anpassung konvergierte nicht | Der Optimierer hat keine gültige Form und Skala erreicht. Es wird nichts gemeldet. |
| Nicht angepasst / fehlerhafte Eingabe | Es wurde noch keine Anpassung durchgeführt, oder das Fenster war leer oder entartet. |
Ein konkretes Beispiel dafür in der Praxis: Bei der Standardschwelle von 0,95 liefert ein Lookback von 500 Bar nur etwa fünfundzwanzig Überschreitungen, und das Messgerät meldet „unzureichende Daten am Rand“ (25/30 Überschreitungen) anstelle einer Zahl. Bei 800 bar wird der Schwellenwert überschritten und die Anpassung erfolgt einwandfrei. Das ist kein Fehler, den man umgehen muss, sondern das Modell weigert sich, eine Schätzung abzugeben – genau das ist das gewünschte Verhalten eines Tools, dessen einziger Zweck darin besteht, seltene Ereignisse ehrlich darzustellen.
Das gleiche Prinzip gilt auch am anderen Ende. Wenn die angepasste Form den Wert eins erreicht, divergiert der Mittelwert des Schwänzens, und der Expected Shortfall existiert nicht mehr; daher gibt die Engine an dieser Stelle Null zurück, anstatt einen erfundenen Wert zu liefern. Überall dort, wo eine Anpassung nicht den Status „OK“ erhält, bleibt die dargestellte Linie für diesen Balken leer, anstatt einen veralteten Wert weiterzuführen; somit ist die Linie genau dort leer, wo das Modell keine Aussage treffen wollte.
Empfohlene Konfiguration
| Einstellung | Empfohlener Wert | Anmerkungen |
|---|---|---|
| Symbol | Jedes liquide Wertpapier | Nichts ist symbolspezifisch: Die Anpassung erfolgt auf Basis der logarithmierten Renditen, daher liegen die Werte als Prozentsätze vor und sind instrumentenübergreifend vergleichbar. Ein Symbol mit geringem Handelsvolumen ist der einzige Fall, bei dem die Untergrenze wahrscheinlich nicht eingehalten wird. |
| Zeitrahmen | H4 oder D1 | Der VaR ist eine Verlustgröße pro Bar, daher bestimmt der Zeitrahmen, was die Zahl bedeutet. Auf D1 handelt es sich um einen Tagesverlust. Intraday funktioniert zwar, aber der Ausreißer einer 1-Minuten-Rendite ist ein anderes Phänomen. |
| Rückblick | 800 Balken | So gewählt, dass der Schwellenwert von 0,95 die Untergrenze von 30 Überschreitungen mit Spielraum unterschreitet. Kürzere Zeitfenster reagieren schneller, stoßen jedoch an die Untergrenze. |
| Erforderliche Historie | Lookback + 2 Balken | Vor dem ersten anpassbaren Balken wird nichts dargestellt. Stellen Sie sicher, dass der Chart tatsächlich so viele historische Daten heruntergeladen hat, sonst bleibt die Anzeige leer. |
| Schwellenwert-Quantil | 0,95 | Die Standardvoreinstellung. Eine Verringerung dieses Wertes führt zu Überschreitungen auf Kosten der asymptotischen Gültigkeit, da der Satz nur bei steigendem Schwellenwert gilt. |
Eingabeparameter
| Parameter | Standard | Beschreibung |
|---|---|---|
| Rückblick | 800 | Gleitendes Fenster in Bars, über das jede Anpassung berechnet wird. Ein Fenster, dessen verwertbare Renditen unter die Hälfte dieses Wertes fallen, wird als zu spärlich verworfen. |
| Schwellenwert | 0,95 | Quantil der Verlustreihe, das zur Festlegung des POT-Schwellenwerts u verwendet wird. Zulässige Werte liegen zwischen 0,5 und 0,999. |
| Konfidenz | 0,99 | Konfidenzniveau für VaR und ES. Da der angepasste Schwanz extrapoliert wird, ist 0,999 eine zulässige Einstellung, auch wenn die Stichprobe keinen solchen Verlust enthält. |
| RefitEvery | 1 | Häufigkeit der Neuanpassung für historische Balken. Bei einem Wert von 1 wird jeder Balken neu angepasst und die dargestellte Linie vollständig aufgelöst; eine Erhöhung dieses Wertes tauscht bei sehr langen Charts die historische Auflösung gegen Geschwindigkeit ein. Der aktuelle Balken wird unabhängig davon immer neu angepasst. |
| ShowPanel | true | Zeigt das Textfeld auf dem Chart an. Die Objekte des Textfelds werden entfernt, wenn der Indikator abgetrennt wird. |
Verwendung der Engine in Ihrem eigenen Code
Das Tail-Modell ist eine eigenständige „Header-only“-Klasse, CGPDModel, ohne Abhängigkeit von Charts oder Indikator-Puffern. Es passt ein Array von Verlusten an, wobei „größer“ einfach „schlechter“ bedeutet; somit bleibt die Vorzeichenkonvention die des Aufrufers, und jede Strategie, die eine Verlustreihe erzeugen kann, kann es direkt verwenden:
#include <EVT\GPDModel.mqh> CGPDModel model; model.SetThresholdQuantile(0.95); if(model.Fit(losses,count) && model.IsReliable()) { double var = model.VaR(0.99); double es = model.ExpectedShortfall(0.99); double xi = model.Xi(); } else Print("tail not usable: ",model.StatusText());
Darüber hinaus stellt die Klasse die angepasste Skala, den ausgewählten Schwellenwert, die Anzahl der Überschreitungen und die Status-Enumeration bereit, sodass ein Nutzer genau protokollieren oder anzeigen kann, warum ein Wert zurückgehalten wurde. Um den Indikator anstelle der Klasse auszulesen, erwirben Sie ein Handle mit iCustom auf EVT\EVTCrashGauge und kopieren Sie Puffer 0, der den EVT-VaR enthält und bei jedem Balken, bei dem die Anpassung nicht zuverlässig war, den Wert Null enthält.
Einschränkungen
EVT hat seinen Platz in einem Risiko-Toolkit verdient, ist jedoch ein spezialisiertes Instrument, und um es gut einzusetzen, muss man wissen, wo es nicht anwendbar ist:
- Es benötigt umfangreiche Daten zu den Extremwerten. Eine Anpassung der Extremwerte mit zwei Parametern erfordert eine aussagekräftige Anzahl von Überschreitungen. Bei einem wenig gehandelten Wertpapier oder einem kurzen Zeitfenster lautet die richtige Antwort „unzureichende Daten“, und das Design berücksichtigt dies, anstatt eine Zahl zu erfinden.
- Es reagiert empfindlich auf den Schwellenwert. Der Standardwert von 0,95 ist gängig, doch die angepasste Form und Skala verschieben sich mit ihm. Bei einem ernsthaften Einsatz sollte diese Empfindlichkeit untersucht werden, anstatt sich auf eine einzige Einstellung zu verlassen – weshalb das Quantil als Eingabewert zur Verfügung steht.
- Es misst die Größenordnung, nicht den Zeitpunkt. Das ist es wert, wiederholt zu werden, da es sich um den häufigsten Missbrauch handelt. Ein steigender Tail-Index ist kein Richtungssignal.
- Der Schwanz kann seine klare Definition verlieren. Wenn sich die angepasste Form der Eins nähert, hört der Expected Shortfall auf zu existieren, und ein Wert von Null in diesem Bereich ist selbst eine Information und kein Fehler.
Dateistruktur
Ein Indikator und ein Header. Der Header ist als <EVT\GPDModel.mqh> enthalten und muss daher im EVT- Unterordner unter „Include“ abgelegt werden.
| Datei | Rolle | Beschreibung |
|---|---|---|
| Indikatoren\EVT\EVTCrashGauge.mq5 | Das Gauge | Erstellt die Abwärtsverlust-Reihe aus dem gleitenden Fenster der Schlusskurse, passt die Anpassung an den Takt der Kerzen an, zeichnet den EVT-VaR auf und verwaltet das Panel im Chart mit seinem farbcodierten Tail-Wert. |
| Include\EVT\GPDModel.mqh | Tail-Engine | Die Klasse CGPDModel: Schwellenwertauswahl, Extraktion von Überschreitungen, Maximum-Likelihood-Anpassung des GPD mittels ALGLIB-Optimierung mit Nebenbedingungen, VaR und Expected Shortfall sowie die Statusaufzählung, die jeden Messwert steuert. |
Die Engine versorgt den Optimierer vor der Ausführung der Maximum-Likelihood-Schätzung mit einer Schätzung nach der Methode der Momente und beschränkt die Form auf einen sinnvollen Bereich, sodass ein pathologisches Fenster die Anpassung eher in Richtung einer verworfenen als in Richtung einer plausibel erscheinenden, aber falschen Anpassung treibt.
Forschungsgrundlage
Die Implementierung folgt der Standardbehandlung von „Peaks-Over-Threshold“ in der Extremwerttheorie: dem Pickands-Balkema-de-Haan-Theorem zur Konvergenz von Schwellenwertüberschreitungen zur verallgemeinerten Pareto-Verteilung, der Maximum-Likelihood-Schätzung ihrer Form und ihres Maßstabs sowie den üblichen GPD-POT-Ausdrücken für Value at Risk und Expected Shortfall.
Ein begleitender Artikel leitet die Methode her, führt Zeile für Zeile durch die Engine und den Indikator und bindet die Tail-Schätzung in einen Expert Advisor zur Positionsgrößenbestimmung ein, um dessen Verhalten im Strategietester zu messen: Extremwerttheorie in MQL5: Entwicklung eines Tail-Risk-Crash-Gauges jenseits des Monte-Carlo-VaR.
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/75557
RSI Histogram
Dies ist ein benutzerdefinierter MQL5-Indikator für MetaTrader 5 namens „RSI-Histogramm“. Er stellt die Standard-RSI-Linie in einem separaten Fenster dar, ergänzt durch eine farbcodierte Histogramm-Version derselben RSI-Werte, deren Farbe sich je nach Momentum ändert:
Relative Moving Average EA
Eine MQL5-Implementierung aller vier Crossover-Strategien aus Blochs „Relative Moving Average“-Framework, ergänzt um seine adaptiven Crossover-Exit-Regeln, die je nach Volatilitätsregime wechseln. Ein- und Ausstiege erfolgen im Fraktilraum, sodass die Schwellenwerte für jedes Symbol dieselbe Bedeutung haben.
GoldLondonBreakout
Bei XAUUSD werden im asiatischen Handel die Positionen innerhalb der Spanne gehalten, anschließend wird für die Eröffnung in London ein OCO-Breakout-Paar (BuyStop/SellStop) platziert, mit ATR-basierten Stopps und einer Positionsgröße, die sich am Risikoprozentsatz orientiert. Keine Indikatoren, keine Ermessensentscheidungen – die Spanne wird gemessen, nicht geschätzt.
Sessionvolatilityheatmap
Zeigt die durchschnittliche Preisspanne pro Stunde des Handelstages als Heatmap direkt im Chart an, ergänzt durch eine Schattierung hinter den Kerzen für die Handelssitzungen in Asien, London und New York – so können Sie erkennen, wann sich ein Wertpapier tatsächlich bewegt, anstatt nur zu raten.