//+------------------------------------------------------------------+
//|                                                                  |
//|                                                          dfff    |
//|                                                                  |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property indicator_color1 Aqua
#property indicator_color2 DeepPink

#property indicator_buffers 2
//---- input parameters
//---- buffers
double UpBuffer[];
double DnBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators

  // IndicatorBuffers(2);
   SetIndexStyle(0,DRAW_ARROW,EMPTY,1);
   SetIndexStyle(1,DRAW_ARROW,EMPTY,1);
  
   SetIndexBuffer(0,UpBuffer);
   SetIndexBuffer(1,DnBuffer);
  
   SetIndexArrow(0,233);
   SetIndexArrow(1,234);

   SetIndexLabel(0,"Up Signal");
   SetIndexLabel(1,"Down Signal");

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
  
   int limit;
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) counted_bars=0;
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   
  
   for(int i = 0 ;i < limit ;i++)
   { 
      double MA7_30    = iMA(Symbol(),30,7,0,1,0,i);
      double MA7_30_1  = iMA(Symbol(),30,7,0,1,0,i+1);
      double MA22_30   = iMA(Symbol(),30,22,0,1,0,i);
      double MA22_30_1 = iMA(Symbol(),30,22,0,1,0,i+1); 
            
      if(MA7_30 > MA22_30 && MA7_30_1 <= MA22_30_1)
      {
      for(int k = i ; k < i+100 ;k++)
         {
         double MA7_5k    = iMA(Symbol(),5,7,0,1,0,k);
         double MA7_5_1k  = iMA(Symbol(),5,7,0,1,0,k+1);
         double MA22_5k   = iMA(Symbol(),5,22,0,1,0,k);
         double MA22_5_1k = iMA(Symbol(),5,22,0,1,0,k+1); 
         if(MA7_5k > MA22_5k && MA7_5_1k <= MA22_5_1k)
          {  
          UpBuffer[k] = iLow(Symbol(),PERIOD_M30,k)-(3*Point);
          DnBuffer[k] = EMPTY_VALUE;
          }
         }
        }
       else if(MA7_30 < MA22_30 && MA7_30_1 >= MA22_30_1)
       {
       for(int m = i ;m < i+100 ;m++)
         {
         double MA7_5m    = iMA(Symbol(),5,7,0,1,0,m);
         double MA7_5_1m  = iMA(Symbol(),5,7,0,1,0,m+1);
         double MA22_5m   = iMA(Symbol(),5,22,0,1,0,m);
         double MA22_5_1m = iMA(Symbol(),5,22,0,1,0,m+1); 
         if(MA7_5m > MA22_5m && MA7_5_1m <= MA22_5_1m)
          {
          UpBuffer[m] = EMPTY_VALUE;
          DnBuffer[m] = iHigh(Symbol(),PERIOD_M30,m)+(3*Point);
          }
         }
        }
   }
//----

   return(0);
 }
//+------------------------------------------------------------------+



