Unisciti alla nostra fan page
- Visualizzazioni:
- 12
- Valutazioni:
- Pubblicato:
-
Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
Panoramica
Si tratta di un fedele porting su MetaTrader 5 del framework della media mobile relativa (RMA) introdotto dal dott. Daniel Alexandre Bloch nel corso "A Course on Systematic Trading with RMA". Una media mobile classica riduce una finestra di prezzi a un unico valore smussato, che indica il livello ma non la rarità: una chiusura alta può essere molto distante da tutti i valori circostanti, oppure alta e tuttavia perfettamente normale all’interno della finestra. L’RMA risponde alla seconda domanda. Considera la finestra di dati come una piccola distribuzione, classifica il prezzo corrente al suo interno e riporta tale posizione su una scala [0, 1] che ha lo stesso significato su ogni strumento e in ogni regime di volatilità.
Il framework è composto da tre livelli, che il codice rispecchia esattamente:
- La SMA della finestra mobile di W chiusure, considerata come l’equilibrio locale e fissata a zero.
- La famiglia RMA, ovvero la deviazione di ciascun punto di riferimento della finestra da tale equilibrio, espressa come rapporto puro sma / x - 1, calcolata all’ultima chiusura, alla prima chiusura, alla chiusura mediana, nonché al minimo e al massimo della finestra. Trattandosi di rapporti, sono indipendenti dalla scala e comparabili tra i diversi titoli.
- I frattili, che riesprimono la finestra come rendimenti normalizzati (chiusura / sma - 1) e classificano i valori correnti, minimi e massimi all’interno di tale distribuzione. Si tratta della semplice CDF empirica, ripresa alla lettera dalla definizione riportata nell’appendice dell’articolo, e f_w è la serie su cui si basano effettivamente tutte le operazioni a valle.

