Hello Everyone i used a normalize function for a double value but it doesn't show fixed digits in results.
sometime it shows 2 digits value such as 1.10 that is correct. but sometime it shows me 1.100000000000
Can you help me to understand how to fix it and why it giving this issue. because it can make problem when the expert advisor try to send order. i noticed if the lotsize value or price double value is not Normalized then the EA generate execution or wrong value error.
Example:
here i attached a photo too.
When you want to Print() or Comment() doubles, you need to convert them using DoubleToString(). Normalizing them is not enough.
As for Trade Operations, it is better to use a little Math to create a "Custom Made Function" to Normalize instead of NormalizeDouble().
For LotSizes, Normalize to SYMBOL_VOLUME_STEP without using NormalizeDouble().
For Prices, Normalize to MODE_TICKSIZE without using NormalizeDouble().
Cheers!

- docs.mql4.com
You used NormalizeDouble, It's use is usually wrong, as it is in your case.
-
Floating point has a infinite number of decimals, it's your not understanding floating point and that some numbers can't be represented exactly. (like 1/10.)
Double-precision floating-point format - Wikipedia, the free encyclopediaSee also The == operand. - MQL4 programming forum (2013)
-
Print out your values to the precision you want with DoubleToString - Conversion Functions - MQL4 Reference.
-
SL/TP (stops) need to be normalized to tick size (not Point) — code fails on non-currencies.
On 5Digit Broker Stops are only allowed to be placed on full pip values. How to find out in mql? - MQL4 programming forum (2011)And abide by the limits Requirements and Limitations in Making Trades - Appendixes - MQL4 Tutorial and that requires understanding floating point equality Can price != price ? - MQL4 programming forum (2012)
-
Open price for pending orders need to be adjusted. On Currencies, Point == TickSize, so you will get the same answer, but it won't work on non-currencies. So do it right.
Trailing Bar Entry EA - MQL4 programming forum (2013)
Bid/Ask: (No Need) to use NormalizeDouble in OrderSend - MQL4 programming forum (2012) -
Lot size must also be adjusted to a multiple of LotStep and check against min and max. If that is not a power of 1/10 then NormalizeDouble is wrong. Do it right.
(MT4 2013) (MT5 2022) -
MathRound() and NormalizeDouble() are rounding in a different way. Make it explicit.
MT4:NormalizeDouble - MQL5 programming forum (2017)
How to Normalize - Expert Advisors and Automated Trading - MQL5 programming forum (2017) -
Prices you get from the terminal are already correct (normalized).
-
PIP, Point, or Tick are all different in general.
What is a TICK? - MQL4 programming forum (2014)
https://www.mql5.com/en/forum/367839/page5#comment_27658321
Bug in NormalizeDouble().
Better, use this precise function:
double RoundVolume(double pVolume, string pSymbol = NULL);
It is found in MathUtils library. https://www.mql5.com/en/code/20822

- 2022.02.08
- www.mql5.com

- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Hello Everyone i used a normalize function for a double value but it doesn't show fixed digits in results.
sometime it shows 2 digits value such as 1.10 that is correct. but sometime it shows me 1.100000000000
Can you help me to understand how to fix it and why it giving this issue. because it can make problem when the expert advisor try to send order. i noticed if the lotsize value or price double value is not Normalized then the EA generate execution or wrong value error.
Example:
// Lotsize is already normalized in OnInit function when the Expert start first run
here i attached a photo too.