Помогите модифицировать индикатор Elder Impuls Sistem, или написать новый на его основе.

 
Здравствуйте!

Торгую по импульсной системе Эльдера, использую индикатор - "Elder Impuls Sistem", он окрашивает бары в красный, зеленый и голубой цвет в зависимости от значения.


Возникла идея модифицировать этот индикатор, либо новый написать на его основе, чтобы в таблице показывал два значения для всех таймфреймов.

значение 1 - цвет предыдущего уже закрытого бара
значение 2 - цвет текущего еще открытого бара.
например:
М1 - зн.1 зн.2
М5 - зн.1 зн.2
М15-зн.1 зн.2
М30-зн.1 зн.2
Н1 -зн.1 зн.2
Н4 -зн.1 зн.2
D1 -зн.1 зн.2
W1 -зн.1 зн.2

MN-зн.1 зн.2

значением может быть например стрелка, цвет красный - стрелка вниз, цвет зеленый - стрелка вверх, цвет голубой - стрелка в бок.

Сам пробывал написать, но ничего не выходит, поэтому прошу помощи

Внизу код индикатора Elder Impuls Sistem

#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Green
#property indicator_width1 2
#property indicator_color2 Green
#property indicator_width2 2
#property indicator_color3 Red
#property indicator_width3 2
#property indicator_color4 Red
#property indicator_width4 2 
#property indicator_color5 Aqua
#property indicator_width5 2
#property indicator_color6 Aqua
#property indicator_width6 2
extern int period = 13;
extern int ma_shift = 0;
extern int ma_method = 1;//0-3
extern int fast_ema_period = 12;
extern int slow_ema_period = 26;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
 
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_HISTOGRAM);
   SetIndexBuffer(3,ExtMapBuffer4);
   SetIndexStyle(4,DRAW_HISTOGRAM);
   SetIndexBuffer(4,ExtMapBuffer5);
   SetIndexStyle(5,DRAW_HISTOGRAM);
   SetIndexBuffer(5,ExtMapBuffer6);
//----
   return(0);
  }
 
int start()
  {
   int i,counted_bars=IndicatorCounted();
//----
   i=Bars-counted_bars-1;
   while(i>=0)  
      {
      double MA_0   = iMA(NULL,0,period,ma_shift,ma_method,PRICE_CLOSE,i);
      // applied_price_ma - по какой цене расщитывать среднюю
      // i - сдвиг относительно текущего бара
      double MA_1   = iMA(NULL,0,period,ma_shift,ma_method,PRICE_CLOSE,i+1);
      double MACD_main1 = iMACD(NULL,0,fast_ema_period,slow_ema_period,9,PRICE_CLOSE,MODE_MAIN,i);
      double MACD_signal1 = iMACD(NULL,0,fast_ema_period,slow_ema_period,9,PRICE_CLOSE,MODE_SIGNAL,i);
      double MACD_main2 = iMACD(NULL,0,fast_ema_period,slow_ema_period,9,PRICE_CLOSE,MODE_MAIN,i+1);
      double MACD_signal2 = iMACD(NULL,0,fast_ema_period,slow_ema_period,9,PRICE_CLOSE,MODE_SIGNAL,i+1);
       // MODE_MAIN - основная линия MACD, MODE_SIGNAL - сигнальная
       
      if(MA_0>MA_1 && (MACD_main1-MACD_signal1)>(MACD_main2-MACD_signal2) && ((MACD_main1-MACD_signal1)>0))
         {
         ExtMapBuffer1[i]=High[i];
         ExtMapBuffer2[i]=Low[i];
         }
      if(MA_0<MA_1 && (MACD_main1-MACD_signal1)<(MACD_main2-MACD_signal2) && ((MACD_main1-MACD_signal1)<0))
         {
         ExtMapBuffer3[i]=High[i];
         ExtMapBuffer4[i]=Low[i];
         }
      if(MA_0<=MA_1 && (MACD_main1-MACD_signal1)>0)
         {
         ExtMapBuffer5[i]=High[i];
         ExtMapBuffer6[i]=Low[i];
         } 
      if(MA_0<=MA_1 && (MACD_main1-MACD_signal1)>(MACD_main2-MACD_signal2))
         {
         ExtMapBuffer5[i]=High[i];
         ExtMapBuffer6[i]=Low[i];
         } 
      if(MA_0>=MA_1 && (MACD_main1-MACD_signal1)<0)
         {
         ExtMapBuffer5[i]=High[i];
         ExtMapBuffer6[i]=Low[i];
         }      
      if(MA_0>=MA_1 && (MACD_main1-MACD_signal1)<(MACD_main2-MACD_signal2))
         {
         ExtMapBuffer5[i]=High[i];
         ExtMapBuffer6[i]=Low[i];
         }                                                 
      i--;
      } 
//----
   return(0);
  }
Причина обращения: