how to add candle gap alerts to mt5 indicator

 

is there anya one can help to add alerts when gap occur in this indicator

//+------------------------------------------------------------------+
//|                                                      Gaps_cb.mq5 |
//|                                                         Tapochun |
//|                         https://login.mql5.com/ru/users/tapochun |
//+------------------------------------------------------------------+
#property copyright "Tapochun"
#property link      "https://login.mql5.com/ru/users/tapochun"
#property version   "1.00"
#property indicator_separate_window
#property indicator_minimum 0
//---
#property indicator_plots 1
#property indicator_buffers 2
//---
#property indicator_type1 DRAW_COLOR_HISTOGRAM
#property indicator_color1 clrLime, clrRed, clrGray
//+------------------------------------------------------------------+
//| Ãëîáàëüíûå ïåðåìåííûå                                                                                                                       |
//+------------------------------------------------------------------+
double bufValue[];            // Áóôåð çíà÷åíèé ãýïîâ
double bufValueClr[];         // Áóôåð öâåòà ãýïîâ
//+------------------------------------------------------------------+
//| Âõîäíûå ïàðàìåòðû                                                                                                                           |
//+------------------------------------------------------------------+
input int inpBigGap=0;      // Ðàçìåð áîëüøîãî ãýïà (ïîäñâå÷èâàåòñÿ)
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Óñòàíàâëèâàåì èíäåêñû ìàññèâîâ
   SetIndexBuffer(0,bufValue);
   SetIndexBuffer(1,bufValueClr,INDICATOR_COLOR_INDEX);
//--- Óñòàíàâëèâàåì òî÷íîñòü çíà÷åíèé èíäèêàòîðà
   IndicatorSetInteger(INDICATOR_DIGITS,0);
//--- Óñòàíàâëèâàåì ïóñòîå çíà÷åíèå äëÿ ãðàôè÷åñêîé ñåðèè
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---
   if(inpBigGap>0) // Åñëè ðàçìåð ãýïà ïîëîæèòåëüíûé
     {
      //--- Óñòàíàâëèâàåì â ïîäîêíî óðîâåíü ìèíèìàëüíîãî ãýïà
      IndicatorSetInteger(INDICATOR_LEVELS,1);
      IndicatorSetDouble(INDICATOR_LEVELVALUE,0,inpBigGap);
      IndicatorSetString(INDICATOR_LEVELTEXT,0,"Big Gap");
     }
//--- Èìÿ â ïîäîêíå/îêíå äàííûõ
   IndicatorSetString(INDICATOR_SHORTNAME,"Gap");
//---
   return( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//--- Åñëè íåò äàííûõ - âûõîäèì
   if( rates_total <= 0 ) return( 0 );

   if(prev_calculated!=0) // Åñëè íå ïåðâûé ðàñ÷åò
     {
      if(rates_total>prev_calculated) // Åñëè îáðàçîâàëñÿ íîâûé áàð
        {
         //--- Ðàñ÷åò ãýïà íà îòêðûòèè òåêóùåãî áàðà
         Calculation(rates_total-1,rates_total,inpBigGap,open,close);
        }
     }
   else                   // Åñëè ïåðâûé ðàñ÷åò
     {
      //--- Ðàñ÷åò ãýïîâ íà èñòîðèè
      Calculation(1,rates_total,inpBigGap,open,close);
     }
//---
   return( rates_total );
  }
//+------------------------------------------------------------------+
//| Ôóíêöèÿ ðàñ÷åòà                                                                                                                                     |
//+------------------------------------------------------------------+
void Calculation(const int first,       // Ïåðâûé áàð äëÿ ðàñ÷åòà
                 const int rates_total, // Êîëè÷åñòâî ïðîñ÷èòàííûõ áàðîâ íà òåêóùåì òèêå
                 const int bigGap,      // Ðàçìåð áîëüøîãî ãýïà
                 const double &open[],  // Ìàññèâ öåí îòêðûòèÿ áàðîâ
                 const double &close[]  // Ìàññèâ öåí çàêðûòèÿ áàðîâ
                 )
  {
   int gap;                                 // Ðàçìåð ãýïà
   for( int i = 1; i < rates_total; i++ )   // Öèêë ïî äîñòóïíîé èñòîðèè
     {
      gap=int(MathRound(MathAbs(( open[i]-close[i-1])/_Point)));   // Ðàçìåð ãýïà, ï
      bufValue[i]=gap;                  // Çàíîñèì çíà÷åíèå â áóôåð
      if(gap>=bigGap)                   // Åñëè ðàçìåð ãýïà íå ìåíüøå áîëüøîãî
        {                               // Ðàñêðàøèâàåì ñòîëáèê
         if( open[ i ] > close[ i-1 ] ) // Åñëè ãýï ââåðõ
            bufValueClr[i]=1;           // Öâåò - êðàñíûé
         else                           // Åñëè âíèç
         bufValueClr[i]=0;              // Öâåò - çåëåíûé
        }
      else bufValueClr[i]=2;            // Åñëè ðàçìåð ãýïà ìåíüøå ìèíèìàëüíîãî - öâåò ñòîëáöà ãèñòîãðàììû íåéòðàëüíûé
     }
  }
//+------------------------------------------------------------------+
 
ENEZA PETER MKIRAMWENI:

is there anya one can help to add alerts when gap occur in this indicator

Do you know how to program in MQl5?