Risk Manager für Handelsroboter (Teil I): Include-Datei zur Risikokontrolle für Expert Advisors
Jeder Trader steht früher oder später vor der bitteren Wahrheit: Erfolg beim Handel wird nicht so sehr durch die Fähigkeit bestimmt, Einstiegspunkte zu finden, sondern durch die Fähigkeit, Kapital zu erhalten. Die Statistik ist gnadenlos: Mehr als 90 % der Trader verlieren ihr Kapital aufgrund eines Mangels an effektivem Risikomanagement. Heute werden wir uns mit der Entwicklung eines professionellen Risikomanagementsystems für MetaTrader 5 befassen, das selbst die aggressivsten Strategien in relativ sichere Handelsinstrumente verwandeln kann.
Warum Risikokontrollsysteme entscheidend sind
Betrachten wir typische Gründe für Verluste beim Handel, basierend auf allgemeinen Beobachtungen und auf Erfahrungen aus der Arbeit mit Tradern.
Meinen Beobachtungen zufolge ist ein erheblicher Teil der Kontoverluste auf das Überschreiten angemessener täglicher Risikolimits zurückzuführen. Oft beginnt ein Trader den Tag ruhig, aber nach dem ersten erfolglosen Trade setzt der emotionale Faktor ein – die Aufregung, der Wunsch, den Verlust wettzumachen – und bis zum Ende des Tages kann das Kontokapital erheblich leiden.
Eine weitere häufige Ursache für Verluste ist die schleichende Anhäufung von Drawdowns ohne angemessene Kontrolle. Ein Trader kann Tag für Tag kleine Beträge verlieren und sich einreden, dass er es „morgen wieder reinholen“ wird, aber am Ende bewegt sich das Konto langsam, aber sicher auf Null zu.
Viele Trader stehen vor einer psychologischen Herausforderung: Sie kennen möglicherweise die Regeln des Risikomanagements, verstehen die Bedeutung von Stop-Losses und Positionsgrößen, wenden dieses Wissen jedoch bei Handelsentscheidungen nicht immer in der Praxis an.
Es ist erwähnenswert, dass technische Probleme (Kommunikationsausfälle, Broker- oder Plattformfehler) einen relativ kleinen Anteil an den Gesamtursachen für Verluste ausmachen.
Die Erfahrung zeigt, dass Handelskonten ohne ein durchdachtes Risikomanagementsystem tendenziell einen kurzen Lebenszyklus haben.
Es gibt drei klassische psychologische Fallen, in die fast jeder angehende Trader tappt. Die erste ist Euphorie nach einer Reihe profitabler Trades. Nach ein paar erfolgreichen Markteinstiegen bekommt man das Gefühl, den Markt durchschaut und seine Geheimnisse entschlüsselt zu haben. Eine innere Stimme flüstert: „Ich bin im Plus, ich kann es mir leisten, mehr Risiko einzugehen!“, und der Trader erhöht das Lot, ignoriert Stop-Losses und eröffnet gleichzeitig mehr Positionen. Das Ergebnis ist vorhersehbar: An einem Tag verliert der Trader, was er in Wochen verdient hat.
Die zweite Falle ist die Hoffnung auf eine Marktumkehr. Die Position gerät weiter ins Minus, die roten Zahlen auf dem Bildschirm werden größer, aber der Trader hält den Trade weiterhin. „Es wird sich gleich umkehren“, „Es ist nur eine Korrektur“, „Der Markt kann nicht ewig fallen“ – Tausende Trader wiederholen diese Mantras, bis ein Margin Call ihre Handelskarriere beendet.
Die dritte Falle ist die heimtückischste – das Ignorieren der eigenen Regeln. Ein Trader erstellt ein Handelssystem, legt klare Ein- und Ausstiegsregeln fest und setzt Risikolimits. Doch irgendwann taucht der Gedanke auf: „Was könnte schon schiefgehen? Es ist in Ordnung, meine eigenen Regeln einmal zu brechen.“ Stop-Losses werden deaktiviert, das maximale Lot wird überschritten und Trades werden gegen den Trend eröffnet. Dies ist der Weg zum unvermeidlichen Zusammenbruch, und der Trader versteht dies vollkommen, kann aber nicht aufhören.
Technische Lösung: Enhanced Risk Manager
Nach vielen Jahren der Beobachtung dieser Probleme beschloss ich, ein universelles Risikokontrollsystem für MetaTrader 5 zu entwickeln. Die Hauptidee war, das Risikomanagement vollständig zu automatisieren und den menschlichen Faktor zu eliminieren. Das System ist als Include-Datei implementiert, wodurch es einfach in jede bestehende Handelsstrategie integriert werden kann, ohne dass größere Code-Anpassungen erforderlich sind.
Die Systemarchitektur wurde mit Blick auf Modularität und Erweiterbarkeit entwickelt. Jede Komponente ist für ihren eigenen Kontrollbereich verantwortlich, aber alle Module sind eng miteinander integriert. Die Datei EnhancedRiskManager.mqh enthält die Hauptklasse mit einem vollständigen Satz an Funktionen für das Risikomanagement.
#property copyright "Copyright 2025, Evgeniy Koshtenko" #property link "https://www.mql5.com/en/users/koshtenko" #property version "2.0" #property description "Enhanced Risk Manager with Visual Panel" #include <Trade\Trade.mqh>
Das System unterstützt verschiedene Handelsmodi, von konservativ bis aggressiv. Dies ermöglicht es dem Trader, das angemessene Risikoniveau in Abhängigkeit von seiner Erfahrung, dem Kontokapital und der psychologischen Vorbereitung auf Drawdowns zu wählen. Jeder Modus verfügt über eigene voreingestellte Parameter, die auf Basis der Analyse von Tausenden von echten Handelskonten optimiert wurden.
enum ENUM_TRADING_MODE { MODE_CONSERVATIVE, // Conservative mode MODE_MODERATE, // Moderate mode MODE_AGGRESSIVE, // Aggressive mode MODE_CUSTOM // Custom mode };
Der konservative Modus ist für unerfahrene Trader und diejenigen konzipiert, die Stabilität gegenüber hohen Renditen bevorzugen. In diesem Modus ist der maximale tägliche Drawdown auf 2 % begrenzt, der gesamte Drawdown darf 6 % nicht überschreiten und das Risiko pro Trade beträgt nur 1 %. Diese Parameter eliminieren praktisch das Risiko eines Totalverlusts des Kontos und geben Tradern Zeit, zu lernen und sich an den Markt anzupassen.
Der moderate Modus ist der goldene Mittelweg für erfahrene Trader. Der tägliche Drawdown kann 5 % erreichen, der gesamte Drawdown 10 % und das Risiko pro Trade wird auf 2 % erhöht. Diese Parameter bieten ein gutes Gleichgewicht zwischen potenzieller Rentabilität und Kapitalsicherheit. Die meisten professionellen Trader arbeiten mit ähnlichen Einstellungen.
Der aggressive Modus ist für diejenigen konzipiert, die bereit sind, für hohe Gewinne Risiken einzugehen. Der tägliche Drawdown kann 10 % erreichen, der gesamte Drawdown 20 %, das Risiko pro Trade 3 %. Diese Parameter erfordern Nerven aus Stahl und viel Erfahrung, können aber bei korrekter Anwendung beeindruckende Renditen liefern.
Ich habe dem Risikoberechnungssystem besondere Aufmerksamkeit gewidmet. Es gibt verschiedene Ansätze zur Bewertung des Drawdowns, und jeder hat seine eigenen Vor- und Nachteile. Einige Trader ziehen es vor, den Drawdown nur vom Kontostand aus zu berechnen und dabei offene Gewinne oder Verluste zu ignorieren. Andere konzentrieren sich ausschließlich auf das Equity, was ein realistischeres Bild vermittelt. Es gibt auch kombinierte Ansätze, bei denen das schlechtere der beiden Optionen für die Berechnung herangezogen wird.
enum ENUM_RISK_CALC_TYPE { RISK_CALC_BALANCE_ONLY, // Calculation based solely on balance RISK_CALC_EQUITY_ONLY, // Calculation based solely on equity RISK_CALC_COMBINED, // Combined calculation RISK_CALC_ADAPTIVE // Adaptive calculation };
Die adaptive Berechnung ist meine eigene Entwicklung. Das System wählt die Berechnungsmethode automatisch in Abhängigkeit von der aktuellen Situation aus. Wenn offene Verlustpositionen vorhanden sind, basiert die Berechnung auf dem Equity, um tatsächliche Verluste zu berücksichtigen. Wenn Positionen profitabel sind oder keine offenen Trades vorhanden sind, verwendet das System das Guthaben. Dieser Ansatz gewährleistet maximalen Schutz in gefährlichen Situationen und angemessene Freiheit in günstigen Situationen.
Das Herzstück des Systems ist die Klasse CEnhancedRiskManager, die sämtliche Aspekte des Risikomanagements steuert. Sie speichert Informationen über das Startguthaben, aktuelle Drawdowns, die Anzahl der offenen Trades, Zeitstempel und vieles mehr. Die Klasse ist so konzipiert, dass sie vollständig in sich geschlossen ist – nach der Initialisierung erfordert sie keine externe Verwaltung.
Hauptklassenarchitektur von CEnhancedRiskManager
Die Klasse implementiert die Prinzipien der objektorientierten Programmierung mit einer klaren Aufgabenteilung zwischen den Komponenten:
class CEnhancedRiskManager { private: // Main parameters ENUM_TRADING_MODE m_tradingMode; ENUM_RISK_CALC_TYPE m_riskCalcType; double m_startingBalance; double m_dailyStartBalance; double m_dailyStartEquity; double m_weeklyStartBalance; double m_weeklyStartEquity; // Risk limits (in %) double m_maxDailyLoss; double m_maxTotalLoss; double m_maxWeeklyLoss; double m_maxTradeRisk; double m_trailingStopPercent;
Der Klassenkonstruktor konfiguriert automatisch alle Parameter in Abhängigkeit vom gewählten Handelsmodus. Dies macht es für Trader überflüssig, Dutzende Einstellungen manuell vorzunehmen, und verhindert potenzielle Fehler. Alle Werte wurden sorgfältig auf der Grundlage der Analyse erfolgreicher Handelsstrategien und Empfehlungen führender Trader ausgewählt.
Die Initialisierung des Systems erfolgt durch einen einzigen Aufruf der Methode Initialize(). Die Methode führt eine umfassende Überprüfung der Umgebung durch, konfiguriert alle internen Variablen, erstellt ein visuelles Dashboard und lädt einen gespeicherten Zustand, falls das System bereits zuvor verwendet wurde. Besondere Aufmerksamkeit wurde der Fehlerbehandlung gewidmet – wenn etwas schiefgeht, erhält der Trader eine klare Nachricht über das Problem.
bool CEnhancedRiskManager::Initialize(double startBalance = 0) { // Define the starting balance if (startBalance <= 0) { m_startingBalance = AccountInfoDouble(ACCOUNT_BALANCE); } else { m_startingBalance = startBalance; } // Check validity if (m_startingBalance <= 0) { Print("❌ RISK MANAGER: Invalid starting balance"); return false; }
Die Hauptschleife zur Risikoüberprüfung läuft bei jedem Tick. Sie überprüft konsequent alle Parameter, aktualisiert Metriken, analysiert Verstöße und blockiert bei Bedarf den Handel oder schließt gefährliche Positionen. All diese Arbeit geschieht in Sekundenbruchteilen, ohne eine spürbare Belastung für das System zu erzeugen.
Das Warnsystem ist besonders interessant. Anstatt den Handel bei Erreichen des Limits einfach zu blockieren, warnt das System den Trader im Voraus vor dem Erreichen der Gefahrenzone. Wenn 80 % des täglichen Drawdown-Limits erreicht werden, erscheint eine gelbe Warnung. Bei 90 % wird es orange. Wenn das Limit überschritten wird, sperrt das System den Handel vollständig und alle offenen Positionen werden automatisch geschlossen.
Die Methode zur sicheren Positionseröffnung integriert alle Prüfungen in eine einfache Funktion. Der Trader muss sich keine Sorgen um Risiken machen – er muss lediglich die Methode OpenPosition() aufrufen, und das System prüft automatisch alle Limits, berechnet die akzeptable Positionsgröße und führt den Trade nur aus, wenn dies als sicher eingestuft wird.
Eines der Hauptmerkmale des Systems ist die Erhaltung des Zustands beim Neustart des Terminals. Alle wichtigen Daten werden in globalen MetaTrader-Variablen mit eindeutigen Präfixen für jedes Konto gespeichert. Dies bedeutet, dass das System auch nach einem Neustart Ihres Computers oder einer Aktualisierung Ihres EA genau weiß, wie viele Trades heute eröffnet wurden, wie hoch der aktuelle Drawdown ist und ob Limits verletzt wurden.
// In the EA: check before opening if(!RiskManager.CanOpenPosition(lotSize, Symbol())) { return false; // Block a dangerous operation }
Praktische Anwendung: Die Zähmung der Martingale-Strategie
Um die tatsächlichen Fähigkeiten des Systems zu demonstrieren, habe ich mich für einen Extremtest entschieden. Für den Test wurde die gefährlichste Art von Strategie gewählt: ein aggressives Grid mit Martingale. Dies ist eine Strategie, bei der nach jedem Verlust-Trade die Größe der nächsten Position erhöht wird. Theoretisch ermöglicht dies, alle Verluste mit einem profitablen Trade wieder auszugleichen. In der Praxis ist dies ein direkter Weg zum Verlust Ihres Kontokapitals.
Der für den Test erstellte AggressiveGridEA wies alle Merkmale einer Killer-Strategie auf. Martingale mit einem Multiplikator von 1,5 bedeutete, dass jede nachfolgende Position im Grid mit einem eineinhalbmal größeren Lot eröffnet wurde. Der Grid-Schritt betrug nur 200 Punkte, was zur häufigen Eröffnung neuer Positionen führte. Der EA konnte bis zu acht Positionen gleichzeitig halten. Wenn der Drawdown 1,5 % überstieg, wurde der aggressive Modus zur Verlustaufholung mit Lot-Verdopplung aktiviert. Und das Wichtigste: Es gab keine Stop-Losses.
Diese Konfiguration ohne Risikokontrollsystem führt in 100 % der Fälle zum Verlust des Kapitals. Das ist keine Übertreibung – ich habe den EA mit Daten aus 9 Jahren getestet, und ohne Risk Manager hat das Konto nie länger als eine Woche überlebt.
Die Integration in das Kontrollsystem erwies sich als überraschend einfach. Es erforderte lediglich das Hinzufügen einiger Codezeilen an den Schlüsselstellen des EA. Vor der Eröffnung jeder Position holt der EA die Freigabe des Risk Managers ein. Wenn das System den Trade als zu riskant einstufte, wurde die Position nicht eröffnet.
Testergebnisse

Die Testergebnisse übertrafen alle Erwartungen. Ohne Kontrollsystem betrug die durchschnittliche Lebensdauer des Kontos nur 3,2 Tage. Der maximale Drawdown erreichte 100 % – dies ist ein Totalverlust des Kapitals. Alle Tests endeten mit einem Margin Call.
Mit dem Enhanced Risk Manager hat sich das Bild dramatisch verändert. Das Konto blieb über den gesamten neunjährigen Testzeitraum im Gewinn. Der maximale tägliche Drawdown lag bei 4,8 %, knapp unter dem festgelegten Limit von 5 %. Der maximale Gesamtdrawdown erreichte 9,7 %, ohne das kritische Niveau von 10 % zu überschreiten. Und das Erstaunlichste ist, dass der Endgewinn für den gesamten Zeitraum 127 % betrug.
Wie hat es das System geschafft, ein solches Monster zu bändigen? Erstens durch die Verhinderung der Eröffnung gefährlicher Positionen. Wenn sich die Größe einer Grid-Position dem Limit von 2 % pro Trade näherte, blockierte das System diese. Dies verhinderte die unkontrollierte Eskalation von Verlusten.
Zweitens: automatische Schließung bei kritischem Drawdown. Als der tägliche Drawdown 4,5 % erreichte, schloss das System zwangsweise alle Positionen und ließ eine kleine Reserve bis zum kritischen Niveau. Dies ermöglichte es, eine vollständige Blockierung des Handels zu vermeiden, und bot die Gelegenheit, sich am nächsten Tag zu erholen.
Drittens: Begrenzung aggressiver Verlustaufholung. Die Funktion zur Verdopplung von Positionen bei Verlusten funktionierte nur innerhalb der allgemeinen Risikolimits. Sobald das Gesamtrisiko ein gefährliches Niveau erreichte, wurde die Funktion automatisch deaktiviert.
Und schließlich: Schutz der Gewinne. Beim Erreichen von 3 % Tagesgewinn wurde ein spezieller Trailing-Stop-Mechanismus aktiviert, der einen Teil der Erträge vor einem möglichen Rücksetzer schützte. Dies ermöglichte es, Gewinne auch an Tagen mit hoher Volatilität zu sichern.
Zum Vergleich: Hier ist derselbe EA, getestet ohne die Kontrolle durch unseren Risk Manager:

Schutzmechanismen in Aktion
Das System hat die Effizienz aller Schutzebenen demonstriert:
- Verhinderung der Eröffnung gefährlicher Positionen: Als sich das Risikolimit pro Trade näherte (2 %), blockierte das System automatisch die Eröffnung neuer Grid-Ebenen und verhinderte so eine Verlusteskalation.
- Automatische Schließung bei kritischen Drawdowns: Beim Erreichen von 4,5 % des täglichen Drawdowns schloss das System zwangsweise alle Positionen und ließ eine kleine Reserve bis zum kritischen Niveau von 5 %.
- Kontrolle aggressiver Recovery-Mechanismen: Die Funktion zur Verdopplung von Positionen bei Verlusten wurde durch allgemeine Risikobeschränkungen begrenzt, um katastrophale Verluste zu verhindern.
- Trailing Stop für tägliche Gewinne: Als der Gewinn 3 % erreichte, wurde ein Schutzmechanismus aktiviert, der einen Teil des Gewinns bei einem Rücksetzer sicherte.
Schlussfolgerungen aus der praktischen Erprobung
Tests an einem aggressiven Grid-EA demonstrierten überzeugend die Effizienz des Enhanced Risk Managers unter extremsten Bedingungen. Das System verhinderte nicht nur katastrophale Verluste, sondern ermöglichte es der Strategie auch, im Rahmen einer strengen Risikokontrolle profitabel zu bleiben.
Von besonderem Wert ist die Tatsache, dass das System vollautomatisch arbeitet, ohne dass in kritischen Situationen ein Eingreifen des Traders erforderlich ist. Dies ist besonders wichtig für Grid-Strategien, bei denen menschliche Emotionen in Stresssituationen oft zu falschen Entscheidungen führen.
Testergebnisse bestätigen, dass der Enhanced Risk Manager selbst die aggressivsten Handelsstrategien bändigen kann!
Schlussfolgerung
Das entwickelte Enhanced Risk Manager-System stellt eine umfassende Lösung für das Problem des Risikomanagements im Handel dar. Es automatisiert die Risikokontrolle vollständig und eliminiert den menschlichen Faktor sowie emotionale Entscheidungen. Praktische Tests mit der gefährlichsten Strategie – dem Martingale-Grid – haben die Effizienz des Systems selbst unter extremen Bedingungen überzeugend demonstriert.
Professioneller Handel beginnt mit professionellem Risikomanagement. Sie können die beste Strategie für den Einstiegspunkt haben, aber ohne angemessenes Risikomanagement führt dies früher oder später zum Verlust Ihres Kapitals. Der Enhanced Risk Manager übernimmt alle routinemäßigen Aufgaben des Risikomanagements, sodass sich Trader auf die Marktanalyse und Entscheidungsfindung konzentrieren können.
Das System ist öffentlich verfügbar und jeder kann es für seinen Handel nutzen. Der Code ist mit detaillierten Kommentaren versehen, wodurch die Logik leicht verständlich ist und bei Bedarf an Ihre Bedürfnisse angepasst werden kann. Beginnen Sie mit dem konservativen Modus und erhöhen Sie die Risiken schrittweise, während Sie Erfahrungen sammeln. Denken Sie daran, dass der Kapitalerhalt wichtiger ist als ein sofortiger Gewinn.
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/ru/articles/18918
Warnung: Alle Rechte sind von MetaQuotes Ltd. vorbehalten. Kopieren oder Vervielfältigen untersagt.
Dieser Artikel wurde von einem Nutzer der Website verfasst und gibt dessen persönliche Meinung wieder. MetaQuotes Ltd übernimmt keine Verantwortung für die Richtigkeit der dargestellten Informationen oder für Folgen, die sich aus der Anwendung der beschriebenen Lösungen, Strategien oder Empfehlungen ergeben.
Marktsimulation: Positionsdarstellung (III)
Community of Scientists Optimization (CoSO): Praxis
Algorithmus für künstliche Atome (A3)
Gaußsche Prozesse für maschinellen Lernen (Teil 2): Implementierung und Testen eines Klassifizierungsmodells in MQL5
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo, vielen Dank für Ihre Arbeit!
Ich würde mir jedoch wünschen, den Code für die Klasse zu sehen, die in dem Artikel beschrieben wird, zum Beispiel
Im Artikel:
In der beigefügten Datei:
enum ENUM_RISK_CALC_TYPE {
RISK_CALC_BALANCE_ONLY, // Only Balance
RISK_CALC_EQUITY_ONLY, // Only Equity
RISK_CALC_BALANCE_EQUITY, // Balance/Equity (US Prop Style)
RISK_CALC_PROP_STANDARD // Standard Prop Company Rules
};
Die im Artikel erwähnte „adaptive Berechnung“ taucht im beigefügten Klassencode nirgends auf.
Außerdem enthält der Code einen Fehler, der die Kompilierung des Expert-Codes verhindert:
// Trading Object
CTrade m_trade;
Im Abschnitt „public“ müsste stehen:
Bitte überprüfen Sie dies.
Bei mir läuft die Kompilierung ebenfalls nicht durch – sie bleibt in Zeile 124 hängen: 123 // Festlegen der Magic Number für das Handelsobjekt
Ich habe den Risikomanager für meinen laufenden Martingale-Expert Advisor eingesetzt
Hier ist das Testergebnis für 2025 ohne Risikomanager:
Und hier mit den besten Einstellungen des Risikomanagers:
Wie Sie sehen, hat sich der absolute Drawdown halbiert, während sich der Gewinn vervierfacht hat.