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);

}