Rejoignez notre page de fans
Universal Pip Value and Dynamic Lot Calculator Class for MQL5 - bibliothèque pour MetaTrader 5
- Vues:
- 77
- Note:
- Publié:
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
CRiskCalculator est une bibliothèque d'en-têtes MQL5 orientée objet, conçue pour gérer la gestion des risques et les calculs de volume pour les Expert Advisors et les outils de trading . Elle calcule la valeur monétaire d'un pip et la taille précise des lots en fonction d'un montant de risque spécifique au compte et d'une distance de Stop Loss exprimée en pips .
Un problème courant dans le trading automatisé est le calcul de la taille des positions sur des paires de devises croisées (par exemple, le trading de la paire GBPJPY sur un compte libellé en EUR) . Cette classe relève ce défi en combinant les propriétés natives des symboles de MetaTrader 5 avec un système de conversion de secours pour les paires de devises croisées .
Principales fonctionnalités
-
Calcul à double moteur : utilise les propriétés natives du courtier ( SYMBOL_TRADE_TICK_VALUE et SYMBOL_TRADE_TICK_SIZE ) comme méthode de calcul principale . Si ces paramètres ne sont pas disponibles ou n’ont pas été initialisés par le courtier, le système recourt automatiquement à l’extraction manuelle des devises de base et de cotation, ainsi qu’à des requêtes de taux de conversion .
-
Normalisation des paramètres du courtier : limite automatiquement les volumes calculés entre SYMBOL_VOLUME_MIN et SYMBOL_VOLUME_MAX, et les aligne sur SYMBOL_VOLUME_STEP afin d’éviter les erreurs de rejet par le courtier (telles que TRADE_RETCODE_INVALID_VOLUME) .
-
Conception OOP épurée : encapsulée au sein de la classe CRiskCalculator sans encombrement de la portée globale, ce qui facilite son intégration dans des projets d’EA existants ou des indicateurs personnalisés .
-
Auto-configuration : détecte automatiquement la devise de base du compte (ACCOUNT_CURRENCY) lors de l’initialisation .
Exemple d'intégration
Pour utiliser cette classe dans votre Expert Advisor ou votre script, placez le fichier CRiskCalculator.mqh dans votre répertoire MQL5/Include/ et instanciez l’objet :
#include <CRiskCalculator.mqh> // Fonction d'aide permettant d'afficher un panneau à fort contraste sur le graphique void DrawChartPanel(const string &lines[]) { int x = 20, y = 30; int width = 280, lineHeight = 18; int height = (ArraySize(lines) * lineHeight) + 20; // 1. Créer une zone d'arrière-plan (visible sur les graphiques blancs, noirs ou personnalisés) 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. Afficher des lignes de texte à l'intérieur du panneau 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() { // Instancier le calculateur de risque CRiskCalculator riskCalc; string symbol = _Symbol; double riskAmount = 100.0; // Risque cible dans la devise du compte double slPips = 25.0; // Distance du Stop Loss en pips // Calculer les paramètres double lotSize = riskCalc.CalculateLotSize(symbol, riskAmount, slPips); double pipValPerLot = riskCalc.GetPipValuePerLot(symbol); // Préparer les lignes de sortie 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); // Afficher le panneau de l'interface graphique sur le graphique DrawChartPanel(info); }

Référence de classe
| Méthode | Type de retour | Description |
| GetPipValuePerLot(string symbol) | double | Renvoie la valeur monétaire d'un pip pour un lot standard dans la devise du compte . |
| GetPipValue(chaîne symbole, double volume) | double | Renvoie la valeur monétaire totale d’un pip pour un volume donné . |
| CalculateLotSize(string symbol, double riskAmount, double slPips) | double | Calcule et normalise la taille du lot en fonction d’un risque en espèces cible et d’un Stop Loss en pips . |
Traduit de l’anglais par MetaQuotes Ltd.
Code original : https://www.mql5.com/en/code/77130
Gueta Position Sizer: Risk and Lot Guard HUD
Calculateur de risque en temps réel et HUD de contrôle de la taille des lots pour MT5. Calcule la taille exacte des lots en fonction du solde du compte, du pourcentage de risque cible et d'un Stop Loss ATR dynamique, avec alerte en cas de dépassement minimal de la taille du lot.
RJO Daily Pivot Levels Classic and Fibonacci for MT5
Indicateur « Daily Pivot Points » pour MetaTrader 5, utilisant les méthodes classique et de Fibonacci. Affiche les niveaux PP, R1-R3 et S1-S3 à partir de la dernière bougie journalière clôturée.
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