#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1  Red
#property indicator_color2  Lime
#property indicator_width1  2
#property indicator_width2  2
#property indicator_minimum 0
#property indicator_maximum 0.08

extern ENUM_TIMEFRAMES TimeFrame        = PERIOD_CURRENT;
extern int             AdxPeriod        = 3;
extern int             MomPeriod        = 3;
extern int             MacdFastEma      = 3;
extern int             MacdSlowEma      = 5;
extern int             MacdSignalPeriod = 9;
extern int             MaxBars          = 2000;

double valueUp[];
double valueDn[];

string indicatorFileName;
bool   returnBars;

//------------------------------------------------------------------
//
//------------------------------------------------------------------
//
//
//
//
//

int init()
{
   SetIndexBuffer(0,valueUp); SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(1,valueDn); SetIndexStyle(1,DRAW_HISTOGRAM);
         indicatorFileName = WindowExpertName();
         returnBars        = TimeFrame=="returnBars"; if (returnBars)     { return(0); }
         TimeFrame         = MathMax(TimeFrame,_Period);
   return(0);
}

//
//
//
//
//

int start()
  {
   int i,counted_bars=IndicatorCounted();
      if(counted_bars<0) return(-1);
      if(counted_bars>0) counted_bars--;
         int limit = MathMin(Bars-counted_bars,Bars-1);
         if (returnBars) { valueUp[0] = limit+1; return(0); }
         if (TimeFrame != Period()) limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,TimeFrame,indicatorFileName,-99,0,0)*TimeFrame/Period()));
         
   for (i=limit; i>=0; i--)
   {
      int y = iBarShift(NULL,TimeFrame,Time[i]);
            valueDn[i] = iCustom(NULL,TimeFrame,"Ganns_Signal_Trend_v4_1",AdxPeriod,MomPeriod,MacdFastEma,MacdSlowEma,MacdSignalPeriod,MaxBars,0,y);
            valueUp[i] = iCustom(NULL,TimeFrame,"Ganns_Signal_Trend_v4_1",AdxPeriod,MomPeriod,MacdFastEma,MacdSlowEma,MacdSignalPeriod,MaxBars,1,y);
   }
   return(0);
}