Guarda come scaricare robot di trading gratuitamente
Ci trovi su Facebook!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Librerie

Universal Pip Value and Dynamic Lot Calculator Class for MQL5 - libreria per MetaTrader 5

Visualizzazioni:
75
Valutazioni:
(2)
Pubblicato:
\MQL5\Include\
Freelance MQL5 Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

CRiskCalculator è una libreria di header MQL5 orientata agli oggetti, progettata per gestire la gestione del rischio e i calcoli dei volumi per gli Expert Advisor e gli strumenti di trading . Calcola i valori monetari dei pip e le dimensioni precise dei lotti in base a un importo di rischio specifico del conto e alla distanza dello Stop Loss in pip .

Un problema comune nel trading automatizzato è il calcolo delle dimensioni delle posizioni sulle coppie valutarie incrociate (ad esempio, il trading su GBPJPY con un conto denominato in EUR) . Questa classe affronta tale sfida combinando le proprietà native dei simboli di MetaTrader 5 con un sistema di conversione di riserva per le coppie valutarie incrociate .

Caratteristiche principali

  • Calcolo a doppio motore: utilizza le proprietà native del broker ( SYMBOL_TRADE_TICK_VALUE e SYMBOL_TRADE_TICK_SIZE ) come metodo di calcolo primario . Se tali parametri non sono disponibili o non sono stati inizializzati dal broker, il sistema ricorre automaticamente all’estrazione manuale della valuta di base e di quotazione e alle richieste dei tassi di conversione .

  • Normalizzazione dei parametri del broker: limita automaticamente i volumi calcolati tra SYMBOL_VOLUME_MIN e SYMBOL_VOLUME_MAX e li allinea a SYMBOL_VOLUME_STEP per evitare errori di rifiuto da parte del broker (come TRADE_RETCODE_INVALID_VOLUME) .

  • Design OOP pulito: incapsulato all’interno della classe CRiskCalculator senza ingombro nell’ambito globale, il che ne facilita l’integrazione in progetti EA esistenti o indicatori personalizzati .

  • Autoconfigurazione: rileva automaticamente la valuta di base del conto corrente (ACCOUNT_CURRENCY) all’inizializzazione .

Esempio di integrazione

Per utilizzare questa classe nel proprio Expert Advisor o script, inserire CRiskCalculator.mqh nella directory MQL5/Include/ e istanziare l’oggetto :

#include <CRiskCalculator.mqh>

// Funzione di supporto per visualizzare un pannello ad alto contrasto sul grafico
void DrawChartPanel(const string &lines[])
  {
   int x = 20, y = 30;
   int width = 280, lineHeight = 18;
   int height = (ArraySize(lines) * lineHeight) + 20;

   // 1. Creare un riquadro di sfondo (visibile sui grafici bianchi, neri o personalizzati)
   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. Visualizza le righe di testo all'interno del pannello
   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()
  {
   // Creare un'istanza del calcolatore di rischio
   CRiskCalculator riskCalc;

   string symbol     = _Symbol;
   double riskAmount = 100.0; // Rischio target nella valuta del conto
   double slPips     = 25.0;  // Distanza dello Stop Loss in pip

   // Calcolo dei parametri
   double lotSize      = riskCalc.CalculateLotSize(symbol, riskAmount, slPips);
   double pipValPerLot = riskCalc.GetPipValuePerLot(symbol);

   // Preparare le righe di output
   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);

   // Visualizza il pannello GUI sul grafico
   DrawChartPanel(info);
  }
Esempio sul grafico

Riferimento alla classe

Metodo Tipo di ritorno Descrizione
GetPipValuePerLot(string symbol) double

Restituisce il valore monetario di 1 pip per 1 lotto standard nella valuta del conto .

GetPipValue(string symbol, double volume) double

Restituisce il valore monetario totale di 1 pip per un volume specificato .

CalculateLotSize(string symbol, double riskAmount, double slPips) double

Calcola e normalizza la dimensione del lotto in base a un rischio in contanti desiderato e a uno Stop Loss in pip .


Tradotto dall’inglese da MetaQuotes Ltd.
Codice originale https://www.mql5.com/en/code/77130

Gueta Position Sizer: Risk and Lot Guard HUD Gueta Position Sizer: Risk and Lot Guard HUD

Calcolatore di rischio in tempo reale e HUD di controllo della dimensione del lotto per MT5. Calcola la dimensione esatta del lotto in base al saldo del conto, alla percentuale di rischio desiderata e allo Stop Loss ATR dinamico, con avviso di superamento minimo del lotto.

RJO Daily Pivot Levels  Classic and  Fibonacci for MT5 RJO Daily Pivot Levels Classic and Fibonacci for MT5

Indicatore dei punti pivot giornalieri per MetaTrader 5 con metodi classico e di Fibonacci. Visualizza PP, R1-R3 e S1-S3 utilizzando la candela giornaliera precedente completata.

Margin Risk Simulator Margin Risk Simulator

Shows the prices of the current symbol at which the account reaches margin call and stop out, with a what-if mode for extra volume, the maximum volume you can add and pending orders that trigger on the way.

GridPro Panel — open-source grid trading EA with on-chart control panel GridPro Panel — open-source grid trading EA with on-chart control panel

open-source grid trading EA with on-chart control panel