/*
   Generated by EX4-TO-MQ4 decompiler V4.0.220.2c []
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/

#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color1 LimeGreen
#property indicator_color2 Yellow
#property indicator_color3 FireBrick
#property indicator_color4 LightGreen
#property indicator_color5 Tomato
#property indicator_color6 LightSlateGray

int gi_76 = 817347;
int g_period_80 = 8;
int g_applied_price_84 = PRICE_CLOSE;
bool gi_88 = FALSE;
bool gi_unused_92 = TRUE;
bool gi_96 = FALSE;
bool gi_100 = FALSE;
bool gi_104 = FALSE;
bool gi_108 = FALSE;
bool gi_112 = TRUE;
bool gi_116 = TRUE;
bool gi_120 = TRUE;
int g_timeframe_124 = 0;
int gi_128 = 1;
int g_period_132 = 50;
int g_period_136 = 170;
int gi_unused_140 = 8;
int g_period_144 = 14;
int g_period_148 = 5;
double gd_unused_152 = 165.0;
double gd_unused_160 = -165.0;
double gd_168 = 0.0;
double gd_176 = 0.0;
double gd_184 = 55.0;
double gd_192 = 45.0;
double gd_200 = 30.0;
double gd_208 = -30.0;
double gd_216 = 25.0;
double gd_224 = -25.0;
int gi_unused_232 = 5;
int gi_unused_236 = 3;
int gi_unused_240 = 3;
int g_period_244 = 20;
double gd_248 = 15.0;
bool gi_256 = FALSE;
int g_applied_price_260 = PRICE_TYPICAL;
int gi_unused_264 = 34;
double gd_unused_268 = 0.2;
int gi_unused_276 = 6;
int gi_unused_280 = 0;
bool gi_284 = FALSE;
string gs_288 = "#fxprime BUY (Canadian dude says: happy pippin\')";
string gs_296 = "#fxprime SELL (Canadian dude says: happy pippin\')";
string gs_304 = "#fxprime EXIT";
int g_period_312 = 34;
double gd_316 = 0.2;
int gi_324 = 6;
int gi_328 = 0;
double g_ibuf_332[];
double g_ibuf_336[];
double g_ibuf_340[];
double g_ibuf_344[];
double g_ibuf_348[];
double g_ibuf_352[];
int g_datetime_356;
int g_datetime_360;
int g_datetime_364;

int init() {
   int li_0 = 2;
   if (!gi_284) li_0 = 12;
   IndicatorBuffers(6);
   SetIndexStyle(0, li_0, STYLE_SOLID, 2);
   SetIndexStyle(1, li_0, STYLE_SOLID, 2);
   SetIndexStyle(2, li_0, STYLE_SOLID, 2);
   IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 2.0);
   SetIndexBuffer(0, g_ibuf_332);
   SetIndexBuffer(1, g_ibuf_336);
   SetIndexBuffer(2, g_ibuf_340);
   int li_4 = 3;
   if (!gi_116) li_4 = 12;
   SetIndexStyle(3, li_4);
   SetIndexArrow(3, 110);
   SetIndexBuffer(3, g_ibuf_344);
   SetIndexEmptyValue(3, -200);
   li_4 = 3;
   if (!gi_112) li_4 = 12;
   SetIndexStyle(4, li_4);
   SetIndexArrow(4, 110);
   SetIndexBuffer(4, g_ibuf_348);
   SetIndexEmptyValue(4, -200);
   li_4 = 3;
   if (!gi_120) li_4 = 12;
   SetIndexStyle(5, li_4);
   SetIndexArrow(5, 159);
   SetIndexBuffer(5, g_ibuf_352);
   SetIndexEmptyValue(5, -200);
   ShowCopyright();
   return (0);
}

int start() {
   double l_ima_4;
   double l_ima_12;
   double ld_20;
   bool li_68;
   int li_unused_72;
   bool li_76;
   double l_irsi_80;
   double l_icci_88;
   double l_icci_96;
   double l_icci_104;
   double l_icci_112;
   double l_icci_120;
   double l_irsi_128;
   double l_iadx_136;
   double l_iadx_144;
   double l_iadx_152;
   int li_160;
   int l_acc_number_0 = AccountNumber();
   if (l_acc_number_0 != gi_76) {
      Alert("You can not use this account (" + DoubleToStr(l_acc_number_0, 42881) + ") with this program!");
      return (0);
   }
   if (gi_328 >= gi_324) {
      Print("Error: EndEMAShift >= StartEMAShift");
      gi_324 = 6;
      gi_328 = 0;
   }
   int li_52 = IndicatorCounted();
   if (li_52 < 0) return (-1);
   if (li_52 > 0) li_52--;
   int li_44 = Bars - li_52;
   double ld_unused_36 = 0.0174532778;
   double ld_28 = 10000.0;
   if (Symbol() == "USDJPY") ld_28 = 100.0;
   int li_64 = gi_324 - gi_328;
   ld_28 /= li_64;
   for (int li_48 = 0; li_48 < li_44; li_48++) {
      g_ibuf_344[li_48] = -200;
      g_ibuf_348[li_48] = -200;
      g_ibuf_352[li_48] = -200;
      li_68 = FALSE;
      li_unused_72 = 0;
      li_76 = FALSE;
      l_irsi_80 = iRSI(NULL, 0, g_period_80, g_applied_price_84, li_48);
      l_icci_88 = iCCI(Symbol(), g_timeframe_124, g_period_148, g_applied_price_260, li_48);
      l_icci_96 = iCCI(Symbol(), g_timeframe_124, g_period_132, g_applied_price_260, li_48);
      l_icci_104 = iCCI(Symbol(), g_timeframe_124, g_period_132, g_applied_price_260, li_48 + gi_128);
      l_icci_112 = iCCI(Symbol(), g_timeframe_124, g_period_136, g_applied_price_260, li_48);
      l_icci_120 = iCCI(Symbol(), g_timeframe_124, g_period_136, g_applied_price_260, li_48 + gi_128);
      l_irsi_128 = iRSI(Symbol(), g_timeframe_124, g_period_144, PRICE_CLOSE, li_48);
      l_iadx_136 = iADX(Symbol(), g_timeframe_124, g_period_244, PRICE_CLOSE, MODE_PLUSDI, li_48);
      l_iadx_144 = iADX(Symbol(), g_timeframe_124, g_period_244, PRICE_CLOSE, MODE_MINUSDI, li_48);
      l_iadx_152 = iADX(Symbol(), g_timeframe_124, g_period_244, PRICE_CLOSE, MODE_MAIN, li_48);
      li_160 = -1;
      if (l_iadx_136 >= l_iadx_144 && l_iadx_152 > gd_248) li_160 = 0;
      if (l_iadx_136 < l_iadx_144 && l_iadx_152 > gd_248) li_160 = 1;
      l_ima_4 = iMA(NULL, 0, g_period_312, 0, MODE_EMA, PRICE_MEDIAN, li_48 + gi_328);
      l_ima_12 = iMA(NULL, 0, g_period_312, 0, MODE_EMA, PRICE_MEDIAN, li_48 + gi_324);
      ld_20 = ld_28 * (l_ima_4 - l_ima_12);
      g_ibuf_336[li_48] = 0.0;
      g_ibuf_332[li_48] = 0.0;
      g_ibuf_340[li_48] = 0.0;
      if (ld_20 > gd_316) {
         li_68 = TRUE;
         g_ibuf_332[li_48] = ld_20;
      } else {
         if (ld_20 < -gd_316) {
            li_76 = TRUE;
            g_ibuf_336[li_48] = ld_20;
         } else {
            li_unused_72 = 1;
            g_ibuf_340[li_48] = ld_20;
         }
      }
      if (l_icci_96 > gd_200 && l_icci_112 > gd_216 && l_irsi_80 > gd_184 || !gi_88 && li_160 == 0 || !gi_256 && li_68) {
         g_ibuf_344[li_48] = 0.2;
         if (li_48 == 1 && g_ibuf_344[li_48 + 1] != 0.2 && gi_96 && g_datetime_356 < iTime(NULL, 0, 2)) {
            g_datetime_356 = iTime(NULL, 0, 2);
            AlertSignal(gi_108, 0, gs_288, gs_296, gs_304);
         }
      }
      if (l_icci_96 < gd_208 && l_icci_112 < gd_224 && l_irsi_80 < gd_192 || !gi_88 && li_160 == 1 || !gi_256 && li_76) {
         g_ibuf_348[li_48] = 0.2;
         if (li_48 == 1 && g_ibuf_348[li_48 + 1] != 0.2 && gi_100 && g_datetime_360 < iTime(NULL, 0, 2)) {
            g_datetime_360 = iTime(NULL, 0, 2);
            AlertSignal(gi_108, 1, gs_288, gs_296, gs_304);
         }
      }
      if ((l_icci_96 >= gd_176 && l_icci_104 < gd_176) || (l_icci_96 <= gd_168 && l_icci_104 > gd_168)) {
         g_ibuf_352[li_48] = -0.2;
         if (li_48 == 1 && g_ibuf_352[li_48 + 1] != 0.2 && gi_104 && g_datetime_364 < iTime(NULL, 0, 2)) {
            g_datetime_364 = iTime(NULL, 0, 2);
            AlertSignal(gi_108, -100, gs_288, gs_296, gs_304);
         }
      }
   }
   return (0);
}

void ShowCopyright() {
   Print("Copyright © 2007-2008, ", "Canadian Dude & Rev");
   Print("http://www.learnfxprime.com");
}

void AlertSignal(bool ai_0, int ai_4, string as_8, string as_16, string as_24) {
   string l_str_concat_32 = "";
   if (ai_0) l_str_concat_32 = StringConcatenate(l_str_concat_32, Symbol(), ", ");
   if (ai_4 == 0) l_str_concat_32 = StringConcatenate(l_str_concat_32, as_8);
   else {
      if (ai_4 == 1) l_str_concat_32 = StringConcatenate(l_str_concat_32, as_16);
      else
         if (ai_4 == -100) l_str_concat_32 = StringConcatenate(l_str_concat_32, as_24);
   }
   Alert(l_str_concat_32);
}