Download MetaTrader 5

Use NormalizeDouble without round the number

To add comments, please log in or register
web11
293
web11  

Dear,

I wrote the code below.

int LOT_PRECISION=2;
sLots = 0.02;
Multi = 1.83;
double mLot = NormalizeDouble(sLots * Multi,LOT_PRECISION);

So actually calculation is  0.02*1.83=0.0366   and i want only 2 digit without round the number like = 0.03 just leave "66"

but above coding mLots show 0.04 coding make it round. i don't want round. is anyone help me how i make code function return double value with 2 digit without round the number.


Thank in Advanced

Alain Verleyen
Moderator
33815
Alain Verleyen  

Normalize your lot correctly :

Forum on trading, automated trading systems and testing trading strategies

Help with a recurring OrderClose function error

Alain Verleyen, 2016.11.30 14:57

You have either to use OrderLots() to close a full position or

to normalize your lot size this way :

      double lotStep=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
      lots=MathRound(lots/lotStep)*lotStep;
If you don't want rounding, just use MathFloor() instead of MathRound().
whroeder1
16575
whroeder1  
Do NOT use NormalizeDouble, EVER. For ANY Reason. It's a kludge, don't use it. It's use is always wrong
To add comments, please log in or register