1.6 KiB
RMA
Daniel Bloch's Relative Moving Average framework, ported into a complete MetaTrader 5 system.
Companion code for the MQL5 article: https://www.mql5.com/en/articles/23693
What it does
RMA measures a moving average against price relative to its own recent range, rather than reading a raw crossover. That normalisation is what lets the same thresholds mean the same thing across symbols and across volatility levels.
The port is a full system rather than a single indicator. The engine computes the curves, a regime detector reads them, a signal engine turns regimes into four distinct strategies, and a trade manager and adverse-move monitor sit between the signals and the account.
RMA_Engine.mq5 and RMA_Panel.mq5 are the chart side. RMA.mq5 is the
Expert Advisor. The article reports Strategy Tester results for the four
strategies.
Layout
Include/RMA/RmaTypes.mqh shared types and the buffer contract
Include/RMA/RmaCore.mqh curve computation
Include/RMA/RegimeDetector.mqh regime classification
Include/RMA/SignalEngine.mqh the four strategies
Include/RMA/TradeManager.mqh order and position handling
Include/RMA/AdverseMonitor.mqh adverse-move monitoring
Include/RMA/RmaDisplay.mqh drawing helpers
Indicators/RMA/RMA_Engine.mq5 the engine indicator
Indicators/RMA/RMA_Panel.mq5 the panel
Experts/RMA/RMA.mq5 the Expert Advisor
Attach RMA_Engine.mq5 before the panel, since the panel reads its buffers.
Disclaimer
Educational code. Past behaviour of any model or dataset says nothing about future results. Test on your own data and broker conditions before drawing conclusions.