MQL5

Lot sizing por porcentaje de riesgo

Calcula el volumen exacto para que un stop-loss alcanzado cueste un importe preciso, mediante SYMBOL_TRADE_TICK_VALUE y SYMBOL_TRADE_TICK_SIZE — funciona en Forex, índices y metales.

Requisitos

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);

Resultado

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 relacionados

Volver al Data Lab