Rejoignez notre page de fans
- Vues:
- 88
- Note:
- Publié:
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
Présentation
Il s'agit d'une adaptation fidèle pour MetaTrader 5 du cadre théorique de la moyenne mobile relative (RMA) présenté par le Dr Daniel Alexandre Bloch dans son ouvrage « A Course on Systematic Trading with RMA ». Une moyenne mobile classique réduit une fenêtre de cours à un seul chiffre lissé, qui indique le niveau mais pas la rareté : un cours de clôture élevé peut être très éloigné de tous les autres cours environnants, ou bien être élevé tout en restant parfaitement ordinaire au sein de la fenêtre. La RMA répond à cette seconde question. Elle traite la fenêtre glissante comme une petite distribution, classe le cours actuel au sein de celle-ci et exprime ce rang sur une échelle [0, 1] dont la signification reste la même pour tous les instruments et dans tous les régimes de volatilité.
Le cadre comporte trois couches, que le code reflète exactement :
- La moyenne mobile simple (SMA) de la fenêtre glissante de W clôtures, considérée comme l’équilibre local et fixée à zéro.
- La famille des RMA, c’est-à-dire l’écart de chaque point de repère de la fenêtre par rapport à cet équilibre, exprimé sous la forme du rapport pur sma / x - 1, évalué à la dernière clôture, à la première clôture, à la clôture médiane, ainsi qu’aux valeurs minimale et maximale de la fenêtre. S’agissant de rapports, ils sont indépendants de l’échelle et comparables d’un symbole à l’autre.
- Les fractiles, qui reformulent la fenêtre en rendements normalisés (cours de clôture / SMA - 1) et classent les valeurs actuelles, minimales et maximales au sein de cette distribution. Il s’agit de la fonction de distribution de probabilité (CDF) empirique simple, reprise mot pour mot de la définition figurant en annexe de l’article, et f_w est la série sur laquelle s’effectuent effectivement toutes les transactions en aval.

