/*
   Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/
#property copyright "Ted Goulden"
#property link      ""

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue

extern int TimeFrameSR = 60;
extern bool ShowAlert = TRUE;
extern bool MailAlert = TRUE;
extern int AlertLevel = 5;
extern int AlertSkip = 10;
double g_ibuf_96[];
double g_ibuf_100[];
int gi_104 = 0;
double gd_108 = 0.0;
double gd_116 = 0.0;
double g_ticksize_124;
double gd_132 = 1.0;
double gd_140 = 1.0;
double gd_148 = 0.0;

int init() {
   g_ticksize_124 = MarketInfo(Symbol(), MODE_TICKSIZE);
   if (Digits < 4) {
      gd_132 = 0.01 / g_ticksize_124;
      gd_140 = g_ticksize_124 / 0.001;
   }
   if (Digits > 3) {
      gd_132 = 0.0001 / g_ticksize_124;
      gd_140 = g_ticksize_124 / 0.00001;
   }
   gd_148 = AlertLevel * Point * gd_132;
   IndicatorBuffers(2);
   SetIndexStyle(0, DRAW_ARROW);
   SetIndexArrow(0, 171);
   SetIndexStyle(1, DRAW_ARROW);
   SetIndexArrow(1, 172);
   SetIndexLabel(0, "Support" + tf2txt(TimeFrameSR));
   SetIndexLabel(1, "Resist" + tf2txt(TimeFrameSR));
   SetIndexBuffer(0, g_ibuf_96);
   SetIndexBuffer(1, g_ibuf_100);
   IndicatorShortName("ROI Alert " + "(" + TimeFrameSR + ")");
   return (0);
}

int deinit() {
   return (0);
}

string tf2txt(int ai_0) {
   if (ai_0 == 1) return ("M1");
   if (ai_0 == 5) return ("M5");
   if (ai_0 == 15) return ("M15");
   if (ai_0 == 30) return ("M30");
   if (ai_0 == 60) return ("H1");
   if (ai_0 == 240) return ("H4");
   if (ai_0 == 1440) return ("D1");
   if (ai_0 == 10080) return ("W1");
   if (ai_0 == 43200) return ("MN1");
   return ("??");
}

int start() {
   int lia_16[];
   int li_20;
   int li_24;
   int li_0 = IndicatorCounted();
   if (li_0 < 0) return (-1);
   if (li_0 > 0) li_0--;
   int li_4 = MathMax(Bars - li_0, 3 * (TimeFrameSR / Period()) + 1);
   int li_12 = 0;
   ArrayCopySeries(lia_16, 5, Symbol(), TimeFrameSR);
   int l_index_8 = 0;
   li_12 = 0;
   while (l_index_8 < li_4) {
      if (Time[l_index_8] < lia_16[li_12]) li_12++;
      g_ibuf_100[l_index_8] = iFractals(NULL, TimeFrameSR, MODE_UPPER, li_12);
      g_ibuf_96[l_index_8] = iFractals(NULL, TimeFrameSR, MODE_LOWER, li_12);
      l_index_8++;
   }
   for (l_index_8 = li_4; l_index_8 >= 0; l_index_8--) {
      if (g_ibuf_100[l_index_8] != 0.0) li_20 = l_index_8;
      else g_ibuf_100[l_index_8] = g_ibuf_100[li_20];
      if (g_ibuf_96[l_index_8] != 0.0) li_24 = l_index_8;
      else g_ibuf_96[l_index_8] = g_ibuf_96[li_24];
   }
   int li_28 = MathMin(iLowest(NULL, 0, MODE_LOW, li_20 + 1, 0), MathMax(2, AlertSkip - 1));
   int li_32 = MathMin(iHighest(NULL, 0, MODE_HIGH, li_24 + 1, 0), MathMax(2, AlertSkip - 1));
   if (Ask >= g_ibuf_100[0] + gd_148 && Low[li_28] < g_ibuf_100[0] && gi_104 <= Time[0] || gd_116 != g_ibuf_100[0] && ShowAlert) {
      if (ShowAlert) Alert(Symbol() + "  ROI Alert - Ask Price above resistance. ");
      if (MailAlert) SendMail(Symbol() + " ROI Alert", " Ask Price above resistance. ");
      gi_104 = Time[0] + 60 * (AlertSkip * Period());
      gd_116 = g_ibuf_100[0];
      gd_108 = 0;
   }
   if (Bid <= g_ibuf_96[0] - gd_148 && High[li_32] > g_ibuf_96[0] && gi_104 <= Time[0] || gd_108 != g_ibuf_96[0] && ShowAlert) {
      if (ShowAlert) Alert(Symbol() + "  ROI Alert - Bid Price below support. ");
      if (MailAlert) SendMail(Symbol() + " ROI Alert", " Bid Price below support. ");
      gi_104 = Time[0] + 60 * (AlertSkip * Period());
      gd_108 = g_ibuf_96[0];
      gd_116 = 0;
   }
   return (0);
}
