Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Facebook!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Bibliotheken

Universal Pip Value and Dynamic Lot Calculator Class for MQL5 - Bibliothek für den MetaTrader 5

Ansichten:
10
Rating:
(2)
Veröffentlicht:
\MQL5\Include\
MQL5 Freelance 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);
  }
Beispiel im Diagramm

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 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 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 Accumulation/Distribution

Der Accumulation/Distribution Indikator wird aus Änderung von Preis und Volumen bestimmt.

Accelerator Oszillator (AC) Accelerator Oszillator (AC)

Der Acceleration/Deceleration Indikator (AC) misst die Beschleunigung und Verlangsamung des aktuellen Marktimpulses, der Kraft der Kursbewegung.