Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Telegram !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Indicateurs

Relative Moving Average Indicator - indicateur pour MetaTrader 5

Vues:
88
Note:
(3)
Publié:
MQL5 Freelance 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é.

Remarque : il ne s’agit pas de la « RMA » proposée par certaines plateformes de graphiques (le lissage de Wilder, une variante de la moyenne mobile exponentielle). Malgré l’acronyme commun, il s’agit d’un objet totalement différent. Ici, RMA désigne la construction de Bloch : des statistiques de cours mesurées par rapport à une moyenne glissante et projetées sur une distribution de rendements normalisés.

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.

Construction de la RMA : fourchette de prix → SMA → distribution normalisée → fractile

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

Fenêtre de l'oscillateur RMA_Engine avec fractiles, bande alpha et fond de régime sur l'EURUSD M30

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é.

Graphique baissier avec D_k et d_med_w sur l'EURUSD M30

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

Panneau de passage de la famille RMA avec rma_w, min et max sur la paire EURUSD en M30

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.
Attention : chaque groupe d’entrées de l’indicateur occupe un emplacement de paramètre dans l’appel iCustom, même s’il ne contient aucune valeur. Si vous en omettez un, les paramètres restants se décalent d’une position vers le haut, ce qui charge un indicateur de travail configuré avec des chiffres erronés et échoue sans message d’erreur. Transmettez les entrées exactement dans l’ordre où elles sont déclarées, groupes compris.


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
Remarque : les panneaux sont automatiquement ignorés lors d’une exécution non visuelle du Strategy Tester ; ainsi, rien n’est affiché lorsqu’il n’y a pas de graphique sur lequel l’afficher.


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 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 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 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 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.