//+------------------------------------------------------------------+
//|                                                   #MTF Arrow.mq4 |
//|                                                  FOREX-AUSBILDER |
//|                                           www.forex-ausbilder.de |
//+------------------------------------------------------------------+
#property copyright "FOREX-AUSBILDER"
#property link      "www.forex-ausbilder.de"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Yellow
#property indicator_color2 Red
//--- input parameters
extern int       TimeFrame=0;
extern bool      SoundAlarm=true;
extern bool      EmailAlarm=false;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   string short_name;
//---- indicator line
   
//---- name for DataWindow and indicator subwindow label   
   
      short_name="#MTF Arrow";
      
    switch(TimeFrame)
   {
      case 1 : string TimeFrameStr="Period_M1"; break;
      case 5 : TimeFrameStr="Period_M5"; break;
      case 15 : TimeFrameStr="Period_M15"; break;
      case 30 : TimeFrameStr="Period_M30"; break;
      case 60 : TimeFrameStr="Period_H1"; break;
      case 240 : TimeFrameStr="Period_H4"; break;
      case 1440 : TimeFrameStr="Period_D1"; break;
      case 10080 : TimeFrameStr="Period_W1"; break;
      case 43200 : TimeFrameStr="Period_MN1"; break;
      default : TimeFrameStr="Current Timeframe";
   }   
   SetIndexStyle(0,DRAW_ARROW,0,1);
   SetIndexArrow(0,108);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(1,DRAW_ARROW,0,1);
   SetIndexArrow(1,108);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexEmptyValue(1,0.0);
   IndicatorShortName(short_name+" "+TimeFrameStr);  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   datetime TimeArray[];
   int    i,shift,limit,y=0,counted_bars=IndicatorCounted();
    
// Plot defined timeframe on to current timeframe   
   ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame); 
   
   limit=Bars-counted_bars+TimeFrame/Period();
   //limit=Bars-counted_bars;  bad
   for(i=0,y=0;i<limit;i++)
   {
   if (Time[i]<TimeArray[y]) y++; 
   ExtMapBuffer1[i] = iCustom(NULL,TimeFrame, "arrow", SoundAlarm, EmailAlarm, 0, y);
   ExtMapBuffer2[i] = iCustom(NULL,TimeFrame, "arrow", SoundAlarm, EmailAlarm, 1, y);
   }
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+