La construction : une fenêtre glissante de cours de clôture devient une moyenne mobile simple (SMA) ; les cours de clôture sont réexprimés sous la forme d’une distribution de rendements normalisés autour de cette SMA ; et le rang du cours actuel au sein de cette distribution devient son fractile sur l’échelle [0, 1].
En plus de cela, deux mesures dérivées sont fournies avec le moteur. Un détecteur de régime classe la dispersion des rendements normalisés comme étant en expansion, en contraction ou en transition, en utilisant les « Relative Extremum Ratios » (ratios d’extrêmes relatifs) de l’article, corroborés par une pente des moindres carrés, un score z et un coefficient de variation. Un moniteur de mouvements défavorables publie d_med_w, le fractile recentré sur la médiane, et D_k, la proportion de mouvements récents d’une barre à l’autre qui étaient à la hausse ; il s’agit d’une mesure de cohérence directionnelle qui permet d’affirmer avec précision que « ce mouvement va dans la direction opposée », plutôt que de s’en remettre à une simple opinion.
Deux programmes sont inclus. RMA_Engine calcule chaque série et les publie toutes les dix-neuf sous forme de tampons, ce qui permet à un Expert Advisor ou à un autre indicateur de lire les chiffres exacts sur le graphique plutôt que de réimplémenter les calculs mathématiques et de se décaler par rapport à la série. RMA_Panel ne calcule absolument rien : il localise le moteur déjà associé au graphique et affiche un groupe de ses tampons dans une sous-fenêtre distincte, car la famille RMA est mesurée en fractions de pour cent et d_med_w est centré sur zéro, ce qui rend ces valeurs illisibles sur l’axe de 0 à 1 du moteur.
Ce que le moteur trace
Le moteur ouvre une fenêtre distincte dont l’axe vertical est ancré sur [0, 1] et trace six courbes :
| Graphique | Apparence | Ce qu’il indique |
|---|---|---|
| Régime | Bande colorée sur toute la hauteur derrière l'ensemble | Vert pour l’expansion, rouge pour la contraction, orange pour une expansion qui s’amorce, bleu pour une contraction qui se déclenche. Rien n’est dessiné tant que le régime n’est pas encore déterminé ; ainsi, un échauffement ne s’ouvre pas sur une tache de couleur signifiant « pas encore de réponse ». |
| f_w | Ligne bleue épaisse | Le fractile de la clôture actuelle : position du dernier rendement normalisé au sein de sa propre fenêtre. Il s'agit de la série principale. |
| f_min / f_max | Pointillés rouges et verts | Les fractiles du minimum et du maximum de la fenêtre, c’est-à-dire les limites inférieure et supérieure de l’enveloppe traversée par f_w. |
| alpha_lo_mean / alpha_hi_mean | Lignes violettes et orange | Niveaux de quantiles lissés : une moyenne mobile exponentielle (EMA) de f_w et de son complément, offrant un fond plus lent sur lequel un pic de f_w apparaît clairement comme tel. |
Trois lignes de repère horizontales sont tracées aux deux seuils d’entrée et à la médiane. Elles sont calculées à partir des mêmes données que celles fournies au robot de trading associé, plutôt que d’être codées en dur ; ainsi, le réajustement des seuils entraîne le déplacement des lignes de repère, évitant que le graphique ne soit en contradiction avec les règles.
Comment l’interpréter. Un f_w qui touche la ligne de guidage supérieure signifieque le cours de clôture actuel se situe au sommet de toute la série observée dans sa fenêtre, ce qui correspond au point de déclenchement d’une traversée à la baisse ; un f_w au niveau de la ligne de guidage inférieure représente le cas inverse. La médiane est le niveau au-delà duquel une tendance doit encore se situer, et son franchissement marque la sortie naturelle. La bande colorée replace cette lecture dans son contexte, puisque la stratégie consiste à ouvrir des positions au début d’une phase d’expansion et à les clôturer pendant la contraction.
Configuration recommandée
| Paramètres | Valeur recommandée | Remarques |
|---|---|---|
| Symbole | N'importe quel | L'échelle des fractiles est auto-normalisée ; aucun étalonnage par symbole n'est donc nécessaire pour que la lecture soit significative. Le développement et les captures d'écran ci-dessous ont été réalisés avec la paire EUR/USD. |
| Période | De M30 à H4 | Fonctionne sur n'importe quelle période. La fenêtre est mesurée en barres ; ainsi, une période plus courte avec la même valeur W correspond simplement à un intervalle de marché plus court. |
| Taille de la fenêtre (W) | 106 barres | Valeur par défaut. L'étude prévoit que la fenêtre soit calibrée en fonction de chaque actif ; il s'agit donc d'un point de départ plutôt que d'une recommandation. |
| Historique requis | W + nombre de barres de rétrospective du régime | 126 barres avec les paramètres par défaut. Chaque graphique commence là où son propre module peut fournir une première réponse, plutôt qu’au début de la période de préchauffage la plus longue de l’ensemble ; les fractiles apparaissent donc avant la bande de régime. |
Caractéristiques principales
Fidèle à l’article
- Le fractile correspond à la définition donnée dans l'annexe de l'article, f_i = (1 / |W_i|) * sum_j I( W_ij <= v_i ), et est implémenté tel qu'il est écrit. En cas de divergence entre le texte de l’article et son annexe, c’est l’annexe qui prévaut et la divergence est documentée dans le code source plutôt que corrigée en silence.
- La classification des régimes suit les ratios d’extrêmes relatifs (Relative Extremum Ratios) : la contraction est testée en premier car il s’agit de l’interprétation la plus stricte, qui nécessite une corroboration, tandis que l’expansion est délibérément plus facile à atteindre.
- Aucun lissage, seuil ou filtre n’a été ajouté qui ne soit pas prévu par le code source.
Conçu pour être lu par d’autres programmes
- Les dix-neuf séries sont toutes exposées sous forme de tampons d’indicateurs : six sont représentées graphiquement et treize sont réservées au calcul. Ainsi, un EA peut lire les mêmes chiffres que ceux affichés sur le graphique, et les deux ne peuvent jamais diverger.
- La carte des tampons réside dans un seul en-tête partagé ; ainsi, le moteur, les panneaux et tout utilisateur parlent un même langage au lieu de s’éloigner les uns des autres sans qu’aucune erreur de compilation ne vienne alerter qui que ce soit.
- Les calculs mathématiques sont entièrement implémentés dans des classes « header-only » sans aucune dépendance vis-à-vis des graphiques ou des ordres ; ainsi, le même code peut piloter un script ou un banc de test sans qu’aucun élément ne soit simulé.
Recalcul incrémental correct
- Chaque passage effectue un nouveau calcul à partir de ` prev_calculated-1`, et non de ` prev_calculated`. La barre à cet indice était encore en cours de formation lors de l’appel précédent et sa clôture n’est devenue définitive qu’à ce moment-là ; la laisser telle quelle figerait une valeur à moitié formée dans chaque série qui en dépend, et la différence de fractile d’une barre à l’autre deviendrait une différence entre deux nombres inachevés.
- Les barres de préchauffage contiennent la valeur EMPTY_VALUE plutôt que zéro ; ainsi, un consommateur arrivant en cours de préchauffage voit « absent » au lieu d’un nombre plausible.
- La classification de régime dépend du chemin suivi à l’intérieur de sa bande de transition ; c’est pourquoi un historique par barre est conservé plutôt qu’un champ glissant, ce qui permet à un passage incrémental de reprendre la chaîne à partir de la barre précédente.
Panneaux empruntant un deuxième axe
- Le moteur ouvre automatiquement les panneaux qui lui sont demandés, en vérifiant d’abord le graphique afin qu’un modèle qui les contient déjà, ou une réinitialisation après un changement de données, n’empile pas une deuxième copie derrière la première. Les panneaux sont supprimés avec le moteur, mais uniquement lors de la suppression effective ; ainsi, changer de période vous ramène à la mise en page que vous aviez quittée.
- Le panneau identifie le moteur en faisant correspondre son nom abrégé sur le graphique au lieu de créer son propre identifiant ; il ne peut donc jamais se dupliquer en un deuxième calcul, paramétré différemment, affiché à côté du calcul réel.
Captures d’écran

