TradingFunctions
//+------------------------------------------------------------------+
//| NormalizePrice.mq4 |
//| GF1D |
//| |
//+------------------------------------------------------------------+
#property copyright "GF1D"
//--------------------------------------------------------------------
double NormalizePrice(double price, bool round = true)
{
double tickSize = MarketInfo(Symbol(), MODE_TICKSIZE);
int fullCount = price / tickSize; // вычисляем количество полных тиков до цены
double result = fullCount * tickSize; // вычисляем результат, отбросив остаток
// если округляем
if (round)
{
double mod = price - result; // вычисляем остаток
if (mod >= tickSize / 2.0) // если остаток можно округлить до большего тика
result = result + tickSize; // то прибавляем к цене этот тик
}
return(result);
}