iMAOnArray value zero

 

In the code below the variable maDiffArray is calculated to be zero for all values of i. CloseDiffArray is not zero. What is causing this variable to be zero? Any helpful insight would be appreciated.


extern int ArrayPeriod = 8;


double CloseDiffArray[5000];

double maDiffArray[5000];


ArraySetAsSeries(CloseDiffArray,true);
ArraySetAsSeries(maDiffArray,true);


for(i=0; i <= Bars-1; i++) { maDiffArray[i]= iMAOnArray(CloseDiffArray,Bars,ArrayPeriod,0,MODE_EMA,i); }

 
Show all your code, please.
 
phy:
Show all your code, please.


#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 OrangeRed
#property indicator_color2 MediumSlateBlue
#property indicator_color3 OrangeRed
#property indicator_color4 MediumSlateBlue
#property indicator_color5 Blue
#property indicator_color6 Red
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 3
#property indicator_width4 3
#property indicator_width5 1
#property indicator_width6 1
//---- parameters
extern int MaMethod = 2;
extern int MaPeriod = 6;
extern int MaMethod2 = 3;
extern int MaPeriod2 = 2;

extern int AllBars=0;
extern double Per=9;
extern int Decimals=5;

//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double BufD[];
double BufU[];
double ExtMapBuffer7[];
double ExtMapBuffer8[];
double ExtMapBuffer9[];
double ExtMapBuffer10[];


//---- other
int ExtCountedBars=0;
int NB;

extern int ClosePeriod =4;
extern int ArrayPeriod = 8;
extern int xPeriod = 5;
extern int trigger =4;

//---- indicator buffers
string signal;
double CloseDiff[50000];
double absCloseDiff[50000];
double CloseDiffArray[50000];
double maDiffArray[50000];
double absCloseDiffArray[50000];
double maabsCloseDiffArray[50000];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//|------------------------------------------------------------------|
int init()
{
if (Bars<AllBars+Per || AllBars==0) NB=Bars-Per; else NB=AllBars;
//---- indicators
IndicatorBuffers(8);

SetIndexStyle(0,DRAW_HISTOGRAM, 0);
SetIndexStyle(1,DRAW_HISTOGRAM, 0);
SetIndexStyle(2,DRAW_HISTOGRAM, 0);
SetIndexStyle(3,DRAW_HISTOGRAM, 0);
SetIndexStyle(4,DRAW_ARROW,0,1);
SetIndexArrow(4,233);
SetIndexStyle(5,DRAW_ARROW,0,1);
SetIndexArrow(5,234);

//---- indicator buffers mapping
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexBuffer(2,ExtMapBuffer3);
SetIndexBuffer(3,ExtMapBuffer4);
SetIndexBuffer(4,BufU);
SetIndexBuffer(5,BufD);
SetIndexBuffer(6,ExtMapBuffer7);
SetIndexBuffer(7,ExtMapBuffer8);

SetIndexDrawBegin(0,5);
SetIndexDrawBegin(4,Bars-NB);
SetIndexDrawBegin(5,Bars-NB);

return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
static string prior_direction = "";
string this_direction = "";
string candle = "";

double maOpen, maClose, maLow, maHigh;
double haOpen, haHigh, haLow, haClose, haClosePrev;
int i, limit=ArraySize(CloseDiff);

ArraySetAsSeries(CloseDiff,true);
ArraySetAsSeries(absCloseDiff,true);
ArraySetAsSeries(CloseDiffArray,true);
ArraySetAsSeries(maDiffArray,true);
ArraySetAsSeries(absCloseDiffArray,true);
ArraySetAsSeries(maabsCloseDiffArray,true);

haClose= 0; //initialize
if(Bars<=10) return(0);
ExtCountedBars=IndicatorCounted();

//---- check for possible errors
if (ExtCountedBars<0) return(-1);
if (ExtCountedBars>0) ExtCountedBars--;

for(i=0; i <= Bars; i++) { CloseDiff[i]= Close[i]-Close[i+1]; }
for(i=0; i <= Bars-1; i++) { absCloseDiff[i] = MathAbs(CloseDiff[i]); }

for(i=0; i <= Bars-1; i++) { CloseDiffArray[i]= iMAOnArray(CloseDiff,0,ClosePeriod,0,MODE_EMA,i); }

//----maDiffArray[i] evaluates to zero on next statement
for(i=0; i <= Bars-1; i++) { maDiffArray[i]= iMAOnArray(CloseDiffArray,Bars,ArrayPeriod,0,MODE_EMA,i); Print(i," bars=",Bars," ma=",maDiffArray[i]);}
for(i=0; i <= Bars-1; i++) { absCloseDiffArray[i]= iMAOnArray(absCloseDiff,0,ClosePeriod,0,MODE_EMA,i); }
for(i=0; i <= Bars-1; i++) { maabsCloseDiffArray[i]= iMAOnArray(absCloseDiffArray,0,ArrayPeriod,0,MODE_EMA,i); }

 

Change

for(i=0; i <= Bars-1; i++) { maDiffArray[i]= iMAOnArray(CloseDiffArray,Bars,ArrayPeriod,0,MODE_EMA,i); }
to

for(i=0; i <= Bars-1; i++) { maDiffArray[i]= iMAOnArray(CloseDiffArray,0,ArrayPeriod,0,MODE_EMA,i); }