Can you give a link or code for that?

So far I have done by examples this

MQL5:

double calculateLotSizeForPips(double slPips, double maxRiskPerTradePercent){ //Calculate the size of the position size double LotSize=0; //We get the value of a tick //double nTickValue=MarketInfo(Symbol(),MODE_TICKVALUE); // not used double nTickValue = SYMBOL_TRADE_TICK_VALUE; //If the digits are 3 or 5 we normalize multiplying by 10 /*if(_Digits==3 || _Digits==5){ nTickValue=nTickValue*10; }*/ float balance = AccountInfoDouble(ACCOUNT_BALANCE); //We apply the formula to calculate the position size and assign the value to the variable LotSize=(balance*maxRiskPerTradePercent/100)/(slPips*nTickValue); //LotSize=MathRound(LotSize/MarketInfo(Symbol(),MODE_LOTSTEP))*MarketInfo(Symbol(),MODE_LOTSTEP); // not used double volumeStep = SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP); LotSize=MathRound(LotSize/volumeStep)*volumeStep; return LotSize; }

But it works bad. Testing on USDJPY pair, usd account.

I do not know why in the example was when digits are 3 or 5 - multiply by ten , but it make my position 10 times smaller.

So for 10k account, when I put to formula it is:

Risk 2 percent, pips 4, tick value 26

10000*0.02/(4*26) = 1.92

Code with volume step is not changing the result.

But it is wrong.

It loses about 80 usd. 2 % from 10k is 200.

Backtest shows it has lost about 75

its more or less what the function calculated. But it is not 200.

It is weird I cannot find a thing which should be used by tons of developers