Code Library / Risk Management

MQL5 Lot Size Calculator

Calculate lot size based on risk percentage and stop loss distance.

Language: MQL5 · Category: Risk Management · Tags: lot size, risk management, MQL5, position sizing, calculator

Source code

double CalcLotSize(double riskPct, double slPips) {
   double bal=AccountInfoDouble(ACCOUNT_BALANCE);
   double risk=bal*riskPct/100;
   double tv=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE);
   double ts=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
   double pt=SymbolInfoDouble(_Symbol,SYMBOL_POINT);
   double pv=tv*(pt/ts);
   if(pv==0||slPips==0) return 0.01;
   double lot=risk/(slPips*pv);
   double mn=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   double mx=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
   double st=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
   lot=MathFloor(lot/st)*st;
   return NormalizeDouble(MathMax(mn,MathMin(mx,lot)),2);
}

How to use this snippet

This is a building block, not a finished trading system. Paste it into your own MQL5 project, compile it, and test it on a demo account with your broker's real spreads before relying on it. If MetaEditor reports errors, the compilation error fixer can help.

Related snippets