#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red

double g_ibuf_76[];
double g_ibuf_80[];
int g_period_84 = 1;
int g_period_88 = 10;
extern bool SoundON = FALSE;
extern bool PushNotificationAlerts = true;
double g_time_96;

int init() {
   SetIndexStyle(0, DRAW_ARROW, EMPTY);
   SetIndexArrow(0, 233);
   SetIndexBuffer(0, g_ibuf_76);
   SetIndexStyle(1, DRAW_ARROW, EMPTY);
   SetIndexArrow(1, 234);
   SetIndexBuffer(1, g_ibuf_80);
   return (0);
}

int deinit() {
   return (0);
}
string msg;
string msg1;


int start() {
   msg =  StringConcatenate ("ABC (", Symbol(), ", ", Period(), ")  -  BUY!!!");
   msg1 = StringConcatenate ("sAC (", Symbol(), ", ", Period(), ")  -  SELL!!!");
   int li_0;
   double ima_4;
   double ima_12;
   double ima_20;
   double ima_28;
   double ima_36;
   double ima_44;
   double ld_52;
   double ld_60;
   int li_68 = IndicatorCounted();
   if (li_68 < 0) return (-1);
   if (li_68 > 0) li_68--;
   int li_72 = Bars + 1 - li_68;
   for (int li_76 = 0; li_76 <= li_72; li_76++) {
      li_0 = li_76;
      ld_52 = 0;
      ld_60 = 0;
      for (li_0 = li_76; li_0 <= li_76 + 9; li_0++) ld_60 += MathAbs(High[li_0] - Low[li_0]);
      ld_52 = ld_60 / 10.0;
      ima_4 = iMA(NULL, 0, g_period_84, 0, MODE_EMA, PRICE_CLOSE, li_76);
      ima_20 = iMA(NULL, 0, g_period_84, 0, MODE_EMA, PRICE_CLOSE, li_76 + 1);
      ima_36 = iMA(NULL, 0, g_period_84, 0, MODE_EMA, PRICE_CLOSE, li_76 - 1);
      ima_12 = iMA(NULL, 0, g_period_88, 0, MODE_EMA, PRICE_CLOSE, li_76);
      ima_28 = iMA(NULL, 0, g_period_88, 0, MODE_EMA, PRICE_CLOSE, li_76 + 1);
      ima_44 = iMA(NULL, 0, g_period_88, 0, MODE_EMA, PRICE_CLOSE, li_76 - 1);
      if (ima_4 > ima_12 && ima_20 < ima_28 && ima_36 > ima_44) g_ibuf_76[li_76] = Low[li_76] - ld_52 / 2.0;
      else
         if (ima_4 < ima_12 && ima_20 > ima_28 && ima_36 < ima_44) g_ibuf_80[li_76] = High[li_76] + ld_52 / 2.0;
      if (ima_4 > ima_12 && ima_20 < ima_28 && ima_36 > ima_44) {
         g_ibuf_76[li_76] = Low[li_76] - ld_52 / 2.0;
         if (SoundON == TRUE && g_time_96 != Time[0]) {
            Alert("ABC Buy Trade ", Symbol(), Period());
            if (PushNotificationAlerts) SendNotification(msg);
            g_time_96 = Time[0];
            
         }
      } else {
         if (ima_4 < ima_12 && ima_20 > ima_28 && ima_36 < ima_44) {
            g_ibuf_80[li_76] = High[li_76] + ld_52 / 2.0;
            if (SoundON == TRUE && g_time_96 != Time[0]) {
               Alert("ABC Sell Trade ", Symbol(), Period());
               if (PushNotificationAlerts) SendNotification(msg1);
               g_time_96 = Time[0];
            }
         }
      }
   }
   return (0);
}