/*
   Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/
#property copyright "Copyright � 2010, ForexRealProfitEA"
#property link      "http://www.forexrealprofitea.com"

#import "kernel32.dll"
   void GetLocalTime(int& a0[]);
   void GetSystemTime(int& a0[]);
   int GetTimeZoneInformation(int& a0[]);
#import

extern string ForexRealProfitEA_c = " ---- Copyright � 2010, ForexRealProfitEA ---- ";
extern string ForexRealProfitEA_ws = " ---- http://www.forexrealprofitea.com ---- ";
extern string ForexRealProfitEA_s = " ---- ForexRealProfitEA_v5.11 Settings ---- ";
extern int MagicNumber = 749637;
extern bool UseAutoGMT = TRUE;
extern string Set_StartHour = "22";
extern string Set_StartMinute = "00";
extern string Set_EndHour = "22";
extern string Set_EndMinute = "59";
extern double Set_Lots = 0.1;
extern double Set_MaxSpread = 25;
extern double Set_Slippage = 1.0;
extern bool UseStopLoss = TRUE;
extern int Set_StopLoss = 10;
extern bool UseTakeProfit = TRUE;
extern double Set_TakeProfit = 30;
extern bool UseTrendFilter = FALSE;
extern bool InvisibleMode = FALSE;
extern bool NFA = FALSE;
extern double AFMP = 75.0;
extern int P01 = 12;
extern bool MoneyManagement = TRUE;
extern int MM_Option = 1;
extern double Risk_percent = 5.0;
bool gi_224 = FALSE;
bool gi_228 = FALSE;
bool gi_232 = TRUE;
bool gi_236 = FALSE;
int gi_240 = 10;
int gi_unused_244 = 0;
int gi_unused_248 = 0;
double gd_260;
double g_slippage_268;
int gi_276;
double gd_280;
int gi_288;
int gi_296;
double g_free_magrin_300;
int g_datetime_308 = 0;
int gi_312 = 0;
double gd_316;
double gda_324[360];
int gi_328;
double gd_332;
int gi_340 = 0;
double g_point_344;
double g_ticksize_352;
double gd_360;
double gd_368;
double gd_376;
double gd_384;
int gi_392;
string gs_unused_396 = "Do NOT change the parameters below!!!";
double g_ihigh_404;
double g_ilow_412;
bool gi_420;
bool gi_424;
int gi_428 = 1;
int gi_432;
int gi_436 = 0;
int gi_440 = 17;
int gi_444;
int gi_448 = 17;
int gi_452 = 8;
bool gi_456;
int g_timeframe_460;
bool gi_464;
int gi_468 = 21;
int g_timeframe_472;
bool gi_476;
bool gi_484;
int gi_488;
int gi_492 = 0;
int gi_496 = 17;
int gi_500 = 7;
int g_bars_504;
int gi_508;
bool gi_512 = FALSE;
int gi_516;
//extern string Internals = "!! Do NOT! Change Below This Line !!";
//extern string I_B_A = "[5][38730][67][][[3]7[][45][r32][5[6][34]67]54]6[856][83061]";
//extern string I_B_B = "[23]6[54]8[6]9[6]79[67][]3[32]6[]5[56]8]57[34]6[43]67[54]74]";
//extern string I_B_C = "[8]658]7[9[67][]2[3[]765[]9[][3]5[[8]5[7][8]8]9[][][5[][685]";
//extern string I_B_D = "[12]5[5]78]973[23]6[54]8[6]9[6]79[67][]3[32]6[]5[56]8]57[34]";
//string gs_unused_560 = "Key Scramble SC1";
//string gs_unused_568 = "02F8C241A58E00301AC73442EF00F184EEA92220301053F";
//string gs_unused_576 = "A85200274493C37D02716391F62833201C6AA37593602EF";
//string gs_unused_584 = "71C86305BFA50030260063070200C3627049C73D01E824F";
//string gs_unused_592 = "LEDHSPENABS0FHSSMDKEIAPLDJWLEQAOMNRFOSJWOHSKTVB";
//string gs_unused_600 = "J30SKDNMEPATLB`FK#KH#*MKS^L@NVHSOG%JSIHLXM#JHWI";
//string gs_unused_608 = "!)~+$*)@$*@+!^$(@_&#(!!^$(@@&!~%(%#@)#%*@$!*@(#";
//string gs_unused_616 = "BOEJA^#$)DN!(~NK#K&$KAP@HG~$K##(FOQ&LSKTZB$@)F";
//string gs_unused_624 = "hwomdjksleuewjhlsadyap@fsjk$lse0#@(!tkeyqfh~yk";
//string gs_unused_632 = "wsiWpsgK@B7Djg8#A~hkr~sdUIY~6#)ngwH4*2KW@%S5l@";
//string gs_unused_640 = "Key Scramble SC2";
//string gs_unused_648 = "02F8C241A58E00301AC73442EF00F184EEA92220301053F";
//string gs_unused_656 = "A85200274493C37D02716391F62833201C6AA37593602EF";
//string gs_unused_664 = "71C86305BFA50030260063070200C3627049C73D01E824F";
//string gs_unused_672 = "LEDHSPENABS0FHSSMDKEIAPLDJWLEQAOMNRFOSJWOHSKTVB";
//string gs_unused_680 = "J30SKDNMEPATLB`FK#KH#*MKS^L@NVHSOG%JSIHLXM#JHWI";
//string gs_unused_688 = "!)~+$*)@$*@+!^$(@_&#(!!^$(@@&!~%(%#@)#%*@$!*@(#";
//string gs_unused_696 = "BOEJA^#$)DN!(~NK#K&$KAP@HG~$K##(FOQ&LSKTZB$@)F";
//string gs_unused_704 = "hwomdjksleuewjhlsadyap@fsjk$lse0#@(!tkeyqfh~yk";
//string gs_unused_712 = "wsiWpsgK@B7Djg8#A~hkr~sdUIY~6#)ngwH4*2KW@%S5l@";
//string gs_unused_720 = "...................../??/)";
//string gs_unused_728 = "...................,/?../";
//string gs_unused_736 = "................../..../";
//string gs_unused_744 = "............./??/\'...\'/???`??";
//string gs_unused_752 = "........../\'/.../..../......./??\\.";
//string gs_unused_760 = "........(\'(...?...?.... ?~/\'...\')";
//string gs_unused_768 = ".........\\.................\'...../";
//string gs_unused_776 = "..........\'\'...\\.......... _.??";
//string gs_unused_784 = "............\\..............(";
//string gs_unused_792 = "..............\\.............\\...";
int gi_800 = D'2011.03.28 02:00';

int init() {
   g_bars_504 = Bars;
   gi_516 = gi_276;
   if (gi_232) gi_508 = 0;
   else gi_508 = 1;
   return (0);
}

int deinit() {
   return (0);
}

int start() {
   int l_ticket_8;
   double l_price_12;
   double l_price_20;
   int lia_44[4];
   int lia_48[43];
   double ld_184;
   double l_lots_200;
   string l_dbl2str_216;
   string l_dbl2str_224;
   string l_dbl2str_232;
   string l_dbl2str_240;
   string l_dbl2str_248;
   string ls_256;
   string l_dbl2str_264;
   bool li_388;
   bool li_392;
   bool li_396;
   bool li_400;
   bool li_420;
   bool li_424;
   bool li_440;
   bool li_444;
   bool li_448;
   bool li_452;
   /*if (TimeCurrent() >= gi_800) {
      Alert("[ EA INTERNAL LOGIC IS DAMAGED! ]");
      Alert("[ OPERATION TERMINATED! ]");
      Alert("[ ERROR CODE: 485027 ]");
      Sleep(500000);
      return (0);
   }*/
   int li_0 = 0;
   if (gi_232 && Bars != g_bars_504) gi_512 = FALSE;
   int l_ord_total_4 = OrdersTotal();
   li_0 = 0;
   /*bool li_28 = FALSE;
   int li_32 = 1299974400;
   string l_time2str_36 = TimeToStr(li_32);
   if (TimeCurrent() >= li_32) Print("License has been expired!");
   if (IsDemo() == FALSE) Print("Demo Version only for Demo Accounts!");
   if (TimeCurrent() < li_32 && IsDemo() == TRUE) li_28 = TRUE;
   if (li_28 == FALSE) return (0);*/
   HideTestIndicators(TRUE);
   //int l_datetime_88 = TimeCurrent();
   GetSystemTime(lia_44);
   int li_52 = lia_44[0] & 65535;
   int li_56 = lia_44[0] >> 16;
   int li_60 = lia_44[1] >> 16;
   int li_64 = lia_44[2] & 65535;
   int li_68 = lia_44[2] >> 16;
   int li_72 = lia_44[3] & 65535;
   string ls_92 = FormatDateTime(li_52, li_56, li_60, li_64, li_68, li_72);
   GetLocalTime(lia_44);
   li_52 = lia_44[0] & 65535;
   li_56 = lia_44[0] >> 16;
   li_60 = lia_44[1] >> 16;
   li_64 = lia_44[2] & 65535;
   li_68 = lia_44[2] >> 16;
   li_72 = lia_44[3] & 65535;
   int li_76 = lia_44[3] >> 16;
   string ls_80 = li_76 + 1000;
   ls_80 = StringSubstr(ls_80, 1);
   ls_92 = FormatDateTime(li_52, li_56, li_60, li_64, li_68, li_72);
   int li_100 = 0;
   int li_104 = GetTimeZoneInformation(lia_48);
   if (li_104 != 0) li_100 = lia_48[0];
   if (li_104 == 2) li_100 += lia_48[42];
   int l_str2time_108 = StrToTime(ls_92);
   li_52 = lia_44[17] & 65535;
   li_56 = lia_48[17] >> 16;
   li_60 = lia_48[18] >> 16;
   li_64 = lia_48[19] & 65535;
   li_68 = lia_48[19] >> 16;
   li_72 = lia_48[20] & 65535;
   ls_92 = FormatDateTime(li_52, li_56, li_60, li_64, li_68, li_72);
   li_52 = lia_44[38] & 65535;
   li_56 = lia_48[38] >> 16;
   li_60 = lia_48[39] >> 16;
   li_64 = lia_48[40] & 65535;
   li_68 = lia_48[40] >> 16;
   li_72 = lia_48[41] & 65535;
   ls_92 = FormatDateTime(li_52, li_56, li_60, li_64, li_68, li_72);
   int l_str2time_112 = StrToTime(Set_StartHour + ":00");
   int l_str2time_116 = StrToTime("00:" + Set_StartMinute);
   int l_str2time_120 = StrToTime(Set_EndHour + ":00");
   int l_str2time_124 = StrToTime("00:" + Set_EndMinute);
   string l_time2str_128 = TimeToStr(l_str2time_108 + 60 * li_100, TIME_MINUTES);
   int l_str2time_136 = StrToTime(l_time2str_128);
   string l_symbol_140 = Symbol();
   double l_minlot_148 = MarketInfo(l_symbol_140, MODE_MINLOT);
   double l_maxlot_156 = MarketInfo(l_symbol_140, MODE_MAXLOT);
   int l_digits_164 = MarketInfo(l_symbol_140, MODE_DIGITS);
   if (l_digits_164 == 4) {
      gd_260 = Set_MaxSpread;
      g_slippage_268 = Set_Slippage;
      gi_276 = Set_StopLoss;
      gd_280 = Set_TakeProfit;
      gi_288 = gi_240;
      gi_488 = gi_500 - 7;
      gi_392 = 2;
   } else {
      gd_260 = 10.0 * Set_MaxSpread;
      g_slippage_268 = 10.0 * Set_Slippage;
      gi_276 = 10 * Set_StopLoss;
      gd_280 = 10.0 * Set_TakeProfit;
      gi_288 = 10 * gi_240;
      gi_488 = 10 * (gi_500 - 7);
      gi_392 = 20;
   }
   double l_spread_168 = MarketInfo(Symbol(), MODE_SPREAD);
   double ld_176 = (100 - AFMP) / 100.0;
   if (!IsTesting()) {
      if (gi_312 > 360) gi_312 = 5;
      if (g_datetime_308 != iTime(Symbol(), PERIOD_M1, 0)) {
         gi_312++;
         g_datetime_308 = iTime(Symbol(), PERIOD_M1, 0);
         gda_324[gi_312] = (Ask - Bid) / Point;
         if (gda_324[gi_312] == 0.0) gi_312--;
      }
      if (gi_312 > 0) {
         ld_184 = 0;
         for (gi_328 = 1; gi_328 <= gi_312; gi_328++) ld_184 += gda_324[gi_328];
         gd_316 = NormalizeDouble(ld_184 / gi_312, 1);
      } else gd_316 = (Ask - Bid) / Point;
      gd_332 = MathMax(l_spread_168, gd_316);
   } else gd_332 = l_spread_168;
   if (MM_Option < 1 || MM_Option > 3) MM_Option = 1;
   if (MM_Option == 1) g_free_magrin_300 = AccountBalance();
   if (MM_Option == 2) g_free_magrin_300 = AccountEquity();
   if (MM_Option == 3) g_free_magrin_300 = AccountFreeMargin();
   if (IsTesting() == TRUE && gi_340 == FALSE) {
      if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.001) gi_296 = 3;
      if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.01) gi_296 = 2;
      if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.1) gi_296 = 1;
      if (MarketInfo(Symbol(), MODE_LOTSTEP) == 1.0) gi_296 = 0;
      g_point_344 = MarketInfo(Symbol(), MODE_POINT);
      g_ticksize_352 = MarketInfo(Symbol(), MODE_TICKSIZE);
      gd_360 = MarketInfo(Symbol(), MODE_TICKVALUE);
      gd_368 = gd_360 * g_point_344 / g_ticksize_352;
      if (g_point_344 > 0.0 && g_ticksize_352 > 0.0 && gd_360 > 0.0 && gd_368 > 0.0 && gi_296 == 0 || gi_296 == 1 || gi_296 == 2 || gi_296 == 3) gi_340 = TRUE;
   }
   if (IsTesting() == FALSE) {
      if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.001) gi_296 = 3;
      if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.01) gi_296 = 2;
      if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.1) gi_296 = 1;
      if (MarketInfo(Symbol(), MODE_LOTSTEP) == 1.0) gi_296 = 0;
      g_point_344 = MarketInfo(Symbol(), MODE_POINT);
      g_ticksize_352 = MarketInfo(Symbol(), MODE_TICKSIZE);
      gd_360 = MarketInfo(Symbol(), MODE_TICKVALUE);
      gd_368 = gd_360 * g_point_344 / g_ticksize_352;
   }
   double ld_192 = Risk_percent / 100.0;
   if (MoneyManagement) l_lots_200 = NormalizeDouble(g_free_magrin_300 * ld_192 / (gi_276 * gd_368), gi_296);
   else l_lots_200 = Set_Lots;
   if (l_lots_200 < l_minlot_148) l_lots_200 = l_minlot_148;
   if (l_lots_200 > l_maxlot_156) l_lots_200 = l_maxlot_156;
   double ld_208 = (-1 * gi_276) * gd_368 * l_lots_200;
   if (IsTesting() == FALSE) {
      if (l_digits_164 == 4) l_dbl2str_216 = DoubleToStr(l_spread_168, 1);
      if (l_digits_164 == 5) l_dbl2str_216 = DoubleToStr(l_spread_168 / 10.0, 1);
      if (l_digits_164 == 4) l_dbl2str_224 = DoubleToStr(gd_260, 1);
      if (l_digits_164 == 5) l_dbl2str_224 = DoubleToStr(gd_260 / 10.0, 1);
      if (l_digits_164 == 4) l_dbl2str_232 = DoubleToStr(gd_316, 1);
      if (l_digits_164 == 5) l_dbl2str_232 = DoubleToStr(gd_316 / 10.0, 1);
      if (l_digits_164 == 4) l_dbl2str_240 = DoubleToStr(gi_276, 0);
      if (l_digits_164 == 5) l_dbl2str_240 = DoubleToStr(gi_276 / 10, 0);
      if (l_digits_164 == 4) l_dbl2str_248 = DoubleToStr(gd_280, 1);
      if (l_digits_164 == 5) l_dbl2str_248 = DoubleToStr(gd_280 / 10.0, 1);
      ls_256 = "";
      ls_256 = ls_256 + "                                \n";
      ls_256 = ls_256 + " -------------------------------\n";
      ls_256 = ls_256 + " WWW.FOREXREALPROFITEA.COM\n";
      ls_256 = ls_256 + " VERSION 5.11 Demo  \n";
      ls_256 = ls_256 + " LICENSED UNTIL:   Forever " 
      + "\n";
      ls_256 = ls_256 + " -------------------------------\n";
      if (UseAutoGMT == TRUE) ls_256 = ls_256 + " USE AUTO GMT:     TRUE\n";
      if (UseAutoGMT == FALSE) ls_256 = ls_256 + " USE AUTO GMT:     FALSE\n";
      ls_256 = ls_256 + " GMT TIME:              " + l_time2str_128 
      + "\n";
      ls_256 = ls_256 + " TRADING TIME:       " + Set_StartHour + ":" + Set_StartMinute + "-" + Set_EndHour + ":" + Set_EndMinute 
      + "\n";
      ls_256 = ls_256 + " -------------------------------\n";
      ls_256 = ls_256 + " MAX SPREAD:          " + l_dbl2str_224 
      + "\n";
      ls_256 = ls_256 + " PAIR SPREAD:         " + l_dbl2str_216 
      + "\n";
      ls_256 = ls_256 + " AVERAGE SPREAD: " + l_dbl2str_232 
      + "\n";
      ls_256 = ls_256 + " -------------------------------\n";
      if (UseStopLoss == TRUE) {
         ls_256 = ls_256 + " STOP LOSS:            ( True )  " + l_dbl2str_240 
         + "\n";
      }
      if (UseStopLoss == FALSE) {
         ls_256 = ls_256 + " STOP LOSS:            ( False ) " + l_dbl2str_240 
         + "\n";
      }
      if (UseTakeProfit == TRUE) {
         ls_256 = ls_256 + " TAKE PROFIT:        ( True )  " + l_dbl2str_248 
         + "\n";
      }
      if (UseTakeProfit == FALSE) {
         ls_256 = ls_256 + " TAKE PROFIT:        ( False ) " + l_dbl2str_248 
         + "\n";
      }
      ls_256 = ls_256 + " -------------------------------\n";
      l_dbl2str_264 = DoubleToStr(100.0 * (l_lots_200 * gi_276 * gd_368 / g_free_magrin_300), 1);
      if (UseStopLoss == TRUE) {
         ls_256 = ls_256 + " RISK PERCENT :     " + l_dbl2str_264 + " % " 
         + "\n";
      }
      if (UseStopLoss == FALSE) {
         l_dbl2str_264 = "Unknown, UseStopLoss=False";
         ls_256 = ls_256 + " RISK PERCENT :     " + l_dbl2str_264 
         + "\n";
      }
      ls_256 = ls_256 + " -------------------------------\n";
      Comment(ls_256);
   }
   if (AccountCompany() == "MB Trading Futures, Inc.") gi_224 = TRUE;
   else gi_224 = FALSE;
   if (gi_224 == TRUE) {
      if (TimeHour(TimeCurrent()) == 16 && TimeMinute(TimeCurrent()) >= 58) return (0);
      if (TimeHour(TimeCurrent()) == 17 && TimeMinute(TimeCurrent()) < 6) return (0);
   }
   gi_432 = 2;
   if (gd_332 < gi_392) gi_432 = 3;
   int li_272 = P01 - 7;
   if (li_272 < 1) li_272 = 1;
   int l_count_276 = 0;
   bool li_280 = FALSE;
   for (int li_284 = 1; li_284 <= li_272; li_284++) {
      g_ihigh_404 = iHigh(Symbol(), Period(), gi_508 + li_284);
      if (Bid > g_ihigh_404) l_count_276++;
   }
   if (l_count_276 == li_272) li_280 = TRUE;
   int l_count_288 = 0;
   bool li_292 = FALSE;
   for (int li_296 = 1; li_296 <= li_272; li_296++) {
      g_ilow_412 = iLow(Symbol(), Period(), gi_508 + li_296);
      if (Bid < g_ilow_412) l_count_288++;
   }
   if (l_count_288 == li_272) li_292 = TRUE;
   gi_444 = 8;
   if (Period() == PERIOD_M5 || Period() == PERIOD_M1) gi_444 = 9;
   int l_period_300 = gi_440 - 7;
   int li_304 = gi_444 - 7;
   int l_period_308 = gi_448 - 7;
   int li_312 = gi_452 - 7;
   double l_ibands_316 = iBands(Symbol(), Period(), l_period_300, li_304, 0, PRICE_CLOSE, MODE_LOWER, gi_508 + 0);
   double l_ibands_324 = iBands(Symbol(), Period(), l_period_300, li_304, 0, PRICE_CLOSE, MODE_UPPER, gi_508 + 0);
   double l_ibands_332 = iBands(Symbol(), Period(), l_period_308, li_312, 0, PRICE_CLOSE, MODE_LOWER, gi_508 + 0);
   double l_ibands_340 = iBands(Symbol(), Period(), l_period_308, li_312, 0, PRICE_CLOSE, MODE_UPPER, gi_508 + 0);
   if (gi_428 < 1 || gi_428 > 2) gi_428 = 1;
   int li_348 = gi_432;
   if (gi_436 == 0) {
      gd_376 = Bid;
      gd_384 = Bid;
   } else {
      gd_376 = Bid + gd_332 * Point;
      gd_384 = Bid - gd_332 * Point;
   }
   if (gi_428 == 1) {
      gi_420 = FALSE;
      if (gd_376 < l_ibands_316 && (l_ibands_324 - Bid) / Point / li_348 > gd_332) gi_420 = TRUE;
      gi_424 = FALSE;
      if (gd_384 > l_ibands_324 && (Bid - l_ibands_316) / Point / li_348 > gd_332) gi_424 = TRUE;
   } else {
      gi_420 = FALSE;
      if (Bid + gd_332 * Point * li_348 < l_ibands_340) gi_420 = TRUE;
      gi_424 = FALSE;
      if (Bid - gd_332 * Point * li_348 > l_ibands_332) gi_424 = TRUE;
   }
   bool li_352 = FALSE;
   if (Bid <= l_ibands_332) li_352 = TRUE;
   bool li_356 = FALSE;
   if (Bid >= l_ibands_340) li_356 = TRUE;
   gi_464 = TRUE;
   if (Period() == PERIOD_M15) gi_464 = FALSE;
   if (gi_464 == FALSE) gi_456 = FALSE;
   else gi_456 = TRUE;
   if (Period() <= PERIOD_M15) g_timeframe_460 = 5;
   if (Period() == PERIOD_M30) g_timeframe_460 = 15;
   if (Period() == PERIOD_H1) g_timeframe_460 = 30;
   if (Period() == PERIOD_H4) g_timeframe_460 = 60;
   if (Period() >= PERIOD_D1) g_timeframe_460 = 240;
   int l_period_360 = gi_468 - 7;
   double l_iwpr_364 = iWPR(Symbol(), g_timeframe_460, l_period_360, gi_508 + 0);
   double ld_372 = -20;
   double ld_380 = -80;
   if (gi_456 == TRUE) {
      li_388 = FALSE;
      if (l_iwpr_364 < ld_380) li_388 = TRUE;
      li_392 = FALSE;
      if (l_iwpr_364 > ld_372) li_392 = TRUE;
      li_396 = FALSE;
      if (l_iwpr_364 > ld_372) li_396 = TRUE;
      li_400 = FALSE;
      if (l_iwpr_364 < ld_380) li_400 = TRUE;
   }
   if (UseTrendFilter == FALSE) gi_476 = FALSE;
   else gi_476 = TRUE;
   if (Period() == PERIOD_M1) g_timeframe_472 = 15;
   if (Period() == PERIOD_M5) g_timeframe_472 = 30;
   if (Period() == PERIOD_M15) g_timeframe_472 = 30;
   if (Period() == PERIOD_M30) g_timeframe_472 = 60;
   if (Period() == PERIOD_H1) g_timeframe_472 = 240;
   if (Period() == PERIOD_H4) g_timeframe_472 = 1440;
   if (Period() == PERIOD_D1) g_timeframe_472 = 10080;
   if (Period() >= PERIOD_W1) g_timeframe_472 = 43200;
   double l_iao_404 = iAO(Symbol(), g_timeframe_472, gi_508 + 0);
   double ld_412 = 0;
   if (gi_476 == TRUE) {
      li_420 = FALSE;
      if (l_iao_404 > ld_412) li_420 = TRUE;
      li_424 = FALSE;
      if (l_iao_404 < ld_412) li_424 = TRUE;
   }
   if (gi_492 == 0) gi_484 = FALSE;
   else gi_484 = TRUE;
   int l_period_428 = gi_496 - 7;
   double l_ima_432 = iMA(Symbol(), Period(), l_period_428, 0, MODE_SMA, PRICE_CLOSE, gi_508 + 0);
   if (l_period_428 < 5 || gi_488 < 0) gi_484 = FALSE;
   if (gi_484 == TRUE) {
      li_440 = FALSE;
      if (Bid + gd_332 * Point < l_ima_432 - gi_488 * Point) li_440 = TRUE;
      li_444 = FALSE;
      if (Bid - gd_332 * Point > l_ima_432 + gi_488 * Point) li_444 = TRUE;
   }
   if (l_period_428 < 5 || gi_488 < 0) gi_484 = FALSE;
   if (gi_484 == TRUE) {
      li_448 = FALSE;
      if (Bid > l_ima_432 + gi_488 * Point) li_448 = TRUE;
      li_452 = FALSE;
      if (Bid < l_ima_432 - gi_488 * Point) li_452 = TRUE;
   }
   datetime lt_456 = D'11.11.2010';
   datetime lt_460 = D'12.11.2010';
   datetime lt_464 = D'25.11.2010';
   datetime lt_468 = D'26.11.2010';
   datetime lt_472 = D'24.12.2010';
   datetime lt_476 = D'25.12.2010';
   datetime lt_480 = D'31.12.2010';
   datetime li_484 = D'01.01.2011';
   datetime li_488 = D'03.01.2011';
   datetime li_492 = D'04.01.2011';
   datetime li_496 = D'17.01.2011';
   datetime li_500 = D'18.01.2011';
   datetime li_504 = D'21.02.2011';
   datetime li_508 = D'22.02.2011';
   datetime li_512 = D'30.05.2011';
   datetime li_516 = D'31.05.2011';
   datetime li_520 = D'04.07.2011';
   datetime li_524 = D'05.07.2011';
   datetime li_528 = D'05.09.2011';
   datetime li_532 = D'06.09.2011';
   datetime li_536 = 1318204800;
   datetime li_540 = 1318291200;
   datetime li_544 = 1320969600;
   datetime li_548 = 1321056000;
   datetime li_552 = 1322092800;
   datetime li_556 = 1322179200;
   datetime li_560 = 1324857600;
   datetime li_564 = 1324944000;
   datetime li_568 = 1325462400;
   datetime li_572 = 1325548800;
   bool li_576 = FALSE;
   int l_count_580 = 0;
   int l_count_584 = 0;
   for (int l_pos_588 = 0; l_pos_588 < l_ord_total_4; l_pos_588++) {
      OrderSelect(l_pos_588, SELECT_BY_POS, MODE_TRADES);
      if (OrderType() == OP_SELL && OrderSymbol() == Symbol()) l_count_580++;
      if (OrderType() == OP_BUY && OrderSymbol() == Symbol()) l_count_584++;
      if (OrderType() == OP_SELL || OrderType() == OP_BUY && OrderSymbol() == Symbol() && MagicNumber == OrderMagicNumber()) {
         li_576 = TRUE;
         if (OrderType() == OP_BUY && MagicNumber == OrderMagicNumber() && Symbol() == OrderSymbol()) {
            if (l_spread_168 > 25 * gd_332) return (0);
            if (IsTradeAllowed() == FALSE || IsConnected() == FALSE) return (0);
            if (UseStopLoss)
               if (Ask <= OrderOpenPrice() - gi_276 * Point) OrderClose(OrderTicket(), OrderLots(), Bid, g_slippage_268, MediumSeaGreen);
            if (UseTakeProfit)
               if (Bid >= OrderOpenPrice() + gd_280 * Point) OrderClose(OrderTicket(), OrderLots(), Bid, g_slippage_268, MediumSeaGreen);
            if (l_spread_168 > 25 * gd_332) return (0);
            if (!IsConnected()) {
               Sleep(1000);
               return (0);
            }
            if (li_356 == TRUE || (gi_484 == TRUE && li_448 == TRUE) || (gi_456 == TRUE && li_396 == TRUE)) li_0 = 3;
            if (IsTradeAllowed() == FALSE || IsConnected() == FALSE) return (0);
            if (li_0 == 3 && (gi_232 && !gi_512) || (!gi_232 && Bars != g_bars_504)) {
               OrderClose(OrderTicket(), OrderLots(), Bid, g_slippage_268, MediumSeaGreen);
               if (gi_228) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
               if (!gi_232) g_bars_504 = Bars;
               li_576 = FALSE;
            } else {
               if (gi_236 && gi_288 > 0) {
                  if (Bid - OrderOpenPrice() > Point * gi_288) {
                     if (InvisibleMode) {
                        if (OrderOpenPrice() - gi_516 * Point < Bid - Point * gi_288) gi_516 = (OrderOpenPrice() - (Bid - Point * gi_288)) / Point;
                     } else {
                        if (OrderStopLoss() < Bid - Point * gi_288) {
                           OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * gi_288, OrderTakeProfit(), 0, MediumSeaGreen);
                           if (!gi_232) g_bars_504 = Bars;
                        }
                     }
                  }
               }
            }
         } else {
            if (MagicNumber == OrderMagicNumber() && Symbol() == OrderSymbol()) {
               if (l_spread_168 > 2.0 * gd_332) return (0);
               if (IsTradeAllowed() == FALSE || IsConnected() == FALSE) return (0);
               if (UseStopLoss)
                  if (Bid >= OrderOpenPrice() + gi_276 * Point) OrderClose(OrderTicket(), OrderLots(), Ask, g_slippage_268, MediumSeaGreen);
               if (UseTakeProfit)
                  if (Ask <= OrderOpenPrice() - gd_280 * Point) OrderClose(OrderTicket(), OrderLots(), Ask, g_slippage_268, MediumSeaGreen);
               if (l_spread_168 > 25 * gd_332) return (0);
               if (!IsConnected()) {
                  Sleep(1000);
                  return (0);
               }
               if (li_352 == TRUE || (gi_484 == TRUE && li_452 == TRUE) || (gi_456 == TRUE && li_400 == TRUE)) li_0 = 4;
               if (IsTradeAllowed() == FALSE || IsConnected() == FALSE) return (0);
               if (li_0 == 4 && (gi_232 && !gi_512) || (!gi_232 && Bars != g_bars_504)) {
                  OrderClose(OrderTicket(), OrderLots(), Ask, g_slippage_268, DarkOrange);
                  if (gi_228) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
                  if (!gi_232) g_bars_504 = Bars;
                  li_576 = FALSE;
               } else {
                  if (gi_236 && gi_288 > 0) {
                     if (OrderOpenPrice() - Ask > Point * gi_288) {
                        if (InvisibleMode) {
                           if (OrderOpenPrice() + gi_516 * Point > Ask + Point * gi_288) gi_516 = (-OrderOpenPrice() + (Ask + Point * gi_288)) / Point;
                        } else {
                           if (OrderStopLoss() > Ask + Point * gi_288 || OrderStopLoss() == 0.0) {
                              OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * gi_288, OrderTakeProfit(), 0, DarkOrange);
                              if (!gi_232) g_bars_504 = Bars;
                           }
                        }
                     }
                  }
               }
            }
         }
      }
   }
   if (li_576 == TRUE) return (0);
   if (TimeCurrent() == lt_456 || TimeCurrent() == lt_460 || TimeCurrent() == lt_464 || TimeCurrent() == lt_468 || TimeCurrent() == lt_472 || TimeCurrent() == lt_476 ||
      TimeCurrent() == lt_480 || TimeCurrent() == li_484 || TimeCurrent() == li_488 || TimeCurrent() == li_492 || TimeCurrent() == li_496 || TimeCurrent() == li_500 || TimeCurrent() == li_504 ||
      TimeCurrent() == li_508 || TimeCurrent() == li_512 || TimeCurrent() == li_516 || TimeCurrent() == li_520 || TimeCurrent() == li_524 || TimeCurrent() == li_528 || TimeCurrent() == li_532 ||
      TimeCurrent() == li_536 || TimeCurrent() == li_540 || TimeCurrent() == li_544 || TimeCurrent() == li_548 || TimeCurrent() == li_552 || TimeCurrent() == li_556 || TimeCurrent() == li_560 ||
      TimeCurrent() == li_564 || TimeCurrent() == li_568 || TimeCurrent() == li_572) return (0);
   if (UseAutoGMT == TRUE && IsTesting() == FALSE) {
      if (TimeHour(l_str2time_112) <= TimeHour(l_str2time_120)) {
         if (TimeHour(l_str2time_136) < TimeHour(l_str2time_112)) return (0);
         if (TimeHour(l_str2time_136) == TimeHour(l_str2time_112) && TimeMinute(l_str2time_136) < TimeMinute(l_str2time_116)) return (0);
         if (TimeHour(l_str2time_136) == TimeHour(l_str2time_120) && TimeMinute(l_str2time_136) > TimeMinute(l_str2time_124)) return (0);
         if (TimeHour(l_str2time_136) > TimeHour(l_str2time_120)) return (0);
         if (TimeDayOfWeek(TimeCurrent()) == 1 && TimeHour(TimeCurrent()) < 11) return (0);
         if (TimeDayOfWeek(TimeCurrent()) == 5 && TimeHour(TimeCurrent()) > 11) return (0);
         if (TimeDayOfWeek(TimeCurrent()) < 1 || TimeDayOfWeek(TimeCurrent()) > 5) return (0);
      }
      if (TimeHour(l_str2time_112) > TimeHour(l_str2time_120)) {
         if (TimeHour(l_str2time_136) > TimeHour(l_str2time_120) && TimeHour(l_str2time_136) < TimeHour(l_str2time_112)) return (0);
         if (TimeHour(l_str2time_136) == TimeHour(l_str2time_112) && TimeMinute(l_str2time_136) < TimeMinute(l_str2time_116)) return (0);
         if (TimeHour(l_str2time_136) == TimeHour(l_str2time_120) && TimeMinute(l_str2time_136) > TimeMinute(l_str2time_124)) return (0);
         if (TimeDayOfWeek(TimeCurrent()) == 5 && TimeHour(l_str2time_136) == TimeHour(l_str2time_120) && TimeMinute(l_str2time_136) > TimeMinute(l_str2time_124)) return (0);
         if (TimeDayOfWeek(TimeCurrent()) == 5 && TimeHour(l_str2time_136) > TimeHour(l_str2time_120)) return (0);
         if (TimeDayOfWeek(TimeCurrent()) == 1 && TimeHour(TimeCurrent()) < 11) return (0);
         if (TimeDayOfWeek(TimeCurrent()) == 5 && TimeHour(TimeCurrent()) > 11) return (0);
         if (TimeDayOfWeek(TimeCurrent()) < 1 || TimeDayOfWeek(TimeCurrent()) > 5) return (0);
      }
   } else {
      if (TimeHour(l_str2time_112) <= TimeHour(l_str2time_120)) {
         if (TimeHour(TimeCurrent()) < TimeHour(l_str2time_112)) return (0);
         if (TimeHour(TimeCurrent()) == TimeHour(l_str2time_112) && TimeMinute(TimeCurrent()) < TimeMinute(l_str2time_116)) return (0);
         if (TimeHour(TimeCurrent()) == TimeHour(l_str2time_120) && TimeMinute(TimeCurrent()) > TimeMinute(l_str2time_124)) return (0);
         if (TimeHour(TimeCurrent()) > TimeHour(l_str2time_120)) return (0);
         if (TimeDayOfWeek(TimeCurrent()) == 1 && TimeHour(TimeCurrent()) < 11) return (0);
         if (TimeDayOfWeek(TimeCurrent()) == 5 && TimeHour(TimeCurrent()) > 11) return (0);
         if (TimeDayOfWeek(TimeCurrent()) < 1 || TimeDayOfWeek(TimeCurrent()) > 5) return (0);
      }
      if (TimeHour(l_str2time_112) > TimeHour(l_str2time_120)) {
         if (TimeHour(TimeCurrent()) > TimeHour(l_str2time_120) && TimeHour(TimeCurrent()) < TimeHour(l_str2time_112)) return (0);
         if (TimeHour(TimeCurrent()) == TimeHour(l_str2time_112) && TimeMinute(TimeCurrent()) < TimeMinute(l_str2time_116)) return (0);
         if (TimeHour(TimeCurrent()) == TimeHour(l_str2time_120) && TimeMinute(TimeCurrent()) > TimeMinute(l_str2time_124)) return (0);
         if (TimeDayOfWeek(TimeCurrent()) == 5 && TimeHour(TimeCurrent()) == TimeHour(l_str2time_120) && TimeMinute(TimeCurrent()) > TimeMinute(l_str2time_124)) return (0);
         if (TimeDayOfWeek(TimeCurrent()) == 5 && TimeHour(TimeCurrent()) > TimeHour(l_str2time_120)) return (0);
         if (TimeDayOfWeek(TimeCurrent()) == 1 && TimeHour(TimeCurrent()) < 11) return (0);
         if (TimeDayOfWeek(TimeCurrent()) == 5 && TimeHour(TimeCurrent()) > 11) return (0);
         if (TimeDayOfWeek(TimeCurrent()) < 1 || TimeDayOfWeek(TimeCurrent()) > 5) return (0);
      }
   }
   int l_count_592 = 0;
   int l_count_596 = 0;
   for (int l_count_600 = 0; l_count_600 <= OrdersHistoryTotal(); l_count_600++) {
      OrderSelect(OrdersHistoryTotal() - l_count_600, SELECT_BY_POS, MODE_HISTORY);
      if (TimeDayOfYear(OrderOpenTime()) == TimeDayOfYear(TimeCurrent()) && OrderProfit() < ld_208 / 1.2 && OrderSymbol() == Symbol() && MagicNumber == OrderMagicNumber()) l_count_596++;
      if (TimeDayOfYear(OrderCloseTime()) == TimeDayOfYear(TimeCurrent()) && TimeHour(OrderCloseTime()) == TimeHour(TimeCurrent()) && OrderProfit() < 0.0 && OrderSymbol() == Symbol() &&
         MagicNumber == OrderMagicNumber()) l_count_592++;
   }
   if (UseStopLoss == TRUE && l_count_596 > 0) return (0);
   if (l_count_592 >= 2) return (0);
   if (l_spread_168 > gd_260) return (0);
   if (!IsConnected()) {
      Sleep(1000);
      return (0);
   }
   if ((gi_484 == TRUE && li_440 == TRUE) || gi_484 == FALSE && (gi_476 == TRUE && li_420 == TRUE) || gi_476 == FALSE && gi_456 == FALSE || (gi_456 == TRUE && li_388 == TRUE) &&
      gi_420 == TRUE && li_292 == TRUE && (NFA == TRUE && l_count_580 == 0) || NFA == FALSE) li_0 = 1;
   if ((gi_484 == TRUE && li_444 == TRUE) || gi_484 == FALSE && (gi_476 == TRUE && li_424 == TRUE) || gi_476 == FALSE && gi_456 == FALSE || (gi_456 == TRUE && li_392 == TRUE) &&
      gi_424 == TRUE && li_280 == TRUE && (NFA == TRUE && l_count_584 == 0) || NFA == FALSE) li_0 = 2;
   if (li_0 == 1 && (gi_232 && !gi_512) || (!gi_232 && Bars != g_bars_504)) {
      if (!li_576) {
         if (AccountFreeMargin() - l_lots_200 * MarketInfo(Symbol(), MODE_MARGINREQUIRED) < AccountBalance() * ld_176) {
            Print("Account Free Margin Protection Enabled");
            return (0);
         }
         if (IsTradeAllowed() == FALSE || IsConnected() == FALSE) return (0);
         l_ticket_8 = 0;
         l_ticket_8 = OrderSend(Symbol(), OP_BUY, l_lots_200, Ask, g_slippage_268, 0, 0, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
         if (l_ticket_8 > 0) {
            if (OrderSelect(l_ticket_8, SELECT_BY_TICKET, MODE_TRADES)) {
               Print("BUY order opened : ", OrderOpenPrice());
               if (!InvisibleMode && UseStopLoss || UseTakeProfit && MagicNumber == OrderMagicNumber() && Symbol() == OrderSymbol()) {
                  if (UseStopLoss) l_price_12 = OrderOpenPrice() - gi_276 * Point - gd_332 * Point;
                  else l_price_12 = 0.0;
                  if (UseTakeProfit) l_price_20 = OrderOpenPrice() + gd_280 * Point;
                  else l_price_20 = 0.0;
                  while (!OrderModify(OrderTicket(), OrderOpenPrice(), l_price_12, l_price_20, 0, Blue)) RefreshRates();
               }
               if (gi_228) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
            } else Print("Error opening BUY order : ", GetLastError());
         }
         if (gi_232) gi_512 = TRUE;
         if (!gi_232) g_bars_504 = Bars;
         return (0);
      }
   }
   if (li_0 == 2 && (gi_232 && !gi_512) || (!gi_232 && Bars != g_bars_504)) {
      if (!li_576) {
         if (AccountFreeMargin() - l_lots_200 * MarketInfo(Symbol(), MODE_MARGINREQUIRED) < AccountBalance() * ld_176) {
            Print("Account Free Margin Protection Enabled");
            return (0);
         }
         if (IsTradeAllowed() == FALSE || IsConnected() == FALSE) return (0);
         l_ticket_8 = 0;
         l_ticket_8 = OrderSend(Symbol(), OP_SELL, l_lots_200, Bid, g_slippage_268, 0, 0, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
         if (l_ticket_8 > 0) {
            if (OrderSelect(l_ticket_8, SELECT_BY_TICKET, MODE_TRADES)) {
               Print("SELL order opened : ", OrderOpenPrice());
               if (!InvisibleMode && UseStopLoss || UseTakeProfit && MagicNumber == OrderMagicNumber() && Symbol() == OrderSymbol()) {
                  if (UseStopLoss) l_price_12 = OrderOpenPrice() + gi_276 * Point;
                  else l_price_12 = 0.0;
                  if (UseTakeProfit) l_price_20 = OrderOpenPrice() - gd_280 * Point - gd_332 * Point;
                  else l_price_20 = 0.0;
                  while (!OrderModify(OrderTicket(), OrderOpenPrice(), l_price_12, l_price_20, 0, Blue)) RefreshRates();
               }
               if (gi_228) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
            } else Print("Error opening SELL order : ", GetLastError());
         }
         if (gi_232) gi_512 = TRUE;
         if (!gi_232) g_bars_504 = Bars;
         return (0);
      }
   }
   if (!gi_232) g_bars_504 = Bars;
   return (0);
}

string FormatDateTime(int ai_0, int ai_4, int ai_8, int ai_12, int ai_16, int ai_20) {
   string ls_24 = ai_4 + 100;
   ls_24 = StringSubstr(ls_24, 1);
   string ls_32 = ai_8 + 100;
   ls_32 = StringSubstr(ls_32, 1);
   string ls_40 = ai_12 + 100;
   ls_40 = StringSubstr(ls_40, 1);
   string ls_48 = ai_16 + 100;
   ls_48 = StringSubstr(ls_48, 1);
   string ls_56 = ai_20 + 100;
   ls_56 = StringSubstr(ls_56, 1);
   return (StringConcatenate(ai_0, ".", ls_24, ".", ls_32, " ", ls_40, ":", ls_48, ":", ls_56));
}