#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 DeepSkyBlue
#property indicator_color2 Red
#property indicator_color3 Lime
#property indicator_color4 Red
#property indicator_color5 DeepSkyBlue
#property indicator_color6 Red

extern int SignalPeriod = 12;
extern int ArrowPeriod = 2;
int Gi_84 = 1;
int Gi_88 = 1;
int Gi_92 = 1;
int G_shift_96 = 999;
extern int SL_pips = 100;
double G_ibuf_104[];
double G_ibuf_108[];
double G_ibuf_112[];
double G_ibuf_116[];
double G_ibuf_120[];
double G_ibuf_124[];
extern bool AlertON = TRUE;
extern bool Email = TRUE;
bool Gi_136 = FALSE;
bool Gi_140 = FALSE;
datetime G_time_144;

// AA82CF3A41CEBBF1D981F099A58AD043
void f0_0(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] != G_time_144) {
      G_time_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("FOREX PIPS STRIKER " + As_0 + Ls_48 + Ls_40 + Ls_32 + " ", Symbol(), ", ", Period(), " minute chart");
      Ls_56 = "FOREX PIPS STRIKER - " + As_0 + Ls_48;
      Ls_64 = "FOREX PIPS STRIKER " + As_0 + Ls_48 + Ls_40 + Ls_32 + " " + Symbol() + ", " + Period() + " minute chart";
      if (Email) SendMail(Ls_56, Ls_64);
   }
}

// E37F0136AA3FFAF149B351F6A4C948E9
int init() {
   SetIndexBuffer(0, G_ibuf_104);
   SetIndexBuffer(1, G_ibuf_108);
   SetIndexBuffer(2, G_ibuf_112);
   SetIndexBuffer(3, G_ibuf_116);
   SetIndexBuffer(4, G_ibuf_120);
   SetIndexBuffer(5, G_ibuf_124);
   SetIndexStyle(0, DRAW_ARROW, 6, 0);
   SetIndexStyle(1, DRAW_ARROW, 6, 0);
   SetIndexStyle(2, DRAW_ARROW, STYLE_SOLID, 3);
   SetIndexStyle(3, DRAW_ARROW, STYLE_SOLID, 3);
   SetIndexStyle(4, DRAW_ZIGZAG, STYLE_DASH, 1);
   SetIndexStyle(5, DRAW_ZIGZAG, STYLE_DASH, 1);
   SetIndexArrow(0, 159);
   SetIndexArrow(1, 159);
   SetIndexArrow(2, 217);
   SetIndexArrow(3, 218);
   IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS));
   string Ls_0 = "FOREX PIPS STRIKER(" + AlertON + "," + ArrowPeriod + ")";
   IndicatorShortName(Ls_0);
   SetIndexLabel(0, "UpTrend Stop");
   SetIndexLabel(1, "DownTrend Stop");
   SetIndexLabel(2, "UpTrend Signal");
   SetIndexLabel(3, "DownTrend Signal");
   SetIndexLabel(4, "UpTrend Line");
   SetIndexLabel(5, "DownTrend Line");
   SetIndexDrawBegin(0, SignalPeriod);
   SetIndexDrawBegin(1, SignalPeriod);
   SetIndexDrawBegin(2, SignalPeriod);
   SetIndexDrawBegin(3, SignalPeriod);
   SetIndexDrawBegin(4, SignalPeriod);
   SetIndexDrawBegin(5, SignalPeriod);
   return (0);
}

