Rejoignez notre page de fans
- Vues:
- 51
- Note:
- Publié:
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
Aperçu
Presque tous les outils de gestion des risques de la boîte à outils standard de MetaTrader 5 partagent une hypothèse cachée : la pire perte à anticiper correspond à peu près à la pire perte que vous ayez déjà subie. L’Average True Range (ATR) dimensionne les positions en fonction de la volatilité récente. Un rééchantillonneur de Monte Carlo réorganise les transactions que vous avez réellement effectuées. La valeur à risque historique (Historical Value at Risk) extrait un centile directement de l’historique de vos rendements. Tous ces outils se basent sur le corps de la distribution et espèrent secrètement que l’avenir ne produira rien de plus extrême que le passé.
Les rendements financiers présentent des queues épaisses; cet espoir est donc vain. Les fluctuations importantes se produisent plus souvent et vont plus loin que ne le permet une distribution normale, et la pire journée d’un échantillon n’est presque jamais la pire journée dont le marché est capable. Toute méthode qui ne peut envisager que des pertes aussi importantes que celles déjà présentes dans son champ d’observation sous-estimera systématiquement un krach rare.

Le modèle normal (courbe) par rapport aux rendements réels à queues épaisses (histogramme). La queue gauche ombrée correspond à la perte qu’il ne prend pas en compte.
Cet indicateur intègre nativement dans MQL5 la branche des statistiques développée pour combler cette lacune. La théorie des valeurs extrêmes ne modélise pas l’ensemble de la distribution ; elle ne modélise que la queue, et ce avec une forme justifiée par un théorème de limite plutôt que supposée. Le modèle ajusté peut alors extrapoler au-delà de tout ce qui figure dans l’échantillon : une perte de 99,9 %, un mouvement observé environ une fois tous les trois ans, un chiffre que votre historique n’a en réalité jamais produit.
La méthode. L’indicateur met en œuvre la technique « Peaks-Over-Threshold ». Il convertit les cours de clôture du graphique en une série de pertes à la baisse unilatérale, en conservant l’amplitude de chaque mouvement baissier et en attribuant la valeur zéro à chaque mouvement haussier. Il choisit un seuil élevé u à un quantile de cette série, écarte tout ce qui se trouve en dessous et n’étudie que les dépassements, c’est-à-dire les montants par lesquels les pertes franchissent le seuil. Le théorème de Pickands-Balkema-de Haan stipule que, pour une vaste classe de distributions sous-jacentes, ces dépassements convergent, à mesure que le seuil augmente, vers une seule famille : la distribution de Pareto généralisée. Il n’est donc pas nécessaire de deviner la forme de la queue, mais seulement de l’ajuster.