La costruzione: una finestra scorrevole di chiusure diventa una media mobile semplice (SMA), le chiusure vengono riespresse come una distribuzione di rendimenti normalizzati attorno a tale SMA, e la posizione del prezzo corrente all’interno di quella distribuzione diventa il suo frattile sulla scala [0, 1].
Oltre a questi, il motore fornisce due valori derivati. Un rilevatore di regime classifica la dispersione dei rendimenti normalizzati come in espansione, in contrazione o in transizione, utilizzando i «Relative Extremum Ratios» (rapporti di estremi relativi) descritti nell’articolo, corroborati da una pendenza dei minimi quadrati, uno z-score e un coefficiente di variazione. Un monitor dei movimenti avversi pubblica d_med_w, il frattile ricentrato sulla mediana, e D_k, la percentuale di movimenti recenti da barra a barra al suo interno che sono stati al rialzo; si tratta di un indicatore di coerenza direzionale che rende precisa l’affermazione «questo movimento sta andando nella direzione opposta», piuttosto che lasciarla alla soggettività.
Sono inclusi due programmi. RMA_Engine calcola ogni serie e le pubblica tutte e diciannove come buffer, in modo che un Expert Advisor o un altro indicatore possa leggere i numeri esatti sul grafico anziché reimplementare la matematica e perdere la sincronia. RMA_Panel non calcola nulla: individua il motore già collegato al grafico e riproduce un gruppo dei suoi buffer in una finestra secondaria a sé stante, poiché la famiglia RMA è misurata in frazioni di punto percentuale e d_med_w è centrato su zero, quindi nessuno dei due è leggibile sull’asse da 0 a 1 del motore.
Cosa disegna il motore
Il motore apre una finestra separata con l’asse verticale fissato su [0, 1] e disegna sei grafici:
| Grafico | Aspetto | Cosa indica |
|---|---|---|
| Regime | Fascia colorata a tutta altezza dietro ogni elemento | Verde per l’espansione, rosso per la contrazione, ambra per l’espansione in fase di esaurimento, blu per la contrazione che sta prendendo piede. Non viene disegnato nulla finché il regime è ancora indeciso, quindi un warmup non si apre con una sfumatura di colore che significhi “ancora nessuna risposta”. |
| f_w | Spessa linea blu | Il frattile della chiusura corrente: la posizione in cui si colloca l’ultimo rendimento normalizzato all’interno della propria finestra. Questa è la serie primaria. |
| f_min / f_max | Linee tratteggiate rosse e verdi | I frattili del minimo e del massimo della finestra, ovvero il limite inferiore e quello superiore dell’inviluppo attraversato da f_w. |
| alpha_lo_mean / alpha_hi_mean | Linee viola e arancioni | Livelli quantilici smussati: una media esponenziale mobile (EMA) di f_w e del suo complemento, che fornisce lo sfondo più lento rispetto al quale un picco in f_w si presenta come un picco. |
Vengono tracciate tre linee guida orizzontali in corrispondenza delle due soglie di ingresso e della mediana. Esse sono costruite a partire dagli stessi dati forniti all’Expert Advisor associato, anziché essere codificate in modo rigido; pertanto, la regolazione delle soglie sposta di conseguenza anche le linee guida, evitando che il grafico risulti in disaccordo con le regole.
Come interpretarlo. Un valore di f_w a ridosso della guida superiore indicache la chiusura corrente si trova al massimo tra tutti i valori registrati nella finestra, punto in cui si innesca un movimento al ribasso; un valore di f_w a ridosso della guida inferiore rappresenta il caso opposto. La mediana è il livello al di cui un movimento deve trovarsi ancora sul lato destro, e il suo superamento rappresenta l’uscita naturale. La banda colorata fornisce il contesto a tale lettura, poiché la strategia del documento prevede l’apertura delle posizioni all’inizio di una fase di espansione e la loro chiusura durante la fase di contrazione.
Configurazione consigliata
| Impostazione | Valore consigliato | Note |
|---|---|---|
| Simbolo | Qualsiasi | La scala dei frattili è autonormalizzante, pertanto non è necessaria alcuna calibrazione per singolo simbolo affinché la lettura sia significativa. Per lo sviluppo e le schermate riportate di seguito è stata utilizzata la coppia EURUSD. |
| Intervallo di tempo | Da M30 a H4 | Funziona su qualsiasi timeframe. La finestra è misurata in barre, quindi un timeframe più breve con lo stesso valore di W descrive semplicemente un intervallo di mercato più breve. |
| Dimensione della finestra (W) | 106 barre | Impostazione predefinita. L’autore intende che la finestra venga calibrata per ogni singolo asset, pertanto questo valore rappresenta un punto di partenza piuttosto che una raccomandazione. |
| Cronologia richiesta | W + barre di lookback del regime | 126 barre con le impostazioni predefinite. Ogni grafico inizia nel punto in cui il proprio modulo è in grado di fornire la prima risposta, anziché dal periodo di riscaldamento più lungo dell’insieme; pertanto, i frattili compaiono prima della banda di regime. |
Caratteristiche principali
Fedele all’articolo
- Il frattile è definito come nell’appendice dell’articolo, f_i = (1 / |W_i|) * sum_j I( W_ij <= v_i ), implementato come descritto. Laddove il testo dell’articolo e la sua appendice non concordano, prevale l’appendice e la discrepanza viene documentata nel codice sorgente anziché essere corretta in modo silenzioso.
- La classificazione dei regimi segue i Rapporti di Estremo Relativo, verificando prima la contrazione poiché rappresenta l’interpretazione più rigorosa e richiede conferma, mentre l’espansione è deliberatamente più facile da raggiungere.
- Non sono stati aggiunti livellamenti, soglie o filtri che il codice sorgente non richieda.
Progettato per essere letto da altri programmi
- Tutte le diciannove serie sono esposte come buffer di indicatori, sei tracciate e tredici solo a scopo di calcolo, in modo che un EA possa leggere gli stessi numeri mostrati dal grafico e i due non possano mai essere in disaccordo.
- La mappa dei buffer risiede in un’unica intestazione condivisa, così il motore, i pannelli e qualsiasi utente parlano la stessa lingua, invece di allontanarsi l’uno dall’altro senza che alcun errore di compilazione avverta nessuno.
- La matematica risiede interamente in classi "header-only" senza alcuna dipendenza da grafici o ordini, quindi lo stesso codice può pilotare uno script o un test harness senza bisogno di stub.
Ricalcolo incrementale corretto
- Ogni passaggio ricalcola a partire da prev_calculated-1, non da prev_calculated. La barra a quell’indice si stava ancora formando nella chiamata precedente e la sua chiusura è diventata definitiva solo ora; lasciarla così com’è congelerebbe un valore a metà formazione in ogni serie che dipende da essa, e la differenza di frattile da barra a barra diventerebbe una differenza tra due numeri incompleti.
- Le barre di riscaldamento contengono EMPTY_VALUE anziché zero, quindi un consumatore che arriva a metà del riscaldamento vede "assente" invece di un numero plausibile.
- La classificazione del regime dipende dal percorso all’interno della sua banda di transizione, quindi viene mantenuta una cronologia per singola barra anziché un unico campo corrente; è proprio questo che consente a un passaggio incrementale di riprendere la catena dalla barra precedente.
Pannelli che utilizzano un secondo asse
- Il motore apre automaticamente i pannelli richiesti, controllando prima il grafico in modo che un modello che li contenga già, o una reinizializzazione dopo una modifica dell’input, non aggiunga una seconda copia dietro la prima. I pannelli vengono rimossi insieme al motore, ma solo al momento della rimozione effettiva, quindi il cambio di timeframe riporta al layout in cui ci si trovava.
- Il pannello individua il motore confrontando il suo nome abbreviato sul grafico anziché creare un proprio handle, in modo da non poter mai dare origine a un secondo calcolo, parametrizzato in modo diverso, disegnato accanto a quello reale.
Screenshot

La finestra del motore su EURUSD, M30: f_w con la sua inviluppo e le medie quantiliche smussate, sullo sfondo colorato che indica il regime.

Il pannello avverso: d_med_w centrato su zero con D_k sopra di esso, la lettura della coerenza direzionale.

Il pannello della famiglia RMA: rma_w con il minimo e il massimo della finestra su una scala a sé stante, l’inviluppo che il prezzo corrente attraversa.
Installazione e struttura dei file
Due indicatori e quattro file di intestazione. La struttura è importante: il motore carica il pannello tramite il percorso relativo RMA\RMA_Panel, mentre i file di intestazione vengono inclusi come <RMA\...>, pertanto entrambi devono trovarsi nelle rispettive sottocartelle RMA.
| File | Ruolo | Descrizione |
|---|---|---|
| Indicators\RMA\RMA_Engine.mq5 | Indicatore principale | Esegue i tre moduli sulle barre in tempo reale, associa tutti i diciannove buffer, disegna i sei grafici e la banda di regime e apre i pannelli. Non contiene alcuna formula matematica propria. |
| Indicatori\RMA\RMA_Panel.mq5 | Pannello di trasmissione | Posiziona il motore sul grafico e replica un gruppo dei suoi buffer in una finestra secondaria con una propria scala. Due modalità: movimento avverso (D_k, d_med_w) e la famiglia RMA (rma_w, rma_min, rma_max). |
| Include\RMA\RmaTypes.mqh | Vocabolario condiviso | Le enumerazioni di regime e di stato incrociato, la mappa dei buffer e i conteggi dei grafici e delle tavolozze. L’unico punto di accordo tra il motore, i pannelli e qualsiasi consumatore. |
| Include\RMA\RmaCore.mqh | Nucleo numerico | L’SMA, la famiglia RMA a cinque membri, la distribuzione dei rendimenti normalizzati, la funzione frattile, l’intervallo della finestra e i limiti alfa smussati. |
| Include\RMA\RegimeDetector.mqh | Classificazione dei regimi | Espansione, contrazione e i due stati di transizione, ricavati dall’inviluppo del rapporto degli estremi e corroborati da pendenza, z-score e coefficiente di variazione. |
| Include\RMA\AdverseMonitor.mqh | Coerenza direzionale | d_med_w, il frattile centrato sulla mediana, e D_k, la quota al rialzo dei suoi recenti passi da barra a barra. |
Lettura dei buffer dal proprio codice
Ottenere un handle con iCustom su RMA\RMA_Engine e leggere qualsiasi indice sottostante con CopyBuffer. Gli indici da 0 a 6 corrispondono alle serie tracciate e quelli da 7 a 18 sono solo di calcolo, ma tutti i diciannove sono leggibili.
| Indice | Serie | Significato |
|---|---|---|
| 0, 1 | Banda di regime, indice colore | L'altezza dello sfondo e la sua posizione nella tavolozza. Non contiene alcuna misura, ma solo un colore. |
| 2 | f_w | Frattile dell’ultimo valore normalizzato della finestra, nell’intervallo [0, 1]. La serie primaria. |
| 3, 4 | f_min, f_max | Frattili del minimo e del massimo della finestra. |
| 5, 6 | alpha_lo_mean, alpha_hi_mean | Media esponenziale mobile (EMA) dei limiti alfa inferiore e superiore. |
| 7 | sma | Media mobile semplice della finestra, espressa in unità di prezzo. |
| da 8 a 12 | rma_w, rma_1, rma_mid, rma_min, rma_max | La famiglia RMA: sma divisa per l'ultima, la prima, la mediana, la minima e la massima chiusura, meno uno. |
| 13 | range | Dispersione dei rendimenti normalizzati della finestra, il valore rilevato dal rilevatore di regime. |
| 14, 15 | alpha_lo, alpha_hi | Il livello quantile grezzo occupato da f_w e il suo complemento. |
| 16 | regime | L'enumerazione del regime espressa come valore double: 0 espansione, 1 contrazione, 2 rollover, 3 breakout, 4 sconosciuto. |
| 17, 18 | D_k, d_med_w | Coerenza direzionale e frattile centrato sulla mediana. |
Parametri di input
| Gruppo | Parametri | Valori predefiniti |
|---|---|---|
| Finestra | InpWindowSize, InpSmoothingPeriod | 106 barre, 10 |
| Rilevamento del regime | InpEpsilonLow, InpEpsilonHigh, InpSlopeThreshold, InpRegimeLookback, InpVariationRatioLow, InpZScoreExpansion, InpRangeHistoryLookback | 0,15, 3,0, 0,0001, 20, 0,1, 1,0, 100 |
| Movimento avverso | InpAdverseLookback | 10 barre |
| Linee di riferimento | InpEntryUpperThreshold, InpEntryLowerThreshold | 0,9, 0,1 |
| Pannelli | InpAutoAttachPanels, InpPanelAdverse, InpPanelRmaValues, InpAdverseThresholdDown, InpAdverseThresholdUp | vero, vero, falso, 0,3, 0,7 |
| Sfondo del regime | InpShowRegimeBand più un colore per regime | vero, verde scuro / rosso / ambra / blu |
Base di ricerca
L'implementazione segue:
- Daniel Alexandre Bloch, A Course on Systematic Trading with RMA, disponibile su SSRN.
Vale la pena sottolineare chiaramente un avvertimento, poiché proviene dalla fonte stessa: la sezione "Risultati" dell'articolo è lasciata come lavoro futuro. Offre un quadro di riferimento e i suoi meccanismi, non un track record empirico. Ciò che questo indicatore fornisce è una descrizione dello stato del mercato su una scala che ha lo stesso significato ovunque, il che costituisce una base per i propri test piuttosto che un vantaggio convalidato ereditato dalla fonte.
Un articolo di approfondimento illustra la matematica e l’implementazione di ogni modulo, e costruisce l’Expert Advisor che opera su questi buffer: Implementazione del quadro di riferimento della media mobile relativa (RMA) di Bloch in MQL5.
Tradotto dall’inglese da MetaQuotes Ltd.
Codice originale https://www.mql5.com/en/code/75472
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.
Adaptive_MACD
Adaptive MACD is a dynamic momentum indicator that adjusts its smoothing based on market conditions. It calculates a Pearson correlation coefficient between price and bar index over a user-defined period, then uses the resulting R² to blend two different MACD coefficient sets. This makes the MACD line more responsive during strong trends and smoother in sideways markets. The indicator plots a color-coded histogram (strong/weak bullish/bearish) and an optional auto-contrast MACD line that adapts to the chart background. Inputs allow customization of the R² period, fast/slow lengths, signal period, and colors. Suitable for trend-following and detecting momentum shifts.
Trading Panel EA
Pro Manager è un assistente di trading MT5 “tutto in uno” progettato per le società di trading proprietario e i trader professionisti. Esegui le operazioni più rapidamente, gestisci le posizioni in modo più intelligente, controlla il rischio in modo efficiente e automatizza le attività di trading quotidiane grazie a potenti strumenti quali Break-even, Average TP, gestione dei Magic Number e 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.