#property copyright "Евгений Руденко"
#property link      "https://vk.com/id277533219"


#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Gold
#property indicator_color2 Purple
#property indicator_color3 Blue
#property indicator_color4 Red
#property indicator_color5 Red
#property indicator_color6 Purple

int g_period_76 =21 ;
int gi_80 = 2;
extern int MM = 1;
int gi_88 = 1;
int gi_92 = 1;
int g_shift_96 = 1000;
extern int SL_pips = 20;
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;

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("IndPrem cигнал:  " + as_0 + ls_48 + ls_40 + ls_32 + " ", Symbol(), ", ", Period(), " minutes chart");
      ls_56 = "IndPrem cигнал:  " + as_0 + ls_48;
      ls_64 = "IndPrem cигнал:  " + as_0 + ls_48 + ls_40 + ls_32 + " " + Symbol() + ", " + Period() + " minutes chart";
      if (Email) SendMail(ls_56, ls_64);
   }
}

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_NONE, STYLE_DASH, 2);
   SetIndexStyle(1, DRAW_NONE, STYLE_DASH, 2);
   
   SetIndexArrow(0, 218 );
   SetIndexArrow(1, 218 );
   
   SetIndexStyle(2, DRAW_ARROW, STYLE_DASH, 2);
   SetIndexStyle(3, DRAW_ARROW, STYLE_DASH, 2);
   SetIndexStyle(4, DRAW_NONE, STYLE_DASH, 2);
   SetIndexStyle(5, DRAW_NONE, STYLE_DASH, 2);
   SetIndexArrow(2,  217 );
   SetIndexArrow(3, 218);
   IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS));
   string ls_0 = "IndPrem Сигнал: (" + AlertON + "," + gi_80 + ")";
   IndicatorShortName(ls_0);
   SetIndexLabel(0, "");
   SetIndexLabel(1, "");
   SetIndexLabel(2, "");
   SetIndexLabel(3, "");
   SetIndexLabel(4, "");
   SetIndexLabel(5, "");
   SetIndexDrawBegin(0, g_period_76);
   SetIndexDrawBegin(1, g_period_76);
   SetIndexDrawBegin(2, g_period_76);
   SetIndexDrawBegin(3, g_period_76);
   SetIndexDrawBegin(4, g_period_76);
   SetIndexDrawBegin(5, g_period_76);
   return (0);
}

int start() {
   int li_8;
   double lda_12[25000];
   double lda_16[25000];
   double lda_20[25000];
   double lda_24[25000];
   double ld_28;
   double close_36;
   for (int shift_4 = g_shift_96; shift_4 > 0; shift_4--) {
      g_ibuf_104[shift_4] = 0;
      g_ibuf_108[shift_4] = 0;
      g_ibuf_112[shift_4] = 0;
      g_ibuf_116[shift_4] = 0;
      g_ibuf_120[shift_4] = EMPTY_VALUE;
      g_ibuf_124[shift_4] = EMPTY_VALUE;
   }
   for (shift_4 = g_shift_96 - g_period_76 - 1; shift_4 > 0; shift_4--) {
      lda_12[shift_4] = iBands(NULL, 0, g_period_76, gi_80, 0, PRICE_CLOSE, MODE_UPPER, shift_4);
      lda_16[shift_4] = iBands(NULL, 0, g_period_76, gi_80, 0, PRICE_CLOSE, MODE_LOWER, shift_4);
      if (Close[shift_4] > lda_12[shift_4 + 1]) li_8 = 1;
      if (Close[shift_4] < lda_16[shift_4 + 1]) li_8 = -1;
      if (li_8 > 0 && lda_16[shift_4] < lda_16[shift_4 + 1]) lda_16[shift_4] = lda_16[shift_4 + 1];
      if (li_8 < 0 && lda_12[shift_4] > lda_12[shift_4 + 1]) lda_12[shift_4] = lda_12[shift_4 + 1];
      lda_20[shift_4] = lda_12[shift_4] + (MM - 1) / 2.0 * (lda_12[shift_4] - lda_16[shift_4]);
      lda_24[shift_4] = lda_16[shift_4] - (MM - 1) / 2.0 * (lda_12[shift_4] - lda_16[shift_4]);
      if (li_8 > 0 && lda_24[shift_4] < lda_24[shift_4 + 1]) lda_24[shift_4] = lda_24[shift_4 + 1];
      if (li_8 < 0 && lda_20[shift_4] > lda_20[shift_4 + 1]) lda_20[shift_4] = lda_20[shift_4 + 1];
      if (li_8 > 0) {
         if (gi_88 > 0 && g_ibuf_104[shift_4 + 1] == -1.0) {
            g_ibuf_112[shift_4] = lda_24[shift_4];
            g_ibuf_104[shift_4] = lda_24[shift_4];
            if (gi_92 > 0) g_ibuf_120[shift_4] = lda_24[shift_4];
            if (AlertON == TRUE && shift_4 == 1 && (!gi_136)) {
               
               //Вырезал подачу статистики по стопо лосу и цене;
               
               f0_0("[Выше]", 0, ld_28, close_36);
               gi_136 = TRUE;
               gi_140 = FALSE;
            }
         } else {
            g_ibuf_104[shift_4] = lda_24[shift_4];
            if (gi_92 > 0) g_ibuf_120[shift_4] = lda_24[shift_4];
            g_ibuf_112[shift_4] = -1;
         }
         if (gi_88 == 2) g_ibuf_104[shift_4] = 0;
         g_ibuf_116[shift_4] = -1;
         g_ibuf_108[shift_4] = -1.0;
         g_ibuf_124[shift_4] = EMPTY_VALUE;
      }
      if (li_8 < 0) {
         if (gi_88 > 0 && g_ibuf_108[shift_4 + 1] == -1.0) {
            g_ibuf_116[shift_4] = lda_20[shift_4];
            g_ibuf_108[shift_4] = lda_20[shift_4];
            if (gi_92 > 0) g_ibuf_124[shift_4] = lda_20[shift_4];
            if (AlertON == TRUE && shift_4 == 1 && (!gi_140)) {
             
              //Вырезал подачу статистики по стоп лосу и цене;
              
               f0_0("[Ниже]", 0, ld_28, close_36);
               gi_140 = TRUE;
               gi_136 = FALSE;
            }
         } else {
            g_ibuf_108[shift_4] = lda_20[shift_4];
            if (gi_92 > 0) g_ibuf_124[shift_4] = lda_20[shift_4];
            g_ibuf_116[shift_4] = -1;
         }
         if (gi_88 == 2) g_ibuf_108[shift_4] = 0;
         g_ibuf_112[shift_4] = -1;
         g_ibuf_104[shift_4] = -1.0;
         g_ibuf_120[shift_4] = EMPTY_VALUE;
      }
   }
   return (0);
}

