Join our fan page
- Views:
- 9870
- Rating:
- Published:
- 2016.10.27 13:41
-
Need a robot or indicator based on this code? Order it on Freelance Go to Freelance
This small cross-platform library allows to compare the 'double' values of the "price" conveniently and quickly.
For example, before placing a SellLimit, it is sometimes useful to check if the opening price is below the current Bid price.
// if (NormalizeDouble(OpenPrice, Digits()) >= NormalizeDouble(Bid, Digits())) // this method was the most frequently used if (CP(OpenPrice) >= Bid) // now it can be done like this OrderSend...;
Not only is this much clearer and more concise than the standard type check, but also the execution speed is several times higher! Such efficient usage of computational resources sometimes grants a noticeable boost in the tester/optimizer.
It is also possible to set the precision for comparing the 'double' values. For example
if ((CP(Lots, 0.01) >= MinLot) && ((CP(Lots, 0.01) <= MaxLot))) // compare with the precision up to the second decimal place OrderSend...;
All the comparison operators (==, !=, >=, <=, >, <) are handled in a similar fashion.
The library contains a faster method of the NormalizeDouble implementation. To improve the execution speed of the standard function, it is sufficient to add the following at the beginning
// Almost four times faster than the corresponding standard function (build 1395) #define NormalizeDouble PRICE_COMPARE::MyNormalizeDouble
As an example, the attached script shows the results of comparison and normalization method for different price values.
Translated from Russian by MetaQuotes Ltd.
Original code: https://www.mql5.com/ru/code/16177

The indicator displays the total lot and profit for the current instrument.

Class for working with ticks in the MetaTrader 4. It is suitable for creating experts that make decisions on trading based on the analysis of tick data.

Advanced Bollinger Bands indicator.

The indicator displays the moving average for the selected timeframe.