Normalize The Price Like Normalize Double

 
double dblNormPrice(double price,int digits)
 {
  return(round(price/dblTickBase(digits))*dblTickBase(digits));
 }

double dblTickBase(int iCnt)
 {
  switch(iCnt)
   {
    case 5: return(1/100000);
    case 4: return(1/10000);
    case 3: return(1/1000);
    case 2: return(1/100);
    case 1: return(1/10);
   }
  return(1.0);
 }


I am reading an error of divide by zero


Any help is appreciated

 
  1. Brian Lillard: I am reading an error of divide by zero
        case 5: return(1/100000);
    

    Of course it does.
              On MT4 v434, division quotient don't give floating point values(Bug??) - MQL4 programming forum 2012.09.18

  2. Your 1/nnnn is equivalent to _Point.

  3. double   normalize_price(double p, double d=0.0){
    double tickSize    = MarketInfo(_Symbol, MODE_TICKSIZE);    
       if(d > 0)   return round_up(p,      tickSize);
       if(d < 0)   return round_down(p,    tickSize);
                   return round_nearest(p, tickSize);
    }
    double   round_down(    double v, double to){   return to * MathFloor(v / to); }
    double   round_up(      double v, double to){   return to * MathCeil( v / to); }
    double   round_nearest( double v, double to){   return to * MathRound(v / to); }

Reason: