1

I know you can utilize the built in iMACD() function but it uses a variant of what I need. I am only interested in the first point. When accessing MACDLineBuffer[1] I get the correct value. However SignalLineBuffer[1] and consequently HistogramBuffer[1] are significantly off.

int SignalMAPeriod = 9;
double alpha   = 2.0 / (SignalMAPeriod + 1.0);
double alpha_1 = 1.0 - alpha;

   for(int i=limit; i>=0; i--)
   {
      MACDLineBuffer[i]   = iMA(NULL,0,FastMAPeriod,0,MODE_EMA,PRICE_CLOSE,i)
                          - iMA(NULL,0,SlowMAPeriod,0,MODE_EMA,PRICE_CLOSE,i);

      SignalLineBuffer[i] = alpha   * MACDLineBuffer[i]
                          + alpha_1 * SignalLineBuffer[i+1];

      HistogramBuffer[i]  = MACDLineBuffer[i]
                          - SignalLineBuffer[i];
   }
user3666197
  • 1
  • 6
  • 50
  • 92
SolidCloudinc
  • 329
  • 10
  • 27

0 Answers0