Unisciti alla nostra fan page
- Visualizzazioni:
- 75
- Valutazioni:
- Pubblicato:
-
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); }

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
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
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
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
open-source grid trading EA with on-chart control panel