Pics au-dessus du seuil : un seuil est défini sur la série de pertes, les dépassements au-dessus de celui-ci sont isolés, puis une distribution de Pareto généralisée est ajustée uniquement à ces dépassements.
L’ajustement consiste en une véritable optimisation par maximum de vraisemblance de la forme et de l’échelle de la distribution de Pareto généralisée (GPD), effectuée via l’optimiseur sous contraintes ALGLIB fourni avec le terminal. Il n’y a ni passerelle Python, ni DLL, ni aucune dépendance externe d’aucune sorte.
Ce qu’il indique
Trois chiffres sont calculés sur une fenêtre glissante et affichés dans un panneau intégré au graphique ; le premier d’entre eux est également représenté sous forme de courbe dans une sous-fenêtre, ce qui permet d’observer le resserrement ou l’élargissement de la queue au fil du temps.
| Interprétation | De quoi s’agit-il ? | Comment l'utiliser |
|---|---|---|
| EVT VaR | Valeur à risque au niveau de confiance choisi, extrapolée à partir de la queue ajustée plutôt que lue à partir de l'historique. | La perte que vous devez prévoir. Affichée sous forme de pourcentage sur le panneau et représentée par la courbe de la sous-fenêtre. Une courbe ascendante indique que la queue s'épaissit. |
| EVT ES | Shortfall attendu : la perte moyenne en cas de dépassement de la VaR. | L'ampleur du sinistre une fois que le scénario le plus défavorable se produit. Toujours supérieure à la VaR, c'est le chiffre le plus fiable pour le placement des stops. |
| xi (forme) | L'indice de queue ajusté. Plus il est élevé, plus la courbe est lourde : les pertes s'amplifient à mesure que l'on s'éloigne. | L'indicateur de régime, représenté par un code couleur sur le tableau. C'est le paramètre qui détermine la portée de l'extrapolation. |
Ces deux estimateurs correspondent aux formulaires GPD-POT standard ; le tableau indique donc exactement :
VaR_p = u + (sigma / xi) * [ ( (Nu / n) / (1 - p) )^xi - 1 ] ES_p = VaR_p / (1 - xi) + (sigma - xi * u) / (1 - xi)
Ici, u est le seuil, sigma et xi sont l’échelle et la forme ajustées, et Nu / n est le taux de dépassement. Les deux disposent d’une limite exponentielle qui est utilisée automatiquement lorsque la forme ajustée est proche de zéro, ce qui maintient la stabilité arithmétique précisément dans le régime où la division par la forme ne le serait pas.
Le feu tricolore de queue. Le panel met la forme en couleur afin que le régime puisse être lu sans avoir à interpréter un chiffre :
| xi | Couleur | Lecture |
|---|---|---|
| inférieur à 0,10 | Vert | Proche du cas exponentiel à queue fine. Calme. |
| De 0,10 à 0,30 | Or | Modérément intense, où se situent la plupart des instruments liquides. |
| supérieur à 0,30 | Rouge | Queue lourde. Les pertes s’accumulent et les krachs se multiplient. |
Ces seuils sont davantage des aides à la lecture que des seuils statistiques, et ils peuvent être modifiés à votre convenance. Ce qui importe, c’est que la forme qui détermine la couleur soit la même que celle qui détermine les formules ; ainsi, le panneau ne peut pas afficher du vert alors que le calcul effectue discrètement une VaR à queue épaisse.

