NormalizeDouble info - page 2

 
Alain Verleyen:
It could. Don't believe all what you read here

Yes but this:

if(NormalizeDouble(iMA(NULL, PERIOD_CURRENT, 120, 0, MODE_SMA, PRICE_CLOSE, 1+L) >= iMA(NULL, PERIOD_CURRENT, 120, 0, MODE_SMA, PRICE_CLOSE, 2+L),5))

Is kinda weird right ? it should at least be:

if(NormalizeDouble(iMA(NULL, PERIOD_CURRENT, 120, 0, MODE_SMA, PRICE_CLOSE, 1+L),5) >= NormalizeDouble(iMA(NULL, PERIOD_CURRENT, 120, 0, MODE_SMA, PRICE_CLOSE, 2+L),5))
But i just can't figure out why he wants to do that.
 
Marco vd Heijden:

Yes but this:

if(NormalizeDouble(iMA(NULL, PERIOD_CURRENT, 120, 0, MODE_SMA, PRICE_CLOSE, 1+L) >= iMA(NULL, PERIOD_CURRENT, 120, 0, MODE_SMA, PRICE_CLOSE, 2+L),5))

Is kinda weird right ? it should at least be:

if(NormalizeDouble(iMA(NULL, PERIOD_CURRENT, 120, 0, MODE_SMA, PRICE_CLOSE, 1+L),5) >= NormalizeDouble(iMA(NULL, PERIOD_CURRENT, 120, 0, MODE_SMA, PRICE_CLOSE, 2+L),5))

Of course.

But i just can't figure out why he wants to do that.

To avoid difference on 6th, 7th decimal...
 
Alain Verleyen:

Of course.
To avoid difference on 6th, 7th decimal...
Exactly for this reason
 
Alain Verleyen:
It could. Don't believe all what you read here

 You're a bad man, Alain!

 
fly7680:

Try this:

bool UpTrend()
  {
   for(int i=1; i<fmin(50,Bars-2); i++)
     {
      double MA1=iMA(_Symbol,0,120,0,MODE_SMA,PRICE_CLOSE,i),
             MA2=iMA(_Symbol,0,120,0,MODE_SMA,PRICE_CLOSE,i+1);
      if(MA1<=MA2) return(false);
     }
   return(true);
  }


 

if(UpTrend())
  {
   // do something
  }
 
fly7680: I would like to know if the moving average is ascending or descending of 50 candles, but I would also normalize the price
if(NormalizeDouble(iMA(NULL, PERIOD_CURRENT, 120, 0, MODE_SMA, PRICE_CLOSE, 1+L) >= iMA(NULL, PERIOD_CURRENT, 120, 0, MODE_SMA, PRICE_CLOSE, 2+L),5))
  1. If that s what you want "to know," #15 is correct
  2. Do NOT use NormalizeDouble, EVER. For ANY Reason. It's a kludge, don't use it. It's use is always wrong
  3. In your case, you have iMA=1.2345678, NormalizeDouble=1.23457. Therefor (non-zero is true,) you have if(true)
 
Thanks honest_knave and whroeder1
Reason: