#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color1 Purple
#property indicator_color2 DodgerBlue
#property indicator_color3 Green
#property indicator_color4 Black
#property indicator_color5 Black
#property indicator_color6 Black

extern int Width = 2;
extern color Color1 = Purple;
extern color Color2 = DodgerBlue;
extern color Color3 = Green;
double g_ibuf_92[];
double g_ibuf_96[];
double g_ibuf_100[];

int init() {
   SetIndexBuffer(0, g_ibuf_92);
   SetIndexStyle(0, DRAW_LINE, EMPTY, Width, Color1);
   SetIndexDrawBegin(0, 3);
   SetIndexLabel(0, "Sub Wave)");
   SetIndexBuffer(1, g_ibuf_96);
   SetIndexStyle(1, DRAW_LINE, EMPTY, Width, Color2);
   SetIndexDrawBegin(1, 3);
   SetIndexLabel(1, "Primary Wave");
   SetIndexBuffer(2, g_ibuf_100);
   SetIndexStyle(2, DRAW_LINE, EMPTY, Width, Color3);
   SetIndexDrawBegin(2, 3);
   SetIndexLabel(2, "4 Hr Wave");
   SetLevelValue(0, 89.0);
   SetLevelValue(1, 11.0);
   SetLevelValue(2, 60.0);
   SetLevelValue(3, 40.0);
   SetLevelStyle(0, 1, Yellow);
   return (0);
}

int deinit() {
   return (0);
}