L'indicateur sur un graphique : le panneau affiche la VaR, l'Expected Shortfall et la forme de la queue codée par couleur, tandis que la sous-fenêtre trace la VaR EVT au fil du temps.
Il refuse de deviner
Il s’agit là d’un choix de conception qu’il convient de connaître avant d’intégrer ce module, car il modifie la signification d’un affichage vide. Un ajustement de queue à deux paramètres nécessite un nombre réel de dépassements pour être fiable, et la littérature sur l’EVT considère qu’environ trente à cinquante points de queue constituent le seuil pratique minimum. Le moteur impose le nombre de trente. En dessous de ce seuil, il signale son état plutôt qu’un chiffre, et le panneau l’indique clairement :
| Statut | Signification |
|---|---|
| OK | L'ajustement a convergé sur un nombre suffisant de données de queue. La VaR, l'ES et xi sont opérationnels. |
| Données de queue insuffisantes (N/30 dépassements) | La fenêtre a généré moins de trente dépassements. Augmentez la période de rétrospective ou abaissez le quantile seuil. |
| L'ajustement n'a pas convergé | L'optimiseur n'a pas atteint une forme et une échelle valides. Aucun résultat n'est rapporté. |
| Pas d’ajustement / entrée incorrecte | Aucun ajustement n’a encore été effectué, ou la fenêtre était vide ou dégénérée. |
Un exemple concret de ce phénomène : avec le seuil par défaut de 0,95, une période de référence de 500 bar ne donne qu’une vingtaine de dépassements, et l’indicateur signale un manque de données en queue de distribution (25/30 dépassements) au lieu d’afficher un chiffre. À 800 bars, le seuil est franchi et l’ajustement s’effectue correctement. Il ne s’agit pas d’un bug à contourner, mais du modèle refusant de faire des suppositions, ce qui correspond précisément au comportement attendu d’un outil dont l’objectif premier est de refléter fidèlement les événements rares.
Le même principe s’applique à l’autre extrémité. Lorsque la courbe ajustée atteint un, la moyenne de la queue diverge et l’« Expected Shortfall » cesse d’exister ; le moteur renvoie donc zéro à cet endroit plutôt qu’un chiffre inventé. Chaque fois qu’un ajustement n’obtient pas le statut « OK », la ligne tracée reste vierge pour cette barre plutôt que de reporter une valeur obsolète ; la ligne est donc vide exactement là où le modèle a refusé de se prononcer.
Configuration recommandée
| Paramètre | Valeur recommandée | Remarques |
|---|---|---|
| Symbole | Tout instrument liquide | Aucun paramètre n’est spécifique à un symbole : l’ajustement s’effectue sur les rendements logarithmiques, de sorte que les valeurs sont exprimées en pourcentage et comparables d’un instrument à l’autre. Un symbole peu négocié est le seul cas susceptible de ne pas respecter le seuil minimal. |
| Horizon temporel | H4 ou D1 | La VaR correspond à l’ampleur d’une perte par barre ; l’horizon temporel détermine donc la signification de ce chiffre. Sur D1, il s’agit d’une perte journalière. L’horizon intrajournalier fonctionne, mais la queue d’un rendement sur une minute constitue un cas à part. |
| Période de référence | 800 barres | Ce choix permet au seuil de 0,95 de dépasser largement le seuil minimal de trente dépassements. Des fenêtres plus courtes réagissent plus rapidement mais atteignent ce seuil minimal. |
| Historique requis | Période de rétrospective + 2 barres | Rien n’est affiché avant la première barre pouvant être prise en compte. Assurez-vous que le graphique a bien téléchargé suffisamment d’historique, sinon l’indicateur restera vide. |
| Quantile du seuil | 0,95 | Valeur par défaut standard. L'abaisser entraîne des dépassements au détriment de la validité asymptotique, car le théorème reste valable à mesure que le seuil augmente. |
Paramètres d'entrée
| Paramètre | Valeur par défaut | Description |
|---|---|---|
| Lookback | 800 | Fenêtre glissante, en barres, sur laquelle chaque ajustement est calculé. Une fenêtre dont les rendements exploitables sont inférieurs à la moitié de ce nombre est rejetée car trop clairsemée. |
| Seuil quant | 0,95 | Quantile de la série de pertes utilisé pour fixer le seuil u du POT. Valeurs acceptées comprises entre 0,5 et 0,999. |
| Confiance | 0,99 | Niveau de confiance pour la VaR et l'ES. La queue ajustée s'extrapole ; par conséquent, la valeur 0,999 est un paramètre valable même si l'échantillon ne contient aucune perte de ce type. |
| RefitEvery | 1 | Fréquence de réajustement des barres historiques. À 1, chaque barre est réajustée et la courbe tracée est entièrement résolue ; augmenter cette valeur permet de privilégier la vitesse au détriment de la résolution historique sur les graphiques très longs. La barre actuelle est toujours réajustée, quel que soit le réglage. |
| Afficher le panneau | true | Affiche le panneau de texte sur le graphique. Les objets du panneau sont supprimés lorsque l'indicateur est détaché. |
Utilisation du moteur dans votre propre code
Le modèle « tail » est une classe autonome de type « header-only », CGPDModel, sans dépendance vis-à-vis des graphiques ou des tampons d’indicateurs. Il ajuste un tableau de pertes où une valeur plus grande signifie simplement une situation plus défavorable ; la convention de signe reste donc celle de l’appelant, et toute stratégie capable de produire une série de pertes peut l’utiliser directement :
#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());
Par ailleurs, la classe expose l’échelle ajustée, le seuil sélectionné, le nombre de dépassements et l’énumération d’état, ce qui permet à un utilisateur d’enregistrer ou d’afficher précisément la raison pour laquelle une valeur n’a pas été communiquée. Pour lire l’indicateur plutôt que la classe, obtenez un descripteur avec iCustom sur EVT\EVTCrashGauge et copiez le tampon 0, qui contient la VaR EVT et prend la valeur zéro sur toute barre où l’ajustement n’était pas fiable.
Limites
EVT a sa place dans une boîte à outils de gestion des risques, mais il s’agit d’un instrument spécialisé et pour bien l’utiliser, il faut savoir dans quels cas il ne s’applique pas :
- Il a besoin de nombreuses données de queue. Un ajustement de queue à deux paramètres nécessite un nombre significatif de dépassements. Pour un titre peu négocié ou une fenêtre de temps courte, la bonne réponse est « données insuffisantes », et la conception en tient compte plutôt que d’inventer un chiffre.
- Il est sensible au seuil. La valeur par défaut de 0,95 est standard, mais la forme et l’échelle ajustées varient en fonction de ce seuil. Une mise en œuvre sérieuse consisterait à étudier cette sensibilité plutôt que de se fier à un seul paramètre, c’est pourquoi le quantile est proposé comme paramètre d’entrée.
- Il mesure l’amplitude, et non le moment. Cela mérite d’être répété, car il s’agit de l’erreur d’utilisation la plus courante. Un indice de queue en hausse n’est pas un signal directionnel.
- La queue peut cesser d’être bien définie. À mesure que la forme ajustée tend vers un, le « shortfall attendu » cesse d’exister, et une valeur nulle dans ce régime constitue en soi une information plutôt qu’un échec.
Structure du fichier
Un indicateur et un en-tête. L’en-tête est inclus sous le nom <EVT\GPDModel.mqh>; il doit donc se trouver dans le sous-dossier EVT de la partition Include.
| Fichier | Rôle | Description |
|---|---|---|
| Indicators\EVT\EVTCrashGauge.mq5 | La jauge | Construit la série des pertes à la baisse à partir d’une fenêtre glissante de cours de clôture, effectue l’ajustement au rythme des barres, trace la VaR EVT et maintient le panneau sur le graphique avec la lecture de la queue codée par couleur. |
| Include\EVT\GPDModel.mqh | Moteur de calcul des queues | La classe CGPDModel : sélection des seuils, extraction des dépassements, ajustement par maximum de vraisemblance du GPD via l’optimisation contrainte d’ALGLIB, VaR et shortfall attendu, ainsi que l’énumération d’états qui contrôle chaque valeur affichée. |
Le moteur alimente l’optimiseur avec une estimation par la méthode des moments avant d’exécuter le calcul de vraisemblance maximale, et contraint la forme à une plage raisonnable, de sorte qu’une fenêtre pathologique le pousse vers un ajustement rejeté plutôt que vers un ajustement erroné mais d’apparence plausible.
Fondements de la recherche
La mise en œuvre suit le traitement standard « Peaks-Over-Threshold » (pics au-dessus du seuil) de la théorie des valeurs extrêmes : le théorème de Pickands-Balkema-de Haan concernant la convergence des excès par rapport au seuil vers la distribution de Pareto généralisée, l’estimation par maximum de vraisemblance de sa forme et de son échelle, ainsi que les expressions habituelles GPD-POT pour la valeur à risque (VaR) et le shortfall attendu.
Un article complémentaire présente le raisonnement à l’origine de la méthode, explique le moteur et l’indicateur ligne par ligne, et intègre l’estimation de la queue dans un Expert Advisor de dimensionnement de position afin d’évaluer son comportement dans le Strategy Tester : « Extreme Value Theory in MQL5 : Building a Tail-Risk Crash Gauge Beyond Monte Carlo VaR ».
Traduit de l’anglais par MetaQuotes Ltd.
Code original : https://www.mql5.com/en/code/75557
RSI Histogram
Il s'agit d'un indicateur personnalisé MQL5 pour MetaTrader 5, appelé « RSI Histogram ». Il affiche la courbe RSI standard dans une fenêtre distincte, ainsi qu'une version sous forme d'histogramme, avec un code couleur, des mêmes valeurs RSI, dont la couleur varie en fonction de la dynamique :
IronHawk Fibonacci Structure Map
Free MT5 indicator that automatically maps Fibonacci levels across multiple timeframes and highlights confluence zones, market structure, premium/discount areas and key price reactions.
GDS Renko Reversal Context
A simple MT5 indicator that shows the current fixed-size Renko run and the exact price level required to confirm a classic two-brick reversal.
GDS Renko Bricks
A simple real-time classic Renko chart for MetaTrader 5. Set the brick size and the indicator builds equal-width Renko bricks directly from tick data. No offline charts, custom symbols or external libraries are required.