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
Universal Pip Value and Dynamic Lot Calculator Class for MQL5 - Bibliothek für den MetaTrader 5
- Ansichten:
- 10
- Rating:
- Veröffentlicht:
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
CRiskCalculator ist eine objektorientierte MQL5-Header-Bibliothek, die für das Risikomanagement und Volumenberechnungen für Expert Advisors und Handelswerkzeuge entwickelt wurde . Sie berechnet den monetären Pip-Wert und die genaue Lotgröße auf der Grundlage eines bestimmten Kontorisikos und einer Stop-Loss-Distanz in Pips .
Ein häufiges Problem beim automatisierten Handel ist die Berechnung der Positionsgröße bei Währungspaaren verschiedener Währungen (beispielsweise beim Handel mit GBPJPY auf einem auf Euro lautenden Konto) . Diese Klasse bewältigt diese Herausforderung, indem sie native MetaTrader-5-Symbol-Eigenschaften mit einem Fallback-Umrechnungssystem für Währungspaare mit unterschiedlichen Basiswährungen kombiniert .
Wichtigste Funktionen
-
Berechnung mit zwei Engines: Verwendet native Broker-Eigenschaften (SYMBOL_TRADE_TICK_VALUE und SYMBOL_TRADE_TICK_SIZE) als primäre Berechnungsmethode . Sind diese Parameter nicht verfügbar oder vom Broker nicht initialisiert, greift das System automatisch auf die manuelle Ermittlung der Basis- und Kurswährung sowie auf Abfragen der Umrechnungskurse zurück .
-
Normalisierung der Broker-Parameter: Berechnete Volumina werden automatisch zwischen SYMBOL_VOLUME_MIN und SYMBOL_VOLUME_MAX begrenzt und an SYMBOL_VOLUME_STEP angepasst, um Ablehnungsfehler des Brokers (wie z. B. TRADE_RETCODE_INVALID_VOLUME) zu vermeiden .
-
Sauberes OOP-Design: In der Klasse „CRiskCalculator“ gekapselt, ohne Unordnung im globalen Gültigkeitsbereich, sodass es sich leicht in bestehende EA-Projekte oder benutzerdefinierte Indikatoren integrieren lässt .
-
Selbstkonfigurierend: Erkennt bei der Initialisierung automatisch die aktuelle Basiswährung des Kontos (ACCOUNT_CURRENCY) .
Integrationsbeispiel
Um diese Klasse in Ihrem Expert Advisor oder Skript zu verwenden, legen Sie die Datei „CRiskCalculator.mqh“ in Ihrem Verzeichnis „MQL5/Include/“ ab und instanziieren Sie das Objekt :
#include <CRiskCalculator.mqh> // Hilfsfunktion zum Darstellen eines kontrastreichen Bereichs im Diagramm void DrawChartPanel(const string &lines[]) { int x = 20, y = 30; int width = 280, lineHeight = 18; int height = (ArraySize(lines) * lineHeight) + 20; // 1. Hintergrundfeld erstellen (sichtbar bei weißen, schwarzen oder benutzerdefinierten Diagrammen) string bgName = "RiskCalc_BG"; if(ObjectFind(0, bgName) < 0) ObjectCreate(0, bgName, OBJ_RECTANGLE_LABEL, 0, 0, 0); ObjectSetInteger(0, bgName, OBJPROP_CORNER, CORNER_LEFT_UPPER); ObjectSetInteger(0, bgName, OBJPROP_XDISTANCE, x); ObjectSetInteger(0, bgName, OBJPROP_YDISTANCE, y); ObjectSetInteger(0, bgName, OBJPROP_XSIZE, width); ObjectSetInteger(0, bgName, OBJPROP_YSIZE, height); ObjectSetInteger(0, bgName, OBJPROP_BGCOLOR, clrDarkSlateGray); ObjectSetInteger(0, bgName, OBJPROP_BORDER_COLOR, clrDodgerBlue); ObjectSetInteger(0, bgName, OBJPROP_BORDER_TYPE, BORDER_FLAT); ObjectSetInteger(0, bgName, OBJPROP_SELECTABLE, false); // 2. Textzeilen innerhalb des Fensters darstellen for(int i = 0; i < ArraySize(lines); i++) { string lblName = "RiskCalc_Lbl_" + IntegerToString(i); if(ObjectFind(0, lblName) < 0) ObjectCreate(0, lblName, OBJ_LABEL, 0, 0, 0); ObjectSetInteger(0, lblName, OBJPROP_CORNER, CORNER_LEFT_UPPER); ObjectSetInteger(0, lblName, OBJPROP_XDISTANCE, x + 12); ObjectSetInteger(0, lblName, OBJPROP_YDISTANCE, y + 10 + (i * lineHeight)); ObjectSetString(0, lblName, OBJPROP_TEXT, lines[i]); ObjectSetString(0, lblName, OBJPROP_FONT, "Segoe UI"); ObjectSetInteger(0, lblName, OBJPROP_FONTSIZE, 9); ObjectSetInteger(0, lblName, OBJPROP_COLOR, (i == 0) ? clrYellow : clrWhite); ObjectSetInteger(0, lblName, OBJPROP_SELECTABLE, false); } ChartRedraw(0); } void OnStart() { // Den Risikorechner instanziieren CRiskCalculator riskCalc; string symbol = _Symbol; double riskAmount = 100.0; // Zielrisiko in Kontowährung double slPips = 25.0; // Stop-Loss-Abstand in Pips // Parameter berechnen double lotSize = riskCalc.CalculateLotSize(symbol, riskAmount, slPips); double pipValPerLot = riskCalc.GetPipValuePerLot(symbol); // Ausgabezeilen vorbereiten string info[6]; info[0] = "=== RISK & POSITION CALCULATOR ==="; info[1] = "Symbol: " + symbol; info[2] = "Account Currency: " + AccountInfoString(ACCOUNT_CURRENCY); info[3] = "Target Risk: $" + DoubleToString(riskAmount, 2); info[4] = "Calculated Lot Size: " + DoubleToString(lotSize, 2) + " lots"; info[5] = "Pip Value (1 Lot): " + DoubleToString(pipValPerLot, 2); // GUI-Fenster im Diagramm anzeigen DrawChartPanel(info); }

Klassenreferenz
| Methode | Rückgabetyp | Beschreibung |
| GetPipValuePerLot(string symbol) | double | Gibt den Geldwert von 1 Pip für 1 Standardlot in der Kontowährung zurück . |
| GetPipValue(string symbol, double volume) | double | Gibt den gesamten Geldwert von 1 Pip für ein angegebenes Volumen zurück . |
| CalculateLotSize(string symbol, double riskAmount, double slPips) | double | Berechnet und normiert die Lotgröße für ein angestrebtes Barrisiko und einen Stop-Loss in Pips . |
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/77130
Gueta Position Sizer: Risk and Lot Guard HUD
Echtzeit-Risikorechner und Lot-Size-Guard-HUD für MT5. Berechnet die genaue Lotgröße auf Basis des Kontostands, des angestrebten Risikoprozentsatzes und eines dynamischen ATR-Stop-Loss mit Warnung bei minimaler Lot-Überschreitung.
RJO Daily Pivot Levels Classic and Fibonacci for MT5
Indikator „Daily Pivot Points“ für MetaTrader 5 mit klassischen und Fibonacci-Methoden. Zeigt PP, R1–R3 und S1–S3 anhand der letzten abgeschlossenen Tageskerze an.
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.