/*
   Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/
#property copyright "Copyright © 2008, bluto"
#property link      "http://fxaw.activeboard.com/"

#property indicator_separate_window
#property indicator_minimum 0.0
#property indicator_maximum 4.0
#property indicator_buffers 6
#property indicator_color1 MediumSpringGreen
#property indicator_color2 Red
#property indicator_color3 Gold
#property indicator_color4 MediumSpringGreen
#property indicator_color5 Red
#property indicator_color6 Gold

extern int Override_Timeframe = 0;
extern string Override_Symbol = "";
int gi_unused_84;
int gi_88 = 0;
int g_color_92 = MediumSpringGreen;
int g_color_96 = Red;
int g_color_100 = Gold;
int gi_unused_104 = 16777215;
int gi_108 = 0;
int gi_112 = 1500;
double gd_116 = 1.0;
string g_symbol_124;
double g_ibuf_132[];
double g_ibuf_136[];
double g_ibuf_140[];
double g_ibuf_144[];
double g_ibuf_148[];
double g_ibuf_152[];
double gda_156[1500];
double gda_160[1500];
double gda_164[1500];
double gda_168[1500];
double gda_172[1500];
double gda_176[1500];
double gda_180[1500];
double gda_184[1500];
int g_timeframe_188;
int g_timeframe_192;
int g_timeframe_196;
int g_timeframe_200;
string gs_204 = "";
bool gi_212 = TRUE;
int gi_216 = 116;
int gi_220 = 228;
int g_time_224 = 0;

int init() {
   gi_212 = TRUE;
   ArraySetAsSeries(gda_156, TRUE);
   ArraySetAsSeries(gda_160, TRUE);
   ArraySetAsSeries(gda_164, TRUE);
   ArraySetAsSeries(gda_168, TRUE);
   ArraySetAsSeries(gda_172, TRUE);
   ArraySetAsSeries(gda_176, TRUE);
   ArraySetAsSeries(gda_180, TRUE);
   ArraySetAsSeries(gda_184, TRUE);
   SetIndexStyle(0, DRAW_ARROW, STYLE_SOLID, gi_88, g_color_92);
   SetIndexArrow(0, gi_216);
   SetIndexBuffer(0, g_ibuf_132);
   SetIndexEmptyValue(0, 0.0);
   SetIndexStyle(1, DRAW_ARROW, STYLE_SOLID, gi_88, g_color_96);
   SetIndexArrow(1, gi_216);
   SetIndexBuffer(1, g_ibuf_136);
   SetIndexEmptyValue(1, 0.0);
   SetIndexStyle(2, DRAW_ARROW, STYLE_SOLID, gi_88, g_color_100);
   SetIndexArrow(2, gi_216);
   SetIndexBuffer(2, g_ibuf_140);
   SetIndexEmptyValue(2, 0.0);
   SetIndexStyle(3, DRAW_ARROW, STYLE_SOLID, gi_88, g_color_92);
   SetIndexArrow(3, gi_216);
   SetIndexBuffer(3, g_ibuf_144);
   SetIndexEmptyValue(3, 0.0);
   SetIndexStyle(4, DRAW_ARROW, STYLE_SOLID, gi_88, g_color_96);
   SetIndexArrow(4, gi_216);
   SetIndexBuffer(4, g_ibuf_148);
   SetIndexEmptyValue(4, 0.0);
   SetIndexStyle(5, DRAW_ARROW, STYLE_SOLID, gi_88, g_color_100);
   SetIndexArrow(5, gi_216);
   SetIndexBuffer(5, g_ibuf_152);
   SetIndexEmptyValue(5, 0.0);
   SetIndexLabel(0, NULL);
   SetIndexLabel(1, NULL);
   SetIndexLabel(2, NULL);
   SetIndexLabel(3, NULL);
   SetIndexLabel(4, NULL);
   SetIndexLabel(5, NULL);
   SetIndexDrawBegin(0, 0);
   SetIndexDrawBegin(1, 0);
   SetIndexDrawBegin(2, 0);
   SetIndexDrawBegin(3, 0);
   SetIndexDrawBegin(4, 0);
   SetIndexDrawBegin(5, 0);
   gi_108 = Period();
   if (Override_Timeframe > 0 && Override_Timeframe > Period() && Override_Timeframe == 5 || Override_Timeframe == 15 || Override_Timeframe == 30 || Override_Timeframe == 60 ||
      Override_Timeframe == 240 || Override_Timeframe == 1440 || Override_Timeframe == 10080) gi_108 = Override_Timeframe;
   switch (gi_108) {
   case 1:
      g_timeframe_188 = 1;
      g_timeframe_192 = 5;
      g_timeframe_196 = 15;
      g_timeframe_200 = 30;
      break;
   case 5:
      g_timeframe_188 = 5;
      g_timeframe_192 = 15;
      g_timeframe_196 = 30;
      g_timeframe_200 = 60;
      break;
   case 15:
      g_timeframe_188 = 15;
      g_timeframe_192 = 30;
      g_timeframe_196 = 60;
      g_timeframe_200 = 240;
      break;
   case 30:
      g_timeframe_188 = 30;
      g_timeframe_192 = 60;
      g_timeframe_196 = 240;
      g_timeframe_200 = 1440;
      break;
   case 60:
      g_timeframe_188 = 60;
      g_timeframe_192 = 240;
      g_timeframe_196 = 1440;
      g_timeframe_200 = 10080;
      break;
   case 240:
      g_timeframe_188 = 240;
      g_timeframe_192 = 1440;
      g_timeframe_196 = 10080;
      g_timeframe_200 = 43200;
      break;
   case 1440:
      g_timeframe_188 = 1440;
      g_timeframe_192 = 10080;
      g_timeframe_196 = 43200;
      g_timeframe_200 = 43200;
      break;
   case 10080:
      g_timeframe_188 = 10080;
      g_timeframe_192 = 43200;
      g_timeframe_196 = 43200;
      g_timeframe_200 = 43200;
      break;
   case 43200:
      g_timeframe_188 = 43200;
      g_timeframe_192 = 43200;
      g_timeframe_196 = 43200;
      g_timeframe_200 = 43200;
   }
   if (StringLen(Override_Symbol) > 2) g_symbol_124 = StringTrimRight(StringChangeToUpperCase(Override_Symbol));
   else g_symbol_124 = Symbol();
   IndicatorDigits(MarketInfo(g_symbol_124, MODE_DIGITS));
   ObjectsRedraw();
   return (0);
}

int deinit() {
   gi_212 = TRUE;
   return (0);
}

int start() {
   int li_24;
   int lia_32[];
   int lia_36[];
   int lia_40[];
   int lia_44[];
   int li_48;
   double ld_unused_52;
   double ld_64;
   string ls_72;
   double ld_80;
   int l_timeframe_100;
   double ld_108;
   double ld_116;
   double ld_124;
   double ld_unused_132;
  
  int l_ind_counted_0 = IndicatorCounted();
   int li_4 = 0;
   int l_index_8 = 0;
   int l_index_12 = 0;
   int l_index_16 = 0;
   int l_index_20 = 0;
   int li_28 = Bars - l_ind_counted_0;
   gs_204 = " Marauder-XL MTF v8.1  © By Bluto (" + g_symbol_124 + ":  " + tf2txt(g_timeframe_188) + ", " + tf2txt(g_timeframe_192) + ")";
   IndicatorShortName(gs_204);
   if (gi_212 || NewBar()) {
      gi_212 = FALSE;
      li_48 = gi_220;
      ld_unused_52 = Time[0] - Time[1];
      for (int li_60 = ObjectsTotal() - 1; li_60 > -1; li_60--) {
         if (StringFind(ObjectName(li_60), "FF_" + li_48 + "_") >= 0) ObjectDelete(ObjectName(li_60));
         else li_60 = -1;
      }
      ld_64 = 0.2;
      for (li_60 = 0; li_60 < 4; li_60++) {
         ls_72 = "??";
         switch (li_60) {
         case 0:
            ls_72 = tf2txt(g_timeframe_188);
            ld_80 = ld_64 + 1.0;
            break;
         case 1:
            ls_72 = tf2txt(g_timeframe_192);
            ld_80 = gd_116 + 1.0 + ld_64;
            break;
         case 2:
            ls_72 = tf2txt(g_timeframe_196);
            ld_80 = 2.0 * gd_116 + 1.0 + ld_64;
            break;
         case 3:
            ls_72 = tf2txt(g_timeframe_200);
            ld_80 = 3.0 * gd_116 + 1.0 + ld_64;
         }
      }
   }
   ArrayCopySeries(lia_32, 5, g_symbol_124, g_timeframe_200);
   ArrayCopySeries(lia_36, 5, g_symbol_124, g_timeframe_196);
   ArrayCopySeries(lia_40, 5, g_symbol_124, g_timeframe_192);
   ArrayCopySeries(lia_44, 5, g_symbol_124, g_timeframe_188);
   for (int l_index_92 = 0; l_index_92 < gi_112; l_index_92++) {
      gda_184[l_index_92] = 0;
      gda_180[l_index_92] = 0;
      gda_176[l_index_92] = 0;
      gda_172[l_index_92] = 0;
      gda_156[l_index_92] = 0;
      gda_160[l_index_92] = 0;
      gda_164[l_index_92] = 0;
      gda_168[l_index_92] = 0;
   }
   li_4 = 0;
   l_index_8 = 0;
   l_index_12 = 0;
   l_index_16 = 0;
   l_index_20 = 0;
   while (li_4 < gi_112) {
      if (Time[li_4] < lia_44[l_index_8]) l_index_8++;
      if (Time[li_4] < lia_32[l_index_12]) l_index_12++;
      if (Time[li_4] < lia_36[l_index_16]) l_index_16++;
      if (Time[li_4] < lia_40[l_index_20]) l_index_20++;
      for (int l_count_96 = 0; l_count_96 < 2; l_count_96++) {
         switch (l_count_96) {
         case 0:
            l_timeframe_100 = g_timeframe_188;
            li_24 = l_index_8;
            break;
         case 1:
            l_timeframe_100 = g_timeframe_192;
            li_24 = l_index_20;
            break;
         case 2:
            l_timeframe_100 = g_timeframe_196;
            li_24 = l_index_16;
            break;
         case 3:
            l_timeframe_100 = g_timeframe_200;
            li_24 = l_index_12;
         }
         ld_108 = 0;
         ld_116 = 0;
         ld_124 = 0;
         ld_unused_132 = 0;
         ld_108 = NormalizeDouble(iCustom(g_symbol_124, l_timeframe_100, "Volvox-XL_Ver_8.0", 0, li_24), MarketInfo(g_symbol_124, MODE_DIGITS));
         ld_116 = NormalizeDouble(iCustom(g_symbol_124, l_timeframe_100, "Volvox-XL_Ver_8.0", 1, li_24), MarketInfo(g_symbol_124, MODE_DIGITS));
         if (ld_108 > 0.0 && ld_108 != EMPTY_VALUE) ld_124 = ld_108;
         else ld_124 = ld_116;
         switch (l_count_96) {
         case 0:
            gda_184[li_4] = ld_124;
            break;
         case 1:
            gda_180[li_4] = ld_124;
            break;
         case 2:
            gda_176[li_4] = ld_124;
            break;
         case 3:
            gda_172[li_4] = ld_124;
         }
      }
      li_4++;
   }
   for (li_4 = gi_112; li_4 >= 0; li_4--) {
      gda_156[li_4] = NormalizeDouble(iMAOnArray(gda_172, Bars, 13, 0, MODE_SMA, li_4), MarketInfo(g_symbol_124, MODE_DIGITS));
      gda_160[li_4] = NormalizeDouble(iMAOnArray(gda_176, Bars, 13, 0, MODE_SMA, li_4), MarketInfo(g_symbol_124, MODE_DIGITS));
      gda_164[li_4] = NormalizeDouble(iMAOnArray(gda_180, Bars, 13, 0, MODE_SMA, li_4), MarketInfo(g_symbol_124, MODE_DIGITS));
      gda_168[li_4] = NormalizeDouble(iMAOnArray(gda_184, Bars, 13, 0, MODE_SMA, li_4), MarketInfo(g_symbol_124, MODE_DIGITS));
   }
   for (li_4 = gi_112; li_4 >= 0; li_4--) {
      if (gda_184[li_4] > gda_168[li_4]) g_ibuf_144[li_4] = 1;
      else {
         if (gda_184[li_4] < gda_168[li_4]) g_ibuf_148[li_4] = 1;
         else
            if (gda_184[li_4] == gda_168[li_4]) g_ibuf_152[li_4] = 1;
      }
      if (gda_180[li_4] > gda_164[li_4]) g_ibuf_132[li_4] = 2;
      else {
         if (gda_180[li_4] < gda_164[li_4]) g_ibuf_136[li_4] = 2;
         else
            if (gda_180[li_4] == gda_164[li_4]) g_ibuf_140[li_4] = 2;
      }
   }
   ObjectsRedraw();
   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 NewBar() {
   if (Time[0] != g_time_224) {
      g_time_224 = Time[0];
      return (1);
   }
   return (0);
}

string StringChangeToUpperCase(string as_0) {
   int li_16;
   int l_str_len_8 = StringLen(as_0);
   for (int li_12 = 0; li_12 < l_str_len_8; li_12++) {
      li_16 = StringGetChar(as_0, li_12);
      if (li_16 >= 'a' && li_16 <= 'z') as_0 = StringSetChar(as_0, li_12, li_16 - 32);
   }
   return (as_0);
}