// EA2B2676C28C0DB26D39331A336C6B92
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 close_28;
   for (int shift_36 = G_shift_96; shift_36 > 0; shift_36--) {
      G_ibuf_104[shift_36] = 0;
      G_ibuf_108[shift_36] = 0;
      G_ibuf_112[shift_36] = 0;
      G_ibuf_116[shift_36] = 0;
      G_ibuf_120[shift_36] = EMPTY_VALUE;
      G_ibuf_124[shift_36] = EMPTY_VALUE;
   }
   for (shift_36 = G_shift_96 - SignalPeriod - 1; shift_36 > 0; shift_36--) {
      Lda_4[shift_36] = iBands(NULL, 0, SignalPeriod, ArrowPeriod, 0, PRICE_CLOSE, MODE_UPPER, shift_36);
      Lda_8[shift_36] = iBands(NULL, 0, SignalPeriod, ArrowPeriod, 0, PRICE_CLOSE, MODE_LOWER, shift_36);
      if (Close[shift_36] > Lda_4[shift_36 + 1]) Li_0 = 1;
      if (Close[shift_36] < Lda_8[shift_36 + 1]) Li_0 = -1;
      if (Li_0 > 0 && Lda_8[shift_36] < Lda_8[shift_36 + 1]) Lda_8[shift_36] = Lda_8[shift_36 + 1];
      if (Li_0 < 0 && Lda_4[shift_36] > Lda_4[shift_36 + 1]) Lda_4[shift_36] = Lda_4[shift_36 + 1];
      Lda_12[shift_36] = Lda_4[shift_36] + (Gi_84 - 1) / 2.0 * (Lda_4[shift_36] - Lda_8[shift_36]);
      Lda_16[shift_36] = Lda_8[shift_36] - (Gi_84 - 1) / 2.0 * (Lda_4[shift_36] - Lda_8[shift_36]);
      if (Li_0 > 0 && Lda_16[shift_36] < Lda_16[shift_36 + 1]) Lda_16[shift_36] = Lda_16[shift_36 + 1];
      if (Li_0 < 0 && Lda_12[shift_36] > Lda_12[shift_36 + 1]) Lda_12[shift_36] = Lda_12[shift_36 + 1];
      if (Li_0 > 0) {
         if (Gi_88 > 0 && G_ibuf_104[shift_36 + 1] == -1.0) {
            G_ibuf_112[shift_36] = Lda_16[shift_36];
            G_ibuf_104[shift_36] = Lda_16[shift_36];
            if (Gi_92 > 0) G_ibuf_120[shift_36] = Lda_16[shift_36];
            if (AlertON == TRUE && shift_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;
               close_28 = Close[1];
               f0_0("Buy signal", 0, Ld_20, close_28);
               Gi_136 = TRUE;
               Gi_140 = FALSE;
            }
         } else {
            G_ibuf_104[shift_36] = Lda_16[shift_36];
            if (Gi_92 > 0) G_ibuf_120[shift_36] = Lda_16[shift_36];
            G_ibuf_112[shift_36] = -1;
         }
         if (Gi_88 == 2) G_ibuf_104[shift_36] = 0;
         G_ibuf_116[shift_36] = -1;
         G_ibuf_108[shift_36] = -1.0;
         G_ibuf_124[shift_36] = EMPTY_VALUE;
      }
      if (Li_0 < 0) {
         if (Gi_88 > 0 && G_ibuf_108[shift_36 + 1] == -1.0) {
            G_ibuf_116[shift_36] = Lda_12[shift_36];
            G_ibuf_108[shift_36] = Lda_12[shift_36];
            if (Gi_92 > 0) G_ibuf_124[shift_36] = Lda_12[shift_36];
            if (AlertON == TRUE && shift_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;
               close_28 = Close[1];
               f0_0("Sell signal", 0, Ld_20, close_28);
               Gi_140 = TRUE;
               Gi_136 = FALSE;
            }
         } else {
            G_ibuf_108[shift_36] = Lda_12[shift_36];
            if (Gi_92 > 0) G_ibuf_124[shift_36] = Lda_12[shift_36];
            G_ibuf_116[shift_36] = -1;
         }
         if (Gi_88 == 2) G_ibuf_108[shift_36] = 0;
         G_ibuf_112[shift_36] = -1;
         G_ibuf_104[shift_36] = -1.0;
         G_ibuf_120[shift_36] = EMPTY_VALUE;
      }
   }
   return (0);
}