int start() {
   int li_8;
   int li_60;
   int l_str2int_108;
   int li_116;
   int li_120;
   int l_minute_128;
   int l_ind_counted_0 = IndicatorCounted();
   int l_timeframe_14 = 1;
   int l_timeframe_20 = 5;
   int l_timeframe_24 = 30;
   int li_unused_28 = 1;
   int l_timeframe_32 = 240;
   int l_period_36 = 3;
   int l_period_40 = 3;
   int li_unused_44 = 3;
   int l_minute_100 = TimeMinute(TimeLocal());
   int li_104 = l_minute_100 / 5;
   int l_str2time_132 = StrToTime("2020.04.30");
   int li_unused_136 = 0;
//   if (TimeCurrent() >= l_str2time_132) return (0);
   if (AccountCompany() == "FXDirectDealer" || AccountCompany() == "Forex.com") li_unused_136 = 1;
   int li_unused_64 = 1;
   if (AccountCompany() == "Forex.com") li_unused_64 = 10;
   if (li_104 == 2 || li_104 == 8) li_60 = 3;
   if (li_104 == 3 || li_104 == 9) li_60 = 4;
   if (li_104 == 4 || li_104 == 10) li_60 = 5;
   if (li_104 == 5 || li_104 == 11) li_60 = 6;
   if (li_104 == 6 || li_104 == 12) li_60 = 1;
   if (li_104 == 7 || li_104 == 1) li_60 = 2;
   if (li_104 == 0) li_60 = 1;
   int li_16 = Bars - l_ind_counted_0 - 1;
   string ls_52 = StringSubstr(TimeToStr(Time[0], TIME_MINUTES), 3, 2);
   if (Period() == PERIOD_M30) {
      li_8 = li_60;
      for (int li_4 = 1; li_4 <= li_16; li_4++) {
         g_ibuf_92[li_4] = NormalizeDouble(iRSI(NULL, l_timeframe_20, l_period_36, PRICE_CLOSE, li_8), 5);
         li_8 += 6;
      }
      for (li_4 = 0; li_4 <= li_16; li_4++) g_ibuf_96[li_4] = NormalizeDouble(iRSI(NULL, l_timeframe_24, l_period_40, PRICE_CLOSE, li_4), 5);
      g_ibuf_92[0] = NormalizeDouble(iRSI(NULL, l_timeframe_20, l_period_36, PRICE_CLOSE, 0), 5);
      for (li_4 = 0; li_4 <= 10; li_4++) {
         l_str2int_108 = StrToInteger(StringSubstr(TimeToStr(Time[li_4], TIME_MINUTES), 0, 2) + StringSubstr(TimeToStr(Time[li_4], TIME_MINUTES), 3, 2));
         if (MathMod(l_str2int_108, 400) == 0.0) {
            li_116 = li_4 + 1;
            break;
         }
      }
      for (li_4 = 0; li_4 <= li_16; li_4++) {
         if (li_4 < li_116) li_120 = 0;
         if (li_4 >= li_116)
            if (MathMod(li_4 - li_116, 8) == 0.0) li_120++;
         g_ibuf_100[li_4] = NormalizeDouble(iRSI(NULL, l_timeframe_32, l_period_40, PRICE_CLOSE, li_120), 5);
      }
      g_ibuf_100[0] = NormalizeDouble(iRSI(NULL, l_timeframe_32, l_period_40, PRICE_CLOSE, 0), 5);
   }
   if (Period() == PERIOD_M5) {
      for (li_4 = 0; li_4 <= li_16; li_4++) g_ibuf_92[li_4] = NormalizeDouble(iRSI(NULL, l_timeframe_20, l_period_36, PRICE_CLOSE, li_4), 5);
      for (li_4 = 0; li_4 <= 6; li_4++) {
         l_minute_128 = TimeMinute(Time[0]);
         if (l_minute_128 < 30) {
            li_116 = l_minute_128 / 5 + 1;
            break;
         }
         if (l_minute_128 >= 30) {
            li_116 = l_minute_128 / 5 - 5;
            break;
         }
      }
      for (li_4 = 0; li_4 <= li_16; li_4++) {
         if (li_4 < li_116) li_120 = 0;
         if (li_4 >= li_116)
            if (MathMod(li_4 - li_116, 6) == 0.0) li_120++;
         g_ibuf_96[li_4] = NormalizeDouble(iRSI(NULL, l_timeframe_24, l_period_40, PRICE_CLOSE, li_120), 5);
      }
      g_ibuf_96[0] = NormalizeDouble(iRSI(NULL, l_timeframe_24, l_period_40, PRICE_CLOSE, 0), 5);
      for (li_4 = 0; li_4 <= 50; li_4++) {
         l_str2int_108 = StrToInteger(StringSubstr(TimeToStr(Time[li_4], TIME_MINUTES), 0, 2) + StringSubstr(TimeToStr(Time[li_4], TIME_MINUTES), 3, 2));
         if (MathMod(l_str2int_108, 400) == 0.0) {
            li_116 = li_4 + 1;
            break;
         }
      }
      for (li_4 = 0; li_4 <= li_16; li_4++) {
         if (li_4 < li_116) li_120 = 0;
         if (li_4 >= li_116)
            if (MathMod(li_4 - li_116, 48) == 0.0) li_120++;
         g_ibuf_100[li_4] = NormalizeDouble(iRSI(NULL, l_timeframe_32, l_period_40, PRICE_CLOSE, li_120), 5);
      }
      g_ibuf_100[0] = NormalizeDouble(iRSI(NULL, l_timeframe_32, l_period_40, PRICE_CLOSE, 0), 5);
   }
   if (Period() == PERIOD_M1) {
      for (li_4 = 0; li_4 <= li_16; li_4++) g_ibuf_92[li_4] = NormalizeDouble(iRSI(NULL, l_timeframe_14, l_period_36, PRICE_CLOSE, li_4), 5);
      for (li_4 = 0; li_4 <= 6; li_4++) {
         l_minute_128 = TimeMinute(Time[0]);
         if (l_minute_128 < 5) {
            li_116 = l_minute_128 / 5 + 1;
            break;
         }
         if (l_minute_128 >= 5) {
            li_116 = l_minute_128 / 5 - 5;
            break;
         }
      }
      for (li_4 = 0; li_4 <= li_16; li_4++) {
         if (li_4 < li_116) li_120 = 0;
         if (li_4 >= li_116)
            if (MathMod(li_4 - li_116, 6) == 0.0) li_120++;
         g_ibuf_96[li_4] = NormalizeDouble(iRSI(NULL, l_timeframe_24, l_period_40, PRICE_CLOSE, li_120), 5);
      }
      g_ibuf_96[0] = NormalizeDouble(iRSI(NULL, l_timeframe_24, l_period_40, PRICE_CLOSE, 0), 5);
      for (li_4 = 0; li_4 <= 50; li_4++) {
         l_str2int_108 = StrToInteger(StringSubstr(TimeToStr(Time[li_4], TIME_MINUTES), 0, 2) + StringSubstr(TimeToStr(Time[li_4], TIME_MINUTES), 3, 2));
         if (MathMod(l_str2int_108, 400) == 0.0) {
            li_116 = li_4 + 1;
            break;
         }
      }
      for (li_4 = 0; li_4 <= li_16; li_4++) {
         if (li_4 < li_116) li_120 = 0;
         if (li_4 >= li_116)
            if (MathMod(li_4 - li_116, 48) == 0.0) li_120++;
         g_ibuf_100[li_4] = NormalizeDouble(iRSI(NULL, l_timeframe_24, l_period_40, PRICE_CLOSE, li_120), 5);
      }
      g_ibuf_100[0] = NormalizeDouble(iRSI(NULL, l_timeframe_24, l_period_40, PRICE_CLOSE, 0), 5);
   }
   return (0);
}

