MQL5

Lot sizing par pourcentage de risque

Calcule le volume exact pour qu'un stop-loss touché coûte un montant précis, via SYMBOL_TRADE_TICK_VALUE et SYMBOL_TRADE_TICK_SIZE — fonctionne sur Forex, indices et métaux.

Cas d'usage

Money management strict : risquer exactement 1% de l'équité par trade, quel que soit le symbole.

Prérequis

MetaTrader 5, MQL5

MQL5
double LotForRisk(string symbol, double riskMoney, double slPoints)
{
   double tickValue = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE);
   double tickSize  = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE);
   double point     = SymbolInfoDouble(symbol, SYMBOL_POINT);
   if(tickValue <= 0.0 || tickSize <= 0.0 || slPoints <= 0.0)
      return 0.0;

   // Perte en devise du compte pour 1 lot si le SL est touché
   double lossPerLot = slPoints * point / tickSize * tickValue;
   if(lossPerLot <= 0.0)
      return 0.0;

   return NormalizeLot(symbol, riskMoney / lossPerLot);
}

// Exemple : risquer 1% de l'équité sur un SL de 250 points
double risk = AccountInfoDouble(ACCOUNT_EQUITY) * 0.01;
double lot  = LotForRisk(_Symbol, risk, 250.0);

Résultat

2026.06.10 10:02:14.873  RiskSizer (EURUSD,H1)  Equité 10000.00 USD -> risque 1% = 100.00 USD
2026.06.10 10:02:14.874  RiskSizer (EURUSD,H1)  SL 250 pts | tick_value 1.00 | tick_size 0.00001 -> perte/lot 250.00 USD
2026.06.10 10:02:14.874  RiskSizer (EURUSD,H1)  Lot calculé 0.40 -> normalisé 0.40 (min 0.01 / step 0.01)
2026.06.10 10:02:14.875  RiskSizer (EURUSD,H1)  Si SL touché : perte = 100.00 USD soit 1.00% de l'équité — OK
Risk ManagementLot SizingTick ValueExpert Advisor

Snippets liés

Retour au Data Lab