Wrong caculation from iMAonArray

 

Can some one kindly help to comment on the following code?

I got problem for the following code, the last thousands caculation is not corrected, and I had tried to use array initialize funtion and even a for() operation to initialize . but it did not work at all. it looks that the iMAonArray had problem somewhere. but I have no idea where is the problem located.

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Silver
#property indicator_color2 Red
#property indicator_width1 2

extern int FastEMA=36;
extern int SlowEMA=144;
extern int SignalSMA=24;

double MacdBuffer[];
double SignalBuffer[];

int init()
{
IndicatorBuffers(2);
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexDrawBegin(0,SlowEMA);
SetIndexStyle(1,DRAW_LINE);
SetIndexDrawBegin(1,SignalSMA+SlowEMA);

SetIndexBuffer(0,MacdBuffer);
SetIndexBuffer(1,SignalBuffer);

IndicatorShortName("MACD Debugging("+FastEMA+","+SlowEMA+","+SignalSMA+")");
SetIndexLabel(0,"MACD");
SetIndexLabel(1,"Signal");
}

int start()
{
int limit,i=0;
int counted_bars=IndicatorCounted();

if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;

for(i=0; i<limit; i++)
MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_SMMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_SMMA,PRICE_CLOSE,i);

for(i=0; i<limit-SignalSMA; i++)
SignalBuffer[i]=iMAOnArray(MacdBuffer,0,SignalSMA,0,MODE_SMMA,i);
}

Files:
pic.rar  17 kb
 
did anyone know the solution?