und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
- Ansichten:
- 5
- Rating:
- Veröffentlicht:
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Übersicht
Dieser Expert Advisor handelt nach dem Relative Moving Average (RMA) -Konzept, das von Dr. Daniel Alexandre Bloch in „A Course on Systematic Trading with RMA“ vorgestellt wurde. Er implementiert alle vier in der Veröffentlichung beschriebenen Crossover-Strategien zusammen mit dem adaptiven Crossover-Ausstieg, wobei jeder Ein- und Ausstieg im Fraktilraum statt im Kurs ausgedrückt wird.
Die Prämisse lautet, dass ein Kursfenster als Verteilung aussagekräftiger ist als als Durchschnitt. Bei jedem Balken nimmt der RMA das gleitende Fenster aus W Schlusskursen, drückt diese als Renditen um ihren eigenen Mittelwert aus und gibt an, wo der neueste Kurs innerhalb dieser Verteilung als Perzentil im Bereich [0, 1] rangiert. Das Ziel der Arbeit besteht dann darin, die Schwankungen dieses Rangs zwischen den Extremen der Verteilung zu nutzen: Long, solange er sich vom Minimum zum Maximum bewegt, Short, sobald sich die Richtung umkehrt. Da ein Perzentil eher eine Rangfolge als ein Abstand ist, hat ein Schwellenwert wie 0,9 bei jedem Wertpapier und in jedem Volatilitätsregime dieselbe Bedeutung, was die Regeln übertragbar macht.
Der EA enthält keine mathematischen Berechnungen. Diese befinden sich vollständig im zugehörigen Indikator „RMA_Engine“, den der EA über iCustom lädt und bei jedem geschlossenen Balken mit „CopyBuffer“ ausliest. Diese Aufteilung ist bewusst gewählt und bietet zwei wertvolle Vorteile: Der EA kann sich nicht mit dem Chart darüber uneinig sein, wie hoch das Fraktil bei einem bestimmten Bar war, da es nur eine Berechnung gibt; und die Regeln greifen niemals in eine Order ein, sodass sie von einem Skript ohne Beteiligung eines Brokers über den gesamten historischen Datenverlauf hinweg nachgestellt werden können.
So wird gehandelt
Die vier Phasen. Die Strategie nutzt Durchläufe der eigenen Verteilung des Zeitfensters. Das Erreichen eines Extremwerts löst eine Seite aus – dies ist der Ursprungstest des Papiers – und der Einstieg erfolgt, wenn das Fraktil anschließend ein Quantil-Intervall in Richtung der Durchquerung kreuzt. Nicht das Extrem ist der Auslöser, sondern das Kreuzen; daher kann ein Einstieg an jeder beliebigen Stelle entlang der Durchquerung erfolgen. Die Bezeichnungen beschreiben die Kursbewegung, nicht die Position:
- Long-Cross-Reverse. Das Fraktil verlässt das Maximum und bewegt sich abwärts in Richtung des Minimums. Der EA nutzt diesen Abstieg, indem er Short-Positionen eingeht.
- Short-Cross-Reverse. Der spiegelbildliche Fall. Die Fraktile verlässt das Minimum und steigt in Richtung des Maximums an, was mit einer Long-Position genutzt wird.
- Long-Cross-Revert. Ein Abstieg, der am Maximum begann, kehrt um und steigt wieder an, bevor er das Minimum erreicht. Der EA folgt ihm zurück in Richtung Maximum mit Long-Positionen.
- Short-Cross-Revert. Ein Anstieg, der am Tiefststand begann, kehrt nach unten um, bevor er das Hoch erreicht; dieser wird mit Short-Positionen nach unten begleitet.
Zusammen decken diese vier Fälle beide Möglichkeiten ab, wie sich eine Teilbewegung auflösen kann. Jede offene Position gehört zu einem der benannten Abschnitte, und der Abschnitt entscheidet darüber, welcher Ausstiegstest gilt und wozu sich eine Umkehr entwickelt; daher schließt derselbe Fraktilwert eine Position und hält eine andere offen.

Die vier Phasen einer Verteilung: Reverse-Phasen durchlaufen eine vollständige Querbewegung von einem Extrem zum anderen; Revert-Phasen werden eingenommen, wenn eine Querbewegung umkehrt, bevor das andere Extrem erreicht wird.
Der adaptive Ausstieg. Hier kommt der Regime-Detektor ins Spiel. Die Abhandlung definiert zwei Basisausstiege und anschließend einen dritten, der zwischen diesen wählt:
- Vollständiger Verteilungswechsel. Geht davon aus, dass die Bewegung vollständig abgeschlossen wird, sodass der Ausstieg auf der einen Seite mit dem Einstieg auf der anderen Seite zusammenfällt. Eine vom Maximum ausgehende Short-Position wird erst geschlossen, wenn das Quantil tatsächlich das Minimum erreicht und nach oben dreht; und da diese Drehung selbst den Beginn eines neuen Handels in die entgegengesetzte Richtung darstellt, geht der Ausstieg direkt in diesen über.
- „Extremum-Revert-Trigger“. Hier werden keine Annahmen über das entfernte Extrem getroffen. Die Position wird beim ersten eindeutigen Anzeichen dafür geschlossen, dass die Bewegung, auf die gesetzt wurde, zum Stillstand gekommen ist: eine Abfolge von Quantil-Bin-Schritten in die falsche Richtung, ein Rückkreuz durch die Medianzone oder ein einzelner Schritt, der groß genug ist, um für sich selbst zu sprechen.
- Adaptiver Crossover-Ausstieg. Die Regel aus der Studie und das, was der EA umsetzt: der Revert-Trigger während der Expansions- und Übergangsphase, in der Teildurchläufe wahrscheinlich sind, mit Umstellung auf den vollständigen Crossover, sobald eine Kontraktion erkannt wird. Die Revert-Phasen nutzen in jedem Regime stets den Revert-Trigger.
Der Run-Length-Test verhindert, dass der „Revert“-Trigger aufgrund von Rauschen ausgelöst wird. Eine vorzeichenbehaftete Folge von Bin-Schritten sammelt sich an, solange sich das Fraktil in dieselbe Richtung bewegt, und wird zurückgesetzt, wenn sich die Richtung ändert; daher bedeutet „zwei Bins zurück“, dass sich die Bewegung tatsächlich gewendet hat und nicht nur eine Pause eingelegt wurde.
Der Sicherheitsausstieg. Über und vor jedem Strategieausstieg befindet sich eine Überprüfung auf ungünstige Kursentwicklung. Eine Mean-Reversion-Position ist naturgemäß eine Zeit lang „offside“, daher kann „Offside-Sein“ nicht das Ausstiegskriterium sein; das eigentliche Warnsignal besteht darin, „offside“ zu sein und zu beobachten, wie sich das Fraktil weiter in den Offside-Bereich bewegt. Genau das beschreibt ein niedriger D_k-Wert auf der falschen Seite des Medians, und es ist der einzige Ausstieg, der die Einstellung für den Mindestgewinn vollständig ignoriert, da er nicht versucht, ein Ziel zu verbuchen, sondern zu verhindern, dass ein Trend weiter angeheizt wird, der sich bereits gegen den Trade gewendet hat.
Wenn der Ausstieg bei einem Verlust ausgelöst wird, blockiert er auch den Wiedereinstieg auf derselben Seite, bis das Perzentil den Median wieder überquert; so kann die Strategie dem Markt nicht sofort denselben Verlusthandel erneut überlassen. Wenn sich die Spanne in diesem Moment ausweitet, nimmt der EA stattdessen die entgegengesetzte Seite ein, mit der Begründung, dass ein Mean-Reversion-Signal, das immer wieder versagt, eher ein Hinweis auf einen Trend als auf einen besseren Kurs ist. Diese beiden Trendfolge-Phasen sind der einzige Teil des Systems, der nicht symmetrisch ist.
Empfohlene Konfiguration
| Einstellung | Empfohlener Wert | Anmerkungen |
|---|---|---|
| Symbol | EURUSD | Das Entwicklungs- und Testinstrument. Die Fraktilskala normalisiert sich selbst, sodass die Regeln ohne Neukalibrierung auf andere Symbole übertragbar sind; die folgenden Einstellungen wurden jedoch nur hier getestet. |
| Chart-Zeitrahmen | H2 | Der Testzeitrahmen. Das Fenster wird in Bars gemessen, daher beschreibt ein kürzerer Zeitrahmen bei gleichem W lediglich einen kürzeren Marktabschnitt. Die durchschnittliche Haltedauer auf H2 betrug etwa einen Tag. |
| Kontotyp | Netting oder Hedging | Der EA hält jeweils höchstens eine Position und kehrt die Position durch Schließen und erneutes Eröffnen um, daher ist jeder Kontotyp geeignet. |
| Voraussetzung | RMA_Engine muss kompiliert werden | Kompilieren Sie „Indicators\RMA\RMA_Engine.mq5“, bevor Sie den EA anhängen. Fehlt die .ex5-Datei, schlägt der iCustom-Aufruf fehl und der EA weigert sich, sich zu initialisieren, wobei eine Meldung mit dem Namen der Datei angezeigt wird. |
| Erforderliche Historie | W plus der Lookback-Zeitraum | Der EA bleibt bei jedem Balken stehen, bei dem die Engine noch keine Antwort liefern kann; daher führt eine kurze Historie eher zu fehlenden Signalen als zu falschen. |
Wichtigste Merkmale
Getreu der Veröffentlichung
- Alle vier Cross-Strategien sind implementiert – die beiden „Reverse Legs“ und die beiden „Revert Legs“ –, nicht nur ein vereinfachtes Paar.
- Der „Adaptive Crossover Exit“ wechselt je nach Regime zwischen dem „Full Distribution Crossover“ und dem „Extremum Revert Trigger“, genau wie in der Veröffentlichung angegeben.
- Das Perzentil entspricht der Definition im Anhang der Veröffentlichung, nämlich der einfachen empirischen Verteilungsfunktion (CDF) des Fensters. Wo der Text der Veröffentlichung und der Anhang voneinander abweichen, hat der Anhang Vorrang, und die Diskrepanz wird im Quellcode dokumentiert, anstatt stillschweigend korrigiert zu werden.
Eine Berechnung an einer Stelle
- Jede Zahl, die die Regeln auslesen, stammt aus der RMA_Engine über „CopyBuffer“, sodass das Diagramm und die Trades nicht auseinanderdriften können. Es gibt keine zweite Implementierung der mathematischen Formeln, die synchronisiert werden müsste.
- Die Regeln sind in einer Klasse untergebracht, die niemals „OrderSend“ aufruft, eine Position ausliest oder etwas ausgibt. Ihr wird eine Bar-Struktur mit zehn Feldern übergeben, und sie gibt eine Anweisung zurück – wodurch die Strategie ohne Broker getestet werden kann.
- Orderplatzierung, Buchhaltung und Risikomanagement befinden sich in einer separaten Klasse, die aus demselben Grund von den Regeln getrennt gehalten wird.
Entscheidungen ausschließlich auf Basis endgültiger Daten
- Puffer werden ab Position 1 gelesen, niemals ab 0. Der Balken Null bildet sich noch, und jede Regel bezieht sich auf einen Balken, dessen Schlusskurs endgültig ist.
- Ein Warmup-Bar, eine Lücke in der Historie oder eine Engine, die noch nicht berechnet hat, führen alle zum gleichen Ergebnis: keine Entscheidung für diesen Bar. Aus einem fehlenden Messwert werden keine Rückschlüsse gezogen.
- Ob das Konto geöffnet war, wird geklärt, bevor irgendetwas darauf einwirkt; daher ist ein Balken entweder ein Ausstiegsbalken oder ein Einstiegsbalken, niemals beides.
Ausführung, die einen echten Broker übersteht
- Ein „Close-and-Reverse“-Auftrag fordert den Broker auf, die Position in dem Moment auszugleichen, in dem der entgegengesetzte Handel fällig ist, und der Broker kommt dieser Aufforderung nicht immer beim ersten Versuch nach. Abgelehnte Schließungen werden gespeichert und bei jedem Tick erneut versucht, bis sie ausgeführt werden – anstatt verworfen zu werden –, und eine Umkehr wird niemals auf eine noch laufende Position gestapelt.
- Der Einstieg wird zum tatsächlich ausgeführten Preis verbucht, nicht zum angeforderten Preis, sodass Slippage nicht in die Pip-Werte einfließt, die die Ausstiegsregeln und den Optimierungswert bestimmen.
- Die Lotgröße wird auf das Minimum, Maximum und die Schrittweite des Symbols begrenzt.
- Die offene Position wird in globalen Variablen gespeichert, sodass eine Position, die einen Neustart des Terminals überdauert, als der tatsächlich bestehende Handel wieder aufgenommen wird und nicht als „verwaistes“ Geschäft.
Operative Steuerungselemente
- Optionaler fester Stop-Loss und Take-Profit in Pips, ein optionaler Sitzungsfilter, der ein über Mitternacht hinauslaufendes Zeitfenster korrekt behandelt, sowie ein optionales Glattstellen am Sitzungsende. Hierbei handelt es sich eher um Einsatzsteuerungen als um Bestandteile des Frameworks: Die Arbeit befasst sich mit dem Signal und überlässt die Risikobegrenzung dem Betreiber.
- Ein optionaler Statusblock im Chart, der das aktuelle Perzentil, das Regime und die Position anzeigt, mit Ein- und Ausstiegsmarkierungen sowie einem ausführlichen Modus, der jede Ablehnung und den Grund dafür protokolliert. Beide sind standardmäßig deaktiviert, sodass der EA im Hintergrund handelt.
- Ein benutzerdefiniertes Optimierungskriterium, das Netto-Pips zurückgibt, gewichtet mit der Quadratwurzel aus der Anzahl der Trades und der Gewinnquote; somit wird eine Serie von vierhundert Trades gegenüber einer von vierzig bei gleichem Nettoergebnis höher bewertet, ohne dass die Anzahl der Trades den Ausschlag gibt. Serien mit weniger als zehn Trades erhalten null Punkte.
Backtest-Ergebnisse
Ein einzelner Lauf auf EURUSD, H2, vom 01.05.2025 bis zum 26.07.2026, etwa vierzehn Monate, mit 100 % echten Ticks bei einer Einlage von 10.000 USD und einem Hebel von 1:500.
| Kennzahl | Wert |
|---|---|
| Gesamtnettogewinn | 362,51 bei einer Einlage von 10.000 |
| Gesamtzahl der Trades | 138 |
| Gewinnfaktor | 1,15 |
| Sharpe-Ratio | 0,82 |
| Maximaler Kapitalrückgang | 463,87 (4,52 %) |
| Gewinnbringende Trades | 46,38 % |
| Durchschnittlicher Gewinn / durchschnittlicher Verlust | 42,80 / -30,82 |
| Gewinnquote bei Long-/Short-Positionen | 46,58 % / 46,15 % |
Die Gewinnquote liegt knapp unter der Hälfte, und das System bleibt profitabel, da der durchschnittliche Gewinn größer ist als der durchschnittliche Verlust – dies entspricht dem Ertragsprofil einer Mean-Reversion-Strategie, die ihre Umkehrbewegungen auslaufen lässt. Long- und Short-Positionen schneiden nahezu identisch ab, wie es von einem von Grund auf symmetrischen Rahmenwerk zu erwarten ist.

Die Kapitalkurve über den Testzeitraum: gleichmäßige Entwicklung mit geringen Drawdowns statt einer einzigen Glückssträhne.

Der vollständige Strategy-Tester-Bericht für den Lauf, der die Einstellungen, die Handelsstatistiken sowie die Saldo- und Kapitalkurven zeigt.
Installation und Dateistruktur
Ein Expert Advisor, ein erforderlicher Indikator, ein optionales Panel und sieben Header-Dateien. Die Verzeichnisstruktur ist wichtig: Der EA lädt die Engine über den relativen Pfad „RMA\RMA_Engine“ und die Header-Dateien werden als „<RMA\...>“ eingebunden, daher muss sich jede Datei in ihrem jeweiligen RMA-Unterordner befinden. Kompilieren Sie die Indikatoren vor dem EA.
| Datei | Rolle | Beschreibung |
|---|---|---|
| Experts\RMA\RMA.mq5 | Orchestrator | Alle Eingaben, der iCustom-Aufruf, das Auslesen des Engine-Status pro Balken sowie die Reihenfolge, in der die Signal-Engine, der Trade-Manager und die Anzeige ausgeführt werden. Enthält keine eigene Strategielogik. |
| Indikatoren\RMA\RMA_Engine.mq5 | Erforderlicher Indikator | Berechnet alle RMA-Reihen und veröffentlicht neunzehn Puffer. Ohne diesen Indikator wird der EA nicht initialisiert. |
| Indikatoren\RMA\RMA_Panel.mq5 | Optionales Panel | Spiegelt eine Gruppe von Engine-Puffern in ein Unterfenster mit eigener Skalierung, für die Reihen, die auf der 0-bis-1-Achse der Engine nicht lesbar sind. Nur zur Anzeige. |
| Include\RMA\RmaTypes.mqh | Gemeinsames Vokabular | Die Regime- und Cross-State-Aufzählungen sowie die Pufferkarte. Der einzige Ort, an dem sich EA, Engine und Panels einig sind. |
| Include\RMA\RmaCore.mqh | Numerischer Kern | Der SMA, die RMA-Familie, die normalisierte Renditeverteilung und die Fraktilfunktion. |
| Include\RMA\RegimeDetector.mqh | Regimeklassifizierung | Expansion, Kontraktion und die beiden Übergangszustände, abgeleitet aus den relativen Extremwertverhältnissen und bestätigt durch Steigung, Z-Score und Variationskoeffizienten. Auf dieser Grundlage wird die Ausstiegsregel ausgewählt. |
| Include\RMA\AdverseMonitor.mqh | Richtungskonsistenz | d_med_w, das medianzentrierte Perzentil, und D_k, der Anteil der Aufwärtsbewegungen seiner letzten Schritte. Steuert den Sicherheitsausstieg. |
| Include\RMA\SignalEngine.mqh | Die Regeln | Aktivierung, die vier Einstiegsphasen, die drei Ausstiege und die adaptive Umschaltung zwischen ihnen, der Sicherheitsausstieg, der Wiedereinstiegsblock und die Trendumkehr. Nimmt einen Balken entgegen, gibt eine Anweisung zurück, greift auf nichts anderes zu. |
| Include\RMA\TradeManager.mqh | Ausführung | Auftragsplatzierung, Lot-Begrenzung, Stopps und Ziele, Positionssynchronisation, erneuter Schlusskursversuch, Sitzungssteuerung, Persistenz der Positionsbeine, Pip-Abrechnung und der Optimierungswert. |
| Include\RMA\RmaDisplay.mqh | Status auf dem Chart | Der Statusblock sowie die Ein- und Ausstiegsmarkierungen. Beschriftungen werden einmalig erstellt und direkt aktualisiert, sodass keine doppelten Objekte entstehen und kein Flackern beim Neuzeichnen auftritt. |
Eingabeparameter
Neun Eingabegruppen. Die ersten beiden werden an die Engine weitergeleitet und beeinflussen deren Berechnungen; die übrigen steuern die Regeln, die Orders und die Darstellung.
| Gruppe | Wichtige Parameter | Standardwerte |
|---|---|---|
| Fenster | InpWindowSize, InpSmoothingPeriod | 106 Balken, 10 |
| Regime-Erkennung | InpEpsilonLow, InpEpsilonHigh, InpSlopeThreshold, InpRegimeLookback, InpVariationRatioLow, InpZScoreExpansion, InpRangeHistoryLookback | 0,15, 3,0, 0,0001, 20, 0,1, 1,0, 100 |
| Ungünstige Entwicklung | InpUseAdverseExit, InpAdverseLookback, InpAdverseThresholdDown, InpAdverseThresholdUp | true, 10 Balken, 0,3, 0,7 |
| Einstiege | InpEntryUpperThreshold, InpEntryLowerThreshold, InpEntryMinDiff, InpCloseThreshold | 0,9, 0,1, 0,0 (jede Wende zählt), 0,1 |
| Ausstiege | InpExitTargetUpper, InpExitTargetLower, InpExitProfitMinPips | 0,0, 0,0 (beide Werte „Null“ aktivieren die Extremwert-Logik), 0,0 (aus) |
| Handel | InpLotSize, InpMagicNumber, InpTradeComment | 0,1 Lot, 20251230, „RMA“ |
| Risiko | InpStopLossPips, InpTakeProfitPips, InpUseTimeFilter, InpStartHour, InpEndHour, InpEODClosePositions | 0 (keine), 0 (keine), false, 8, 20, false |
| Im Chart | InpShowDisplay, InpAttachEngine, InpShowPanels, InpPanelAdverse, InpPanelRmaValues, InpShowRegimeBand, InpVerbose | standardmäßig alle deaktiviert, sodass der EA im Hintergrund handelt |
Forschungsgrundlage
Die Implementierung folgt:
- Daniel Alexandre Bloch, „A Course on Systematic Trading with RMA“, verfügbar auf SSRN.
Die Arbeit liefert das Rahmenwerk und dessen Funktionsweise: die Fraktildarstellung, die vier Crossover-Strategien und den „Adaptive Crossover Exit“, der je nach Regime zwischen diesen wählt. Sie enthält keine Leistungsbilanz, da der Abschnitt „Ergebnisse“ in der vorliegenden Version als zukünftige Arbeit offen gelassen wurde. Der Mehrwert besteht in einer Strategie, die auf einer Skala ausgedrückt wird, die bei jedem Instrument dieselbe Bedeutung hat, sowie in einer Grundlage für eigene Tests mit anderen Symbolen und Zeitrahmen oder mit einem je nach Wertpapier kalibrierten Zeitfenster, wie es in der Abhandlung vorgesehen ist.
Ein Begleitartikel leitet die mathematischen Grundlagen her, führt durch die Implementierung jedes Moduls und erläutert die vier Komponenten sowie die Ausstiegslogik im Detail: „Implementierung des Relative Moving Average (RMA)-Frameworks von Bloch in MQL5“.
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/75473
Session Scalping Zones
Sitzungsbasierter Scalping-Indikator für MetaTrader 5. Er markiert automatisch die Höchst- und Tiefststände der asiatischen Handelssitzung und generiert anschließend bei der Eröffnung des Londoner Handels Scalping-Signale, sobald der Kurs diese Niveaus durchbricht oder erneut testet. Der Indikator zeichnet dynamische Sitzungsspannen ein, sendet Warnmeldungen und Push-Benachrichtigungen und verfügt über optionale Trend-, Volumen- und Zeitfilter. Funktioniert auf M1-, M5- und M15-Charts für jedes Symbol.
Trading Panel EA
Pro Manager ist ein All-in-One-MT5-Handelsassistent, der speziell für Prop-Firmen und professionelle Trader entwickelt wurde. Führen Sie Trades schneller aus, verwalten Sie Positionen intelligenter, kontrollieren Sie Risiken effizient und automatisieren Sie tägliche Handelsaufgaben mit leistungsstarken Tools wie Break-even, Average TP, Magic-Number-Management und Auto Grid.
Accumulation/Distribution
Der Accumulation/Distribution Indikator wird aus Änderung von Preis und Volumen bestimmt.
Accelerator Oszillator (AC)
Der Acceleration/Deceleration Indikator (AC) misst die Beschleunigung und Verlangsamung des aktuellen Marktimpulses, der Kraft der Kursbewegung.