La fenêtre du moteur sur l’EURUSD, M30 : f_w avec son enveloppe et les moyennes quantiles lissées, sur fond de régime coloré.

Le panneau « adverse » : d_med_w centré sur zéro, avec D_k au-dessus, indiquant la cohérence directionnelle.

Le panneau de la famille RMA : rma_w avec les minimum et maximum de la fenêtre sur leur propre échelle, l’enveloppe que traverse le cours actuel.
Installation et structure des fichiers
Deux indicateurs et quatre fichiers d'en-tête. La disposition est importante : le moteur charge le panneau via le chemin relatif RMA\RMA_Panel, et les en-têtes sont inclus sous la forme <RMA\...>, donc les deux doivent se trouver dans leurs sous-dossiers RMA respectifs.
| Fichier | Rôle | Description |
|---|---|---|
| Indicateurs\RMA\RMA_Engine.mq5 | Indicateur principal | Exécute les trois modules sur les barres en temps réel, lie les dix-neuf tampons, trace les six graphiques et la bande de régime, et ouvre les panneaux. Ne contient aucun calcul mathématique propre. |
| Indicateurs\RMA\RMA_Panel.mq5 | Panneau de transfert | Localise le moteur sur le graphique et reflète un groupe de ses tampons dans une sous-fenêtre dotée de sa propre échelle. Deux modes : mouvement défavorable (D_k, d_med_w) et la famille RMA (rma_w, rma_min, rma_max). |
| Include\RMA\RmaTypes.mqh | Vocabulaire partagé | Les énumérations de régimes et d’états croisés, la carte des tampons, ainsi que les nombres de tracés et de palettes. Le seul point sur lequel le moteur, les panneaux et tout consommateur s’accordent. |
| Include\RMA\RmaCore.mqh | Noyau numérique | Le SMA, la famille RMA à cinq membres, la distribution des rendements normalisés, la fonction fractile, la plage de la fenêtre et les limites lissées de l’alpha. |
| Include\RMA\RegimeDetector.mqh | Classification des régimes | Expansion, contraction et les deux états de transition, à partir de l’enveloppe du rapport d’extrêmes corroborée par la pente, le score z et le coefficient de variation. |
| Include\RMA\AdverseMonitor.mqh | Cohérence directionnelle | d_med_w, le fractile centré sur la médiane, et D_k, la part ascendante de ses récents pas d’une barre à l’autre. |
Lecture des tampons à partir de votre propre code
Obtenez un descripteur avec iCustom sur RMA\RMA_Engine et lisez n'importe quel indice ci-dessous avec CopyBuffer. Les indices de 0 à 6 correspondent aux séries tracées et ceux de 7 à 18 sont réservés au calcul, mais les dix-neuf sont lisibles.
| Indice | Série | Signification |
|---|---|---|
| 0, 1 | Bande de régime, index de couleur | La hauteur de l'arrière-plan et son emplacement dans la palette. Ne comporte aucune mesure, seulement une couleur. |
| 2 | f_w | Fractile du dernier retour normalisé de la fenêtre, dans [0, 1]. La série principale. |
| 3, 4 | f_min, f_max | Fractiles des valeurs minimale et maximale de la fenêtre. |
| 5, 6 | alpha_lo_mean, alpha_hi_mean | Moyenne exponentielle (EMA) des limites inférieure et supérieure de l'alpha. |
| 7 | sma | Moyenne mobile simple de la fenêtre, en unités de prix. |
| 8 à 12 | rma_w, rma_1, rma_mid, rma_min, rma_max | La famille des RMA : la moyenne mobile simple (sma) divisée par le dernier cours de clôture, le premier cours de clôture, le cours de clôture médian, le cours de clôture minimal et le cours de clôture maximal, moins un. |
| 13 | range | Écart des rendements normalisés de la fenêtre, valeur lue par le détecteur de régime. |
| 14, 15 | alpha_lo, alpha_hi | Niveau de quantile brut occupé par f_w et son complément. |
| 16 | regime | L'énumération du régime sous forme de nombre à virgule flottante : 0 expansion, 1 contraction, 2 stabilisation, 3 rupture, 4 inconnu. |
| 17, 18 | D_k, d_med_w | Cohérence directionnelle et fractile centré sur la médiane. |
Paramètres d'entrée
| Groupe | Paramètres | Valeurs par défaut |
|---|---|---|
| Fenêtre | InpWindowSize, InpSmoothingPeriod | 106 barres, 10 |
| Détection de régime | InpEpsilonLow, InpEpsilonHigh, InpSlopeThreshold, InpRegimeLookback, InpVariationRatioLow, InpZScoreExpansion, InpRangeHistoryLookback | 0,15, 3,0, 0,0001, 20, 0,1, 1,0, 100 |
| Mouvement défavorable | InpAdverseLookback | 10 barres |
| Lignes de référence | InpEntryUpperThreshold, InpEntryLowerThreshold | 0,9, 0,1 |
| Panneaux | InpAutoAttachPanels, InpPanelAdverse, InpPanelRmaValues, InpAdverseThresholdDown, InpAdverseThresholdUp | vrai, vrai, faux, 0,3, 0,7 |
| Arrière-plan du régime | InpShowRegimeBand plus une couleur par régime | vrai, vert foncé / rouge / ambre / bleu |
Base de recherche
La mise en œuvre s'appuie sur :
- Daniel Alexandre Bloch, « A Course on Systematic Trading with RMA », disponible sur SSRN.
Une mise en garde mérite d’être clairement soulignée, car elle provient de la source elle-même : la section « Résultats » de l’article est laissée en suspens pour des travaux futurs. Elle propose un cadre et ses mécanismes, et non un historique de performance empirique. Cet indicateur vous fournit une description de l’état du marché sur une échelle dont la signification est la même partout, ce qui constitue une base pour vos propres tests plutôt qu’un avantage validé hérité de la source.
Un article complémentaire détaille les mathématiques et la mise en œuvre de chaque module, et permet de créer le conseiller expert qui négocie sur ces tampons : « Mise en œuvre du cadre de la moyenne mobile relative (RMA) de Bloch en MQL5 ».
Traduit de l’anglais par MetaQuotes Ltd.
Code original : https://www.mql5.com/en/code/75472
Invictus Trading - Adaptive Kalman Trend
Trend filter based on a constant-velocity Kalman estimator, with process noise dynamically adapting to volatility (ATR), and trend coloring according to the estimated velocity.
SMC Entry Using structure
Market Structure & Smart Trade Tracker (MT5) An advanced all-in-one Smart Money Concepts (SMC) indicator that combines automated market structure mapping, momentum heatmap candles, and institutional trade execution tracking.
Trading Panel EA
Pro Manager est un assistant de trading MT5 tout-en-un conçu pour les sociétés de trading pour compte propre et les traders professionnels. Exécutez vos transactions plus rapidement, gérez vos positions de manière plus intelligente, maîtrisez efficacement les risques et automatisez vos tâches quotidiennes de trading grâce à des outils puissants tels que le « Break-even », le « Average TP », la gestion des « Magic Numbers » et l’« Auto Grid ».
Broker Execution Diagnostics
A read only MT5 script that reports broker symbol specifications, volume limits, price settings, execution modes, trading permissions, margin requirements and estimated profit values.