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