Double Weighted Moving Average ... Missing?

 

Hi All:

We have DEMA, TEMA, AMA and etc on MQL4 Code Base but not the Double Weighted Moving Average which I think is very useful as well.

Can someone shed some light on coding this Double Weighted Moving Average?

In addition to that, I not so sure about the calculation phase but is the Linear Weighted Moving Average on MetaTrader is the same as the common Weight Moving Average that we can found on other platforms such as Ninja and TradeStation? Can someone confirm on this?

Millions thanks in advance!

Regards,
James

 

Can anyone help?

TIA!

 
3827:

Hi All:

We have DEMA, TEMA, AMA and etc on MQL4 Code Base but not the Double Weighted Moving Average which I think is very useful as well.

Can someone shed some light on coding this Double Weighted Moving Average?

In addition to that, I not so sure about the calculation phase but is the Linear Weighted Moving Average on MetaTrader is the same as the common Weight Moving Average that we can found on other platforms such as Ninja and TradeStation? Can someone confirm on this?

Millions thanks in advance!

Regards,
James


I never heard about a double weighted moving average what is the formula for calculating a double weighted moving average ? Are you sure you are not talking about a double exponential moving average ? Also known as DEMA.
 

No, it is different than the DEMA.

It is the standard weighted moving average 'weighted' one more time. Pretty common in my trading circle.

TIA!

 

so is it an average of an average ?

 

Yes, just like DEMA. You average the EMA one more time. Double it. For TEMA, you average the DEMA one more time and make it 3 times in average.

For Double Weighted Moving Average, take the standard Weighted Moving Average and average it one more time with the same period/length.

Can you pls help?

Many TIA!

 
lwmaBuf[]
dwmaBuf[]
...
double LWMA(double array[], int per, int bar)
{
   double Sum = 0;
   double Weight = 0;
   
   for(int i = 0;i < per;i++)
      { 
      Weight+= (per - i);
      Sum += array[bar+i]*(per - i);
      }
   if(Weight>0) double lwma = Sum/Weight;
   else lwma = 0; 
   return(lwma);
} 
start(){...
  for(...){
     lwmaBuf[shift] = LWMA(Close, MAperiod, shift);
     dwmaBuf[shift] = LWMA(lwmaBuf, MAperiod, shift);
  }
 

WHRoeder, pls pardon that my programming skill is poor. Can you post a full version of the code? Pls. Many thanks to you!

 
Take ANY indicator and modify. No slaves here, learn to code or pay someone.
Reason: