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
RegimeRouter – Trend-/Bereichsklassifikator mit einer Aufstellung der Gewinnquoten pro Regime - Experte für den MetaTrader 5
- Ansichten:
- 7
- Rating:
- Veröffentlicht:
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
RegimeRouter – Trend-/Bereichsklassifikator mit einer Aufstellung der Gewinnquoten pro Regime

Das Problem
Eine Trendfolge-Regel verliert in einer Seitwärtsbewegung Geld. Eine Mean-Reversion-Regel scheitert in einem Trend. Die meisten EAs entscheiden sich für eine der beiden Strategien und hoffen, dass der Markt mitspielt. Die übliche Lösung ist ein einzelner ADX-Filter. Der ADX misst jedoch nur eine Sache – die Richtungskraft – und sagt nichts darüber aus, ob die Renditen tatsächlich persistent sind oder zur Mittelwertbildung zurückkehren.
So erfolgt die Klassifizierung
Bei jedem geschlossenen Balken misst er drei unabhängige Eigenschaften der jüngsten Kursreihe.
- ADX – klassische Richtungsstärke.
- Hurst-Exponent – skalierte Range-to-Skalation-Analyse (R/S) der logarithmischen Renditen. Oberhalb von 0,5 ist die Reihe persistend. Unterhalb von 0,5 ist sie antipersistent. Bei 0,5 handelt es sich um einen Zufallsweg.
- Lag-1-Autokorrelation – ob auf eine Bewegung tendenziell eine weitere Bewegung in derselben Richtung oder eine Gegenbewegung folgt.
Jeder Indikator gibt eine Stimme ab: plus eins für einen Trend, minus eins für eine Seitwärtsbewegung, null für unentschieden. Die Stimmen werden summiert. Wenn die Summe in einer der beiden Richtungen den Schwellenwert `InpMinVotes` überschreitet, gilt das Regime als TREND oder RANGE. Andernfalls ist es NEUTRAL und der EA führt überhaupt keine Handelsgeschäfte durch. Kann einer der drei Indikatoren nicht berechnet werden, gibt er keine Stimme ab und der Balken wird als NEUTRAL eingestuft. Entscheidend ist die Übereinstimmung. Ein einzelner Indikator ist nichts anderes als ein Münzwurf mit zusätzlichen Schritten.
So erfolgt die Weiterleitung
| Regime | Modul |
|---|---|
| TREND | Durchbruch des Hochs oder Tiefs des N-Balkens, der nur in der Richtung berücksichtigt wird, in die der schnelle und der langsame EMA bereits zeigen. |
| RANGE | Handeln Sie gegen einen gestreckten Z-Score des Kurses gegenüber seinem eigenen gleitenden Durchschnitt. Kaufen Sie am unteren Ende, verkaufen Sie am oberen Ende. |
| NEUTRAL | Nichts. |
Das Hauptbuch
Jede Position wird mit einer magischen Zahl aus `InpMagicBase` plus der Regime-ID eröffnet, sodass das Regime, das einen Handel generiert hat, dem Handel selbst zugeordnet ist. Beim Start durchläuft der EA die Handelshistorie, gruppiert die Trades nach Positions-ID und stellt den Datensatz wieder her. Er bleibt bei einem Neustart erhalten und auch beim Wechsel auf ein anderes Terminal.
Für jedes Modul meldet er die rohe Gewinnquote, dieWilson-95%-Untergrenze, diedurch den durchschnittlichen Gewinn und den durchschnittlichen Verlust des Moduls implizierte Gewinnquote zum Breakeven, den Profitfaktor und ein Urteil.
TREND 96 Tr 38 W Roh 39,6 % Wilson95 30,4 % Breakeven 34,2 % PF 1,26 Netto +734,84 [UNBEWIESEN]
Die beiden mittleren Zahlen sind entscheidend. Ein 2R-Trendfolger ist ab etwa 34 % profitabel. Ein 1R-Fade benötigt mehr als 50 %. Und eine Brutto-Gewinnquote aus sechs Trades ist kein Beweis für irgendetwas. Das Urteil lautet schlicht: Überschreitet die Untergrenze die Gewinnschwelle? Das ist die einzige Version von „Dieses Modul funktioniert“, die bei einer kleinen Stichprobe Bestand hat.
Der A/B-Schalter
InpForceRegime deaktiviert den Router und leitet jeden Trade zwangsweise durch ein einziges Modul. Führen Sie dasselbe Symbol und denselben Zeitraum dreimal aus – AUTO, dann ALWAYS_TREND, dann ALWAYS_RANGE – und Sie erhalten einen direkten Maßstab dafür, ob der Klassifikator einen Mehrwert bietet. Die drei Messwerte werden auch bei einem erzwungenen Lauf protokolliert, sodass Sie sehen können, wie sich das erzwungene Modul bei den Balken geschlagen hat, die der Router abgelehnt hätte.
Machen Sie das, bevor Sie dem System vertrauen. Die Routing-Idee ist eine Hypothese, kein Ergebnis.
Backtest
H1 · 01.01.2026 bis 20.09.2026 · 10.000 USD · Zufällige Verzögerung aktiviert · alle Eingaben auf Standardwerten. Zwei Symbole, beide dargestellt.
EURUSD H1
| Kennzahl | Wert |
|---|---|
| Gesamtnettogewinn | +900,42 |
| Bruttogewinn / Bruttoverlust | 3 712,84 / 2 812,42 |
| Gewinnfaktor | 1,32 |
| Erwarteter Ertrag | 9,00 |
| Rückgewinnungsfaktor | 1,71 |
| Gesamtzahl der Trades | 100 |
| Maximaler Kontostand-Rückgang | 505,32 (4,56 %) |
| Maximaler Kapitalrückgang | 527,80 (4,76 %) |
| Modul | Trades | Gewinne | Roh | Wilson 95 % Tief | Netto |
|---|---|---|---|---|---|
| TREND | 96 | 38 | 39,6 % | 30,4 % | +734,84 |
| SPANNE | 4 | 4 | 100,0 % | 51,0 % | +165,58 |
96 + 4 = 100 Trades und +734,84 + 165,58 = +900,42, sodass die Buchhaltung exakt mit dem Testerbericht übereinstimmt.
XAUUSD H1 – derselbe EA, dieselben Einstellungen, derselbe Zeitraum
| Kennzahl | Wert |
|---|---|
| Gesamtnettogewinn | −1 554,11 |
| Endsaldo | 8 445,89 |
| Gesamtzahl der Transaktionen | 85 |
| Modul | Transaktionen | Gewinne | Roh | Wilson 95 % Tief | Netto |
|---|---|---|---|---|---|
| TREND | 78 | 26 | 33,3 % | 23,9 % | −1 576,33 |
| SPANNE | 7 | 4 | 57,1 % | 25,0 % | +22,22 |
78 + 7 = 85 Trades und −1.576,33 + 22,22 = −1.554,11. Dieser hier macht Verluste. Ich veröffentliche ihn absichtlich neben dem Gewinner, denn eine Auflistung, die nur das Symbol zeigt, das funktioniert hat, sagt nichts über den EA aus.
Was dieses Ergebnis zeigt und was nicht
Lesen Sie diesen Abschnitt, bevor Sie den EA einsetzen.
- Das TREND-Modul ist bei keinem der beiden Symbole bewährt. Beim EURUSD betrug der durchschnittliche Gewinn 93,35 und der durchschnittliche Verlust 48,49, sodass etwa 34,2 % der Trades gewinnen mussten, um die Gewinnschwelle zu erreichen. Es gewann 39,6 %. Die Wilson-95-%-Untergrenze für diese Gewinnquote liegt jedoch bei 30,4 %, was unter der Gewinnschwelle liegt. Bei dieser Stichprobengröße steht das Ergebnis im Einklang mit dem Fehlen jeglichen Vorteils. Beim XAUUSD wies dasselbe Modul eine rohe Gewinnquote von 33,3 % und eine Untergrenze von 23,9 % auf und verzeichnete einen Verlust. Das Fazit ist in beiden Fällen dasselbe: noch nicht genügend Beweise.
- Bei der Gewinnquote des EURUSDwären etwa 320 Trades erforderlich, damit die Untergrenze die Gewinnschwelle überschreitet. Ein Symbol auf der H1-Zeitskala erbrachte in etwa neun Monaten 100, es handelt sich also um ein Portfolio-Problem und nicht um ein Problem mit einem zu kurzen Backtest.
- Das RANGE-Modul ist im Wesentlichen ungetestet. Vier Trades auf EURUSD, sieben auf XAUUSD. Die 100-prozentige Gewinnquote bei EURUSD bedeutet nichts – genau deshalb gibt es die Wilson-Spalte.
- Es gibt keinen Out-of-Sample-Test. Eine Periode, ein Zeitrahmen, zwei Symbole.
- Die Modellierung erfolgte mit „Every Tick“, nicht mit echten Ticks. Ausstiege richten sich nach dem SL und TP des Brokers, daher ist der Kursverlauf innerhalb des Bars entscheidend. Führen Sie den Test mit echten Ticks erneut durch, bevor Sie Schlussfolgerungen ziehen.
Ich veröffentliche dies, weil der Messansatz der nützliche Teil ist, nicht weil ich Ihnen einen validierten Vorteil verkaufen möchte. Führen Sie den A/B-Test durch. Wenn der Router bei Ihrem Symbol seine eigenen beiden Module nicht schlägt, ist das ebenfalls wissenswert.
Hinweise zur Ausführung
- Signale werden beim Bar-Schluss ausgewertet, daher ist das System für M15 und höhere Zeitrahmen ausgelegt.
- Positionen werden ohne Stopps eröffnet; anschließend werden die Stopps auf Basis des tatsächlichen Ausführungspreises gesetzt. Ein aus einem Snapshot vor dem Handel berechneter Stopp kann zum Zeitpunkt der Orderausführung bereits ungültig sein.
- Wenn das Setzen der Stopps fehlschlägt, wird die Position sofort geschlossen, anstatt sie ungeschützt zu lassen.
- Die Stop-Abstände werden auf das Stop-Level und das Freeze-Level des jeweiligen Symbols begrenzt.
- Ausstiege erfolgen über die SL- und TP-Werte des Brokers. Es gibt keine manuelle, zeitgesteuerte Zwangsschließung.
- Optionaler ATR-Trailing-Stop für Trendtrades, der höchstens einmal pro Bar und niemals auf der Einstiegs-Bar angewendet wird.
- Jeweils nur eine Position. Bei einem Netting-Konto wird eine zweite Order für dasselbe Wertpapier in die bestehende Position integriert, anstatt als eigenständiger Trade zu gelten, was das Hauptbuch unbemerkt verfälschen würde.
- Risikobasierte Lot-Größenbestimmung, ein tägliches Verlustlimit, eine tägliche Handelsobergrenze, ein Spread-Filter, ein Mindestverhältnis von Take-Profit zu Spread sowie ein optionaler Sitzungsfilter.
Wichtigste Eingabewerte
| Eingabe | Standard | Funktion |
|---|---|---|
| InpForceRegime | Auto | Ein Modul erzwingen, um den Klassifikator A/B zu testen |
| InpMinVotes | 2 | Von drei Stimmen sind zwei erforderlich, um ein Regime festzulegen |
| InpADXTrendLevel / InpADXRangeLevel | 25 / 20 | ADX-Stimmenschwellen |
| InpHurstBars | 256 | Bars mit Renditen hinter der Hurst-Schätzung |
| InpHurstAdaptive | aus | Hurst anhand seiner eigenen Verteilung statt anhand fester Schwellenwerte bewerten |
| InpAutoCorrThreshold | 0,05 | Die Autokorrelation muss diesen Schwellenwert überschreiten, um berücksichtigt zu werden |
| InpBreakoutBars | 20 | Trendmodul: N-Bars-Hoch/Tief zum Durchbrechen |
| InpRangeZEntry | 2,0 | Range-Modul: Z-Score, bei dem ein Fade erfolgen soll |
| InpRiskPercent | 0,5 | Risiko pro Trade, % des Guthabens |
| InpMagicBase | 772000 | Dazu wird die Regime-ID hinzugefügt |
Hinweis zum Hurst-Schwellenwert
Es gibt einen Eingabeparameter namens „InpHurstAdaptive“ , der standardmäßig deaktiviert ist.
Die klassische Trend-/Bereichslinie für den Hurst-Exponenten liegt bei 0,5. In der Praxis verläuft diese Linie jedoch an der falschen Stelle. Der R/S-Schätzer weist bei einer endlichen Stichprobe eine Aufwärtsverzerrung auf, sodass eine Schätzung einer gewöhnlichen Reihe über 256 Balken deutlich über 0,5 liegt. Gemessen am EURUSD-H1-Chart lagen die Werte im Durchschnitt bei 0,568 und fielen in 419 Beobachtungen nur zweimal unter 0,45. Gegenüber einem festen Band von 0,45 / 0,55 misst dieser „Wähler“ nichts. Es handelt sich um eine nahezu permanente Stimme für „TREND“.
Das Aktivieren von „InpHurstAdaptive“ hebt die absolute Skala auf und stellt stattdessen eine relative Frage: Ist die Reihe beständiger, als es dieses Symbol in letzter Zeit war? Die letzten N Messwerte werden beibehalten, und die Entscheidung wird anhand der Perzentile dieser Historie getroffen statt anhand von 0,5.
Die Kosten dafür sind real. Konstruktionsbedingt stimmt der „Voter“ dann unabhängig von der Marktentwicklung bei einem festen Anteil der Balken für „RANGE“ ab. Es handelt sich also um einen Schalter, nicht um eine Neuprogrammierung. Standardmäßig ist die Funktion deaktiviert, da die oben genannten Backtests mit deaktivierter Funktion durchgeführt wurden und ich nicht möchte, dass die ausgelieferte Standardeinstellung eine Einstellung ist, für die ich keine Ergebnisse habe.
Keine Strategie ist garantiert profitabel. Dies bietet Ihnen eine Struktur zum Testen mit integrierter Messfunktion. Es verschafft Ihnen keinen Vorteil.
— Ali Rajput
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/77535
One-Click-Trade-Manager – risikobasierte Lotgröße mit Einstieg, Stop und Zielkurs mit einem Klick
Berechnet die Position anhand Ihres Risikoprozentsatzes und der Stop-Distanz und eröffnet dann den Trade mit bereits festgelegten Stop-Loss- und Take-Profit-Werten. Führt niemals eigenständig Trades durch.
Contract Sizer: ladder, floor and a breaker that survives a deposit
Drei Schutzmechanismen zur Positionsgrößenbestimmung, die unterschiedlich funktionieren; ihre Verwechslung ist der Grund, warum so viele Konten leergeräumt werden: - Ladder: ein Kontrakt pro X des Guthabens, wird immer als Obergrenze (CAP) angewendet, auch bei manueller Lot-Größenbestimmung; - Floor: Unterhalb des Mindestkapitals wird nicht gehandelt; eine neue Einzahlung ist erforderlich; - Breaker: Stoppt bei X % unterhalb des Höchststands, unabhängig von der Kontogröße, und wird nicht automatisch zurückgesetzt. Was diese Bibliothek löst und fast keine andere: Eine Einzahlung ist kein Gewinn, und eine Auszahlung ist kein Verlust. Der Breaker misst den Rückgang im Verhältnis zum Höchststand des Kontostands. Ohne entsprechende Maßnahmen hebt eine Einzahlung, die WÄHREND eines Drawdowns getätigt wird, sowohl den Kontostand als auch den Höchststand an, und der Schutz erkennt den Rückgang genau dann nicht mehr, wenn er helfen würde. Hier verschieben Ein- und Auszahlungen den Höchststand um denselben Betrag. Der Höchststand wird in einer Datei gespeichert: Ein Breaker, der den Höchststand beim Neustart des Terminals vergisst, ist kein Breaker. Die Demo simuliert eine Einzahlung am Tiefpunkt eines Drawdowns. Führen Sie sie mit aktivierter und deaktivierter Einzahlung aus und vergleichen Sie die Spalte „Rückgang“.
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.
