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];
}