/*
   Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/

#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 DodgerBlue
#property indicator_color2 Red
#property indicator_color3 DodgerBlue
#property indicator_color4 Red
#property indicator_color5 DodgerBlue
#property indicator_color6 Red

extern int Signal = 1;
int gi_80 = 1;
int gi_84 = 989;
extern int SL_pips = 190;
double gda_92[];
double gda_96[];
double gda_100[];
double gda_104[];
double gda_108[];
int gi_112 = 21;
int gi_116 = 1;
int gi_120 = 1;
double gda_124[];
extern bool AlertON = TRUE;
extern bool Email = TRUE;
bool gi_136 = FALSE;
bool gi_140 = FALSE;
datetime gt_144;

void displayAlert(string as_0, double ad_8, double ad_16, double ad_24) {
   string ls_32;
   string ls_40;
   string ls_48;
   string ls_56;
   string ls_64;
   if (Time[0] != gt_144) {
      gt_144 = Time[0];
      if (ad_24 != 0.0) ls_48 = " at price " + DoubleToStr(ad_24, 4);
      else ls_48 = "";
      if (ad_8 != 0.0) ls_40 = ", TakeProfit on " + DoubleToStr(ad_8, 4);
      else ls_40 = "";
      if (ad_16 != 0.0) ls_32 = ", StopLoss on " + DoubleToStr(ad_16, 4);
      else ls_32 = "";
      Alert("100pipsdailyscalper " + as_0 + ls_48 + ls_40 + ls_32 + " ", Symbol(), ", ", Period(), " minutes chart");
      ls_56 = "100pipsdailyscalper " + as_0 + ls_48;
      ls_64 = "100pipsdailyscalper " + as_0 + ls_48 + ls_40 + ls_32 + " " + Symbol() + ", " + Period() + " minutes chart";
      if (Email) SendMail(ls_56, ls_64);
   }
}

int init() {
   SetIndexBuffer(0, gda_92);
   SetIndexBuffer(1, gda_96);
   SetIndexBuffer(2, gda_100);
   SetIndexBuffer(3, gda_104);
   SetIndexBuffer(4, gda_108);
   SetIndexBuffer(5, gda_124);
   SetIndexStyle(0, DRAW_NONE, STYLE_DASHDOT, 1);
   SetIndexStyle(1, DRAW_NONE, STYLE_DASHDOT, 1);
   SetIndexStyle(2, DRAW_ARROW, STYLE_DASHDOT, 1);
   SetIndexStyle(3, DRAW_ARROW, STYLE_DASHDOT, 1);
   SetIndexStyle(4, DRAW_LINE, STYLE_DASHDOT, 1);
   SetIndexStyle(5, DRAW_LINE, STYLE_DASHDOT, 1);
   SetIndexArrow(0, 158);
   SetIndexArrow(1, 158);
   SetIndexArrow(2, 158);
   SetIndexArrow(3, 158);
   IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS));
   string ls_0 = "100pipsdailyscalper(" + AlertON + "," + gi_116 + ")";
   IndicatorShortName(ls_0);
   SetIndexLabel(0, "");
   SetIndexLabel(1, "");
   SetIndexLabel(2, "");
   SetIndexLabel(3, "");
   SetIndexLabel(4, "");
   SetIndexLabel(5, "");
   SetIndexDrawBegin(0, gi_112);
   SetIndexDrawBegin(1, gi_112);
   SetIndexDrawBegin(2, gi_112);
   SetIndexDrawBegin(3, gi_112);
   SetIndexDrawBegin(4, gi_112);
   SetIndexDrawBegin(5, gi_112);
   return (0);
}

int start() {
   int li_0;
   double lda_4[25000];
   double lda_8[25000];
   double lda_12[25000];
   double lda_16[25000];
   double ld_20;
   double ld_28;
   for (int li_36 = gi_84; li_36 > 0; li_36--) {
      gda_92[li_36] = 0;
      gda_96[li_36] = 0;
      gda_100[li_36] = 0;
      gda_104[li_36] = 0;
      gda_108[li_36] = EMPTY_VALUE;
      gda_124[li_36] = EMPTY_VALUE;
   }
   for (li_36 = gi_84 - gi_112 - 1; li_36 > 0; li_36--) {
      lda_4[li_36] = iBands(NULL, 0, gi_112, gi_116, 0, PRICE_CLOSE, MODE_UPPER, li_36);
      lda_8[li_36] = iBands(NULL, 0, gi_112, gi_116, 0, PRICE_CLOSE, MODE_LOWER, li_36);
      if (Close[li_36] > lda_4[li_36 + 1]) li_0 = 1;
      if (Close[li_36] < lda_8[li_36 + 1]) li_0 = -1;
      if (li_0 > 0 && lda_8[li_36] < lda_8[li_36 + 1]) lda_8[li_36] = lda_8[li_36 + 1];
      if (li_0 < 0 && lda_4[li_36] > lda_4[li_36 + 1]) lda_4[li_36] = lda_4[li_36 + 1];
      lda_12[li_36] = lda_4[li_36] + (gi_120 - 1) / 2.0 * (lda_4[li_36] - lda_8[li_36]);
      lda_16[li_36] = lda_8[li_36] - (-0.5 * (lda_4[li_36] - lda_8[li_36]));
      if (li_0 > 0 && lda_16[li_36] < lda_16[li_36 + 1]) lda_16[li_36] = lda_16[li_36 + 1];
      if (li_0 < 0 && lda_12[li_36] > lda_12[li_36 + 1]) lda_12[li_36] = lda_12[li_36 + 1];
      if (li_0 > 0) {
         if (Signal > 0 && gda_92[li_36 + 1] == -1.0) {
            gda_100[li_36] = lda_16[li_36];
            gda_92[li_36] = lda_16[li_36];
            if (gi_80 > 0) gda_108[li_36] = lda_16[li_36];
            if (AlertON == TRUE && li_36 == 1 && !gi_136) {
               ld_20 = Low[1];
               if (Low[2] < ld_20) ld_20 = Low[2];
               if (Low[3] < ld_20) ld_20 = Low[3];
               if (Low[4] < ld_20) ld_20 = Low[4];
               ld_20 -= SL_pips * Point;
               ld_28 = Close[1];
               displayAlert("Buy signal", 0, ld_20, ld_28);
               gi_136 = TRUE;
               gi_140 = FALSE;
            }
         } else {
            gda_92[li_36] = lda_16[li_36];
            if (gi_80 > 0) gda_108[li_36] = lda_16[li_36];
            gda_100[li_36] = -1;
         }
         if (Signal == 2) gda_92[li_36] = 0;
         gda_104[li_36] = -1;
         gda_96[li_36] = -1.0;
         gda_124[li_36] = EMPTY_VALUE;
      }
      if (li_0 < 0) {
         if (Signal > 0 && gda_96[li_36 + 1] == -1.0) {
            gda_104[li_36] = lda_12[li_36];
            gda_96[li_36] = lda_12[li_36];
            if (gi_80 > 0) gda_124[li_36] = lda_12[li_36];
            if (AlertON == TRUE && li_36 == 1 && !gi_140) {
               ld_20 = High[1];
               if (High[2] > ld_20) ld_20 = High[2];
               if (High[3] > ld_20) ld_20 = High[3];
               if (High[4] > ld_20) ld_20 = High[4];
               ld_20 += SL_pips * Point;
               ld_28 = Close[1];
               displayAlert("Sell signal", 0, ld_20, ld_28);
               gi_140 = TRUE;
               gi_136 = FALSE;
            }
         } else {
            gda_96[li_36] = lda_12[li_36];
            if (gi_80 > 0) gda_124[li_36] = lda_12[li_36];
            gda_104[li_36] = -1;
         }
         if (Signal == 2) gda_96[li_36] = 0;
         gda_100[li_36] = -1;
         gda_92[li_36] = -1.0;
         gda_108[li_36] = EMPTY_VALUE;
      }
   }
   return (0);
}
