#property copyright "www.aitrader.org"
#property link      ""

extern int Magic = 12345;
extern string EA_Comment = "www.aitrader.org";
bool gi_88 = TRUE;
bool gi_92 = TRUE;
bool gi_96 = TRUE;
bool gi_100 = TRUE;
extern double MaxSpread = 3.5;
extern int Slippage = 2;
extern bool NFA = FALSE;
bool gi_120 = FALSE;
extern bool AutoGMT_Offset = TRUE;
extern int ManualGMT_Offset = 2;
bool gi_132 = TRUE;
extern string CS = "==== Settings ====";
bool gi_144 = TRUE;
int gi_148 = 10;
int gi_152 = 3;
int gi_156 = 0;
int gi_160 = 0;
int gi_164 = 0;
int gi_168 = 0;
bool gi_172 = FALSE;
string gs_gbpusd_176 = "GBPUSD";
extern string MM = "==== Risk Management ====";
extern bool RecoveryMode = FALSE;
extern double FixedLots = 0.01;
extern double AutoMM = 0.0;
extern double AutoMM_Max = 5.0;
int gi_220;
int gi_224;
int gi_228;
bool gi_232;
bool gi_236;
int gi_240;
int gi_244;
int gi_248;
int gi_252;
int gi_256;
int gi_260;
int gi_264;
int gi_268;
int gi_272;
int gi_276;
int gi_280;
int gi_284;
int gi_288;
int gi_292;
int gi_296;
int gi_300;
int gi_304;
int gi_308;
int gi_312;
int gi_316;
int gi_320;
int gi_324;
int gi_328;
int gi_332;
int gi_336;
int gi_340;
int gi_344;
int gi_348;
bool gi_352;
int gi_356;
int gi_360 = 100;
int gi_364 = 0;
int gi_368 = 0;
int gi_372 = 0;
int gi_376 = 0;
int gi_380 = 0;
int gi_384 = 0;
int gi_388 = 0;
int gi_392 = 0;
int gi_396 = 0;
int gi_400 = 0;
int gi_404 = 0;
int gi_408 = 0;
int gi_412 = -1;
int gi_416 = 0;
int gi_420 = 0;
int gi_424 = 0;
int gi_428 = 0;
int gi_432 = 0;
int gi_436 = 0;
int gi_440 = 0;
int gi_444 = 0;
int gi_448 = 0;
int gi_452 = 0;
int gi_456 = 0;
int gi_460 = 100;
double gd_464 = 10.0;
double gd_472 = 1.05;
int gi_480 = 3;
int gi_484 = 3;
int gi_488 = 0;
int gi_492 = 0;
int gi_496 = -1;
string gs_500 = "";
int gi_508 = 2;
bool gi_512 = TRUE;
bool gi_516 = FALSE;
int gi_520 = 0;
double gd_524 = 0.01;
double gd_532 = 0.10;
double gd_540 = 1.5;
int gi_548 = 100000;
double gd_552 = 1000.0;
double gd_560 = 0.0001;
double gd_568 = 0.1;
int gi_576 = 0;
double gd_580 = 1.0;

// E37F0136AA3FFAF149B351F6A4C948E9
void init() {
   gi_512 = TRUE;
   gi_496 = -1;
   Comment("");
   if (ObjectFind("BKGR") >= 0) ObjectDelete("BKGR");
   if (ObjectFind("BKGR2") >= 0) ObjectDelete("BKGR2");
   if (ObjectFind("BKGR3") >= 0) ObjectDelete("BKGR3");
   if (ObjectFind("BKGR4") >= 0) ObjectDelete("BKGR4");
   if (ObjectFind("LV") >= 0) ObjectDelete("LV");
}

// 52D46093050F38C27267BCE42543EF60
int deinit() {
   Comment("");
   if (ObjectFind("BKGR") >= 0) ObjectDelete("BKGR");
   if (ObjectFind("BKGR2") >= 0) ObjectDelete("BKGR2");
   if (ObjectFind("BKGR3") >= 0) ObjectDelete("BKGR3");
   if (ObjectFind("BKGR4") >= 0) ObjectDelete("BKGR4");
   if (ObjectFind("LV") >= 0) ObjectDelete("LV");
   if (gi_496 != -1) gi_496 = f0_13();
   return (0);
}

// EA2B2676C28C0DB26D39331A336C6B92
int start() {
   double ld_0;
   color li_8;
   int li_12;
   int li_16;
   string ls_20;
   string ls_28;
   /*if ((!IsDemo()) || !IsTesting()) {
      Alert("用于真实账户请联系QQ:16005673");
      return (0);
   }*/
   string ls_36 = "";
   double ld_44 = 0;
   double ld_52 = 0;
   double ld_60 = 0;
   double ld_68 = 0;
   double ld_76 = 0;
   double ld_84 = 1;
   if (DayOfWeek() == 1 && iVolume(NULL, PERIOD_D1, 0) < 5.0) return (0);
   if (StringLen(Symbol()) < 6) return (0);
   if (gi_512) {
      Comment("\nInitializing ...");
      Sleep(1000);
      RefreshRates();
      gi_512 = FALSE;
      gi_520 = MarketInfo(Symbol(), MODE_STOPLEVEL);
      gd_524 = MarketInfo(Symbol(), MODE_MINLOT);
      gd_532 = MarketInfo(Symbol(), MODE_MAXLOT);
      gi_548 = MarketInfo(Symbol(), MODE_LOTSIZE);
      gd_540 = MarketInfo(Symbol(), MODE_LOTSTEP);
      gd_552 = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
      if (Digits <= 3) gd_560 = 0.01;
      else gd_560 = 0.0001;
      if (Digits == 3 || Digits == 5) gd_568 = 0.1;
      else gd_568 = 1;
      Sleep(1000);
      gi_516 = TRUE;
      Sleep(1000);
      if (!gi_516) gi_512 = TRUE;
   }
   if (!IsTesting() && Period() != PERIOD_M15) {
      Comment("\nPlease, swich to M15 chart!");
      Alert("Please, swich to M15 chart!");
      Sleep(10000);
      return (0);
   }
   if (gi_496 <= 0) {
      if (!gi_516) {
         Comment("\nInternet connection problem");
         Alert("Internet connection problem");
         Sleep(10000);
         return (0);
      }
      gi_496 = f0_10();
      Sleep(1000);
      if (gi_496 < 0) Comment("\nInitializing ...");
   }
   if (gi_496 <= 0) {
      if (gi_496 == -1) {
         Comment("\nAccount login check is failed! Please, start Forex Esteem, after successful login in your MT4 account!");
         Alert("Account login check is failed! Please, start Forex Esteem, after successful login in your MT4 account!");
      } else {
         if (gi_496 == -2) {
            Comment("\nOnline authorization is failed! Please, register your account and restart your MT4 platform!");
            Alert("Online authorization is failed! Please, register your account and restart your MT4 platform!");
         } else {
            if (gi_496 == -7) {
               Comment("\nInaccurate local system time! Please, synchronize your computer system time and then restart your MT4 platform!");
               Alert("Inaccurate local system time! Please, synchronize your computer system time and then restart your MT4 platform!");
            } else {
               if (gi_496 == -8) {
                  Comment("\nUnsupported currency pair " + gs_500 + ", Bid: " + DoubleToStr(Bid, Digits) + ", Ask: " + DoubleToStr(Ask, Digits) + ". Supported currency pairs: GBPUSD and EURUSD(Premium license only)");
                  Alert("Unsupported currency pair " + gs_500 + ", Bid: " + DoubleToStr(Bid, Digits) + ", Ask: " + DoubleToStr(Ask, Digits) + ". Supported currency pairs: GBPUSD and EURUSD(Premium license only)");
               } else {
                  if (gi_496 == -9) {
                     Comment("\nLocal authorization check is failed! Please, restart MT4 platform!");
                     Alert("Local authorization check is failed! Please, restart MT4 platform!");
                  } else {
                     Comment("\nInitialization is failed with error code " + DoubleToStr(gi_496, 0));
                     Alert("Initialization is failed with error code " + DoubleToStr(gi_496, 0));
                  }
               }
            }
         }
      }
      Sleep(10000);
      return (0);
   }
   if (gi_156 <= 0 || gi_160 <= 0 || gi_364 <= 0 || gi_368 <= 0 || gi_384 <= 0) {
      Comment("\nWrong initialization parameters for pair " + Symbol());
      Alert("Wrong initialization parameters for pair " + Symbol());
      Sleep(10000);
      return (0);
   }
   double ld_92 = 0;
   double ld_100 = 0;
   double ld_108 = 0;
   double ld_116 = 0;
   double ld_124 = 0;
   double ld_132 = 0;
   bool li_140 = FALSE;
   bool li_144 = FALSE;
   int li_148 = 0;
   int li_152 = 0;
   int li_156 = 0;
   int li_160 = 0;
   int li_164 = 0;
   int li_168 = 0;
   double ld_172 = 0;
   if (StringSubstr(AccountCurrency(), 0, 3) == "JPY") {
      ld_172 = MarketInfo("USDJPY" + StringSubstr(Symbol(), 6), MODE_BID);
      if (ld_172 > 0.1) ld_84 = ld_172;
      else ld_84 = 83;
   }
   if (StringSubstr(AccountCurrency(), 0, 3) == "GBP") {
      ld_172 = MarketInfo("GBPUSD" + StringSubstr(Symbol(), 6), MODE_BID);
      if (ld_172 > 0.1) ld_84 = 1 / ld_172;
      else ld_84 = 0.6329113924;
   }
   if (StringSubstr(AccountCurrency(), 0, 3) == "EUR") {
      ld_172 = MarketInfo("EURUSD" + StringSubstr(Symbol(), 6), MODE_BID);
      if (ld_172 > 0.1) ld_84 = 1 / ld_172;
      else ld_84 = 0.7575757576;
   }
   ld_52 = MathCeil(1.0 / ld_84 / 100.0 * AccountBalance() / gd_540 / (gi_548 / 100)) * gd_540;
   if (AutoMM > 0.0 && (!RecoveryMode)) ld_44 = MathMax(gd_524, MathMin(gd_532, MathCeil(MathMin(AutoMM_Max, AutoMM) / ld_84 / 100.0 * AccountFreeMargin() / gd_540 / (gi_548 / 100)) * gd_540));
   if (AutoMM > 0.0 && RecoveryMode) ld_44 = f0_9();
   if (AutoMM == 0.0) ld_44 = FixedLots;
   double ld_180 = 0;
   double ld_188 = 0;
   double ld_196 = 0;
   double ld_204 = 0;
   for (int li_212 = 0; li_212 <= OrdersTotal() - 1; li_212++) {
      if (!OrderSelect(li_212, SELECT_BY_POS, MODE_TRADES)) Print("Error in OrderSelect! Position:", li_212);
      else {
         if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
            if (OrderMagicNumber() != Magic) {
               if (OrderType() == OP_BUY) li_164++;
               else li_168++;
            }
            if (OrderMagicNumber() == Magic) {
               ld_76 += OrderProfit();
               if (OrderType() == OP_BUY) ld_60 = (Bid - OrderOpenPrice()) / gd_560;
               else ld_60 = (OrderOpenPrice() - Ask) / gd_560;
               ld_68 += ld_60;
               if (OrderType() == OP_BUY) {
                  li_156++;
                  ld_108 += OrderOpenPrice() * OrderLots();
                  ld_124 += OrderLots();
                  li_148 = MathMax(li_148, OrderOpenTime());
                  if (ld_92 < Point || OrderOpenPrice() < ld_92) ld_92 = OrderOpenPrice();
                  if (!((gi_164 > 0 || gi_168 > 0))) continue;
                  if (ld_180 < Point && ld_188 < Point) {
                     ld_180 = OrderStopLoss();
                     ld_188 = OrderTakeProfit();
                  }
                  if (ld_180 < Point && ld_188 < Point) {
                     if (gi_168 > 0) ld_180 = MathMin(OrderOpenPrice() - gi_168 * gd_560, Bid - gi_520 * Point);
                     if (gi_164 > 0) ld_188 = MathMax(OrderOpenPrice() + gi_164 * gd_560, Ask + gi_520 * Point);
                  }
                  if (!((OrderStopLoss() < Point && OrderTakeProfit() < Point))) continue;
                  if (!((MathAbs(ld_180 - OrderStopLoss()) >= Point || MathAbs(ld_188 - OrderTakeProfit()) >= Point))) continue;
                  OrderModify(OrderTicket(), OrderOpenPrice(), ld_180, ld_188, 0, CLR_NONE);
                  continue;
               }
               li_160++;
               ld_116 += OrderOpenPrice() * OrderLots();
               ld_132 += OrderLots();
               li_152 = MathMax(li_152, OrderOpenTime());
               if (ld_100 < Point || OrderOpenPrice() > ld_100) ld_100 = OrderOpenPrice();
               if (gi_164 > 0 || gi_168 > 0) {
                  if (ld_196 < Point && ld_204 < Point) {
                     ld_196 = OrderStopLoss();
                     ld_204 = OrderTakeProfit();
                  }
                  if (ld_196 < Point && ld_204 < Point) {
                     if (gi_168 > 0) ld_196 = MathMax(OrderOpenPrice() + gi_168 * gd_560, Ask + gi_520 * Point);
                     if (gi_164 > 0) ld_204 = MathMin(OrderOpenPrice() - gi_164 * gd_560, Bid - gi_520 * Point);
                  }
                  if (OrderStopLoss() < Point && OrderTakeProfit() < Point)
                     if (MathAbs(ld_196 - OrderStopLoss()) >= Point || MathAbs(ld_204 - OrderTakeProfit()) >= Point) OrderModify(OrderTicket(), OrderOpenPrice(), ld_196, ld_204, 0, CLR_NONE);
               }
            }
         }
      }
   }
   if (li_156 > 0 && ld_124 > 0.0) ld_108 = NormalizeDouble(ld_108 / ld_124, Digits);
   if (li_160 > 0 && ld_132 > 0.0) ld_116 = NormalizeDouble(ld_116 / ld_132, Digits);
   if ((!IsTesting()) || IsVisualMode()) {
      if ((!IsTesting() || TimeCurrent() >= gi_576 + 1) || !gi_144 || iVolume(NULL, PERIOD_M1, 0) <= 1.0) {
         gi_576 = TimeCurrent();
         li_16 = 5737262;
         if (IsTesting()) gi_132 = FALSE;
         if (gi_132 == TRUE) ls_20 = "YES";
         if (gi_132 == FALSE) ls_20 = "NO";
         ls_36 = ls_36 
         + "\n -----------------------------------------------";
         if (RecoveryMode) {
            ls_36 = ls_36 
            + "\n  Recovery Mode - ENABLED";
         } else {
            ls_36 = ls_36 
            + "\n  Recovery Mode - DISABLED";
         }
         ls_36 = ls_36 
         + "\n -----------------------------------------------";
         ls_36 = ls_36 
         + "\n  Account Ballance = " + DoubleToStr(AccountBalance(), 2);
         if (li_156 == 0 && li_160 == 0) {
            ls_36 = ls_36 
               + "\n  No active trades" 
            + "\n";
         } else {
            if (li_156 > 0) {
               ls_36 = ls_36 
               + "\n  Buy average price " + DoubleToStr(ld_108, Digits);
            }
            if (li_160 > 0) {
               ls_36 = ls_36 
               + "\n  Sell average price " + DoubleToStr(ld_116, Digits);
            }
            ls_36 = ls_36 
               + "\n  Current trade " + DoubleToStr(ld_68, 1) + " pips" 
            + "\n  Account Profit = " + DoubleToStr(ld_76, 2);
         }
         Comment(ls_36);
      }
   }
   if (IsTesting() && StringSubstr(Symbol(), 0, 6) == "EURUSD" && Year() < 2008) return (0);
   if (IsTesting() && StringSubstr(Symbol(), 0, 6) == "GBPUSD" && Year() < 2008 || (Year() == 2008 && Month() < 5)) return (0);
   if (gi_144 && iVolume(NULL, PERIOD_M1, 0) > 1.0) return (0);
   HideTestIndicators(TRUE);
   double ld_216 = iOpen(NULL, PERIOD_M1, 1);
   double ld_224 = iClose(NULL, PERIOD_M1, 1);
   double ld_232 = iBands(NULL, PERIOD_M15, gi_364, 2, 0, PRICE_CLOSE, MODE_UPPER, 1);
   double ld_240 = iBands(NULL, PERIOD_M15, gi_364, 2, 0, PRICE_CLOSE, MODE_LOWER, 1);
   double ld_248 = iBands(NULL, PERIOD_M15, gi_368, 2, 0, PRICE_CLOSE, MODE_UPPER, 1);
   double ld_256 = iBands(NULL, PERIOD_M15, gi_368, 2, 0, PRICE_CLOSE, MODE_LOWER, 1);
   double ld_264 = iMA(NULL, PERIOD_H4, gi_384, 0, MODE_SMMA, PRICE_CLOSE, 1);
   double ld_272 = iMA(NULL, PERIOD_H4, gi_392, 0, MODE_SMMA, PRICE_CLOSE, 1);
   double ld_280 = iATR(NULL, PERIOD_M15, gi_364, 1);
   double ld_288 = iRSI(NULL, PERIOD_M15, 0, gi_364, 1);
   double ld_296 = iATR(NULL, PERIOD_H4, gi_384, 1);
   double ld_304 = iRSI(NULL, PERIOD_H4, 0, gi_384, 1);
   double ld_312 = iBands(NULL, PERIOD_H4, gi_428, 2, 0, PRICE_CLOSE, MODE_UPPER, 1);
   double ld_320 = iBands(NULL, PERIOD_H4, gi_428, 2, 0, PRICE_CLOSE, MODE_LOWER, 1);
   double ld_328 = iBands(NULL, PERIOD_M15, gi_456, 2, 0, PRICE_CLOSE, MODE_UPPER, 1);
   double ld_336 = iBands(NULL, PERIOD_M15, gi_456, 2, 0, PRICE_CLOSE, MODE_LOWER, 1);
   HideTestIndicators(FALSE);
   if (li_156 > 0) {
      if (f0_6(gi_496, ld_224, ld_232 + gi_380 * gd_560, ld_240 - gi_380 * gd_560, Bid, f0_11(), ld_280, ld_288) == 0) li_140 = TRUE;
      if ((Bid >= ld_108 + gi_156 * gd_560 && f0_0(gi_496, TimeCurrent() - li_148, ld_296, ld_304)) || Bid <= ld_108 - gi_160 * gd_560) li_140 = TRUE;
      if (Bid >= ld_108 + gi_400 * gd_560 && f0_1(gi_496, TimeCurrent() - li_148, ld_296, ld_304)) li_140 = TRUE;
      if (Bid >= ld_108 + gi_408 * gd_560 && ld_216 > ld_224) li_140 = TRUE;
   }
   if (li_160 > 0) {
      if (f0_6(gi_496, ld_224, ld_232 + gi_380 * gd_560, ld_240 - gi_380 * gd_560, Bid, f0_11(), ld_280, ld_288) == 1) li_144 = TRUE;
      if ((Ask <= ld_116 - gi_156 * gd_560 && f0_0(gi_496, TimeCurrent() - li_152, ld_296, ld_304)) || Ask >= ld_116 + gi_160 * gd_560) li_144 = TRUE;
      if (Ask <= ld_116 - gi_400 * gd_560 && f0_1(gi_496, TimeCurrent() - li_152, ld_296, ld_304)) li_144 = TRUE;
      if (Ask <= ld_116 - gi_408 * gd_560 && ld_216 < ld_224) li_144 = TRUE;
   }
   if (li_140 || li_144) {
      for (li_212 = 0; li_212 <= OrdersTotal() - 1; li_212++) {
         if (!OrderSelect(li_212, SELECT_BY_POS, MODE_TRADES)) Print("Error in OrderSelect! Position:", li_212);
         else {
            if (OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {
               if (OrderType() == OP_BUY && li_140) {
                  for (int li_344 = 1; li_344 <= MathMax(1, gi_480); li_344++) {
                     RefreshRates();
                     if (OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), Slippage, Violet)) {
                        li_156--;
                        li_212--;
                        break;
                     }
                     Sleep(MathMax(100, 1000 * gi_484));
                  }
                  Sleep(5000);
                  continue;
               }
               if (OrderType() == OP_SELL && li_144) {
                  for (li_344 = 1; li_344 <= MathMax(1, gi_480); li_344++) {
                     RefreshRates();
                     if (OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), Slippage, Violet)) {
                        li_160--;
                        li_212--;
                        break;
                     }
                     Sleep(MathMax(100, 1000 * gi_484));
                  }
                  Sleep(5000);
               }
            }
         }
      }
   }
   bool li_348 = TRUE;
   bool li_352 = TRUE;
   if (NFA == TRUE && li_160 > 0 || li_168 > 0 || li_164 > 0) li_348 = FALSE;
   if (NFA == TRUE && li_156 > 0 || li_164 > 0 || li_168 > 0) li_352 = FALSE;
   if (gi_120 == TRUE && li_160 > 0 || li_168 > 0) li_348 = FALSE;
   if (gi_120 == TRUE && li_156 > 0 || li_164 > 0) li_352 = FALSE;
   if (OrdersTotal() >= gi_360) return (0);
   if (DayOfWeek() == 5 && Hour() >= gi_508 && f0_11() >= gi_412) return (0);
   if (ld_248 - ld_256 < gi_404 * gd_560) return (0);
   int li_356 = -1;
   if (li_156 <= gi_152) {
      if ((li_156 < 1 && gi_88 == TRUE && f0_8(gi_496, Bid, ld_248 + gi_372 * gd_560, ld_248 + gi_376 * gd_560, ld_256 - gi_372 * gd_560, ld_256 - gi_376 * gd_560, MathMin(ld_264 +
         gi_388 * gd_560, ld_272 + gi_396 * gd_560), MathMax(ld_264 - gi_388 * gd_560, ld_272 - gi_396 * gd_560)) == 0) || (li_156 < 1 && gi_92 == TRUE && f0_7(gi_496, Bid,
         ld_248 + gi_372 * gd_560, ld_248 + gi_376 * gd_560, ld_256 - gi_372 * gd_560, ld_256 - gi_376 * gd_560, f0_11()) == 0) || (li_156 < 1 && gi_96 == TRUE && f0_4(gi_496,
         Bid, MathMax(ld_248 + gi_416 * gd_560, ld_312 - gi_424 * gd_560), MathMin(ld_256 - gi_416 * gd_560, ld_320 + gi_424 * gd_560), iHigh(NULL, PERIOD_H4, 1), iLow(NULL,
         PERIOD_H4, 1), ld_312 + gi_420 * gd_560, ld_320 - gi_420 * gd_560, ld_312 - ld_320, gi_432 * gd_560) == 0) || (li_156 < 1 && gi_100 == TRUE && f0_12(gi_496, Bid,
         MathMax(ld_328 + gi_436 * gd_560, iMA(NULL, PERIOD_H1, gi_440, 0, MODE_SMA, PRICE_CLOSE, 1) + gi_444 * gd_560), iMA(NULL, PERIOD_H1, gi_448, 0, MODE_SMMA, PRICE_CLOSE,
         1) - gi_452 * gd_560, MathMin(ld_336 - gi_436 * gd_560, iMA(NULL, PERIOD_H1, gi_440, 0, MODE_SMA, PRICE_CLOSE, 1) - gi_444 * gd_560), iMA(NULL, PERIOD_H1, gi_448,
         0, MODE_SMMA, PRICE_CLOSE, 1) + gi_452 * gd_560) == 0) || (li_156 >= 1 && Ask < ld_92 - gi_148 * gd_560)) {
         if (Ask - Bid > MaxSpread * gd_560) {
            Print("BUY not taken!!! - High spead...");
            Sleep(1000);
         } else {
            if (!li_348) {
               Print("BUY not taken!!! - No Hedge, or FIFO restriction ...");
               Sleep(1000);
            } else {
               ls_28 = "BUY";
               li_356 = 0;
               li_8 = Aqua;
               RefreshRates();
               ld_0 = NormalizeDouble(Ask, Digits);
            }
         }
      }
   }
   if (li_160 <= gi_152) {
      if ((li_160 < 1 && gi_88 == TRUE && f0_8(gi_496, Bid, ld_248 + gi_372 * gd_560, ld_248 + gi_376 * gd_560, ld_256 - gi_372 * gd_560, ld_256 - gi_376 * gd_560, MathMin(ld_264 +
         gi_388 * gd_560, ld_272 + gi_396 * gd_560), MathMax(ld_264 - gi_388 * gd_560, ld_272 - gi_396 * gd_560)) == 1) || (li_160 < 1 && gi_92 == TRUE && f0_7(gi_496, Bid,
         ld_248 + gi_372 * gd_560, ld_248 + gi_376 * gd_560, ld_256 - gi_372 * gd_560, ld_256 - gi_376 * gd_560, f0_11()) == 1) || (li_160 < 1 && gi_96 == TRUE && f0_4(gi_496,
         Bid, MathMax(ld_248 + gi_416 * gd_560, ld_312 - gi_424 * gd_560), MathMin(ld_256 - gi_416 * gd_560, ld_320 + gi_424 * gd_560), iHigh(NULL, PERIOD_H4, 1), iLow(NULL,
         PERIOD_H4, 1), ld_312 + gi_420 * gd_560, ld_320 - gi_420 * gd_560, ld_312 - ld_320, gi_432 * gd_560) == 1) || (li_160 < 1 && gi_100 == TRUE && f0_12(gi_496, Bid,
         MathMax(ld_328 + gi_436 * gd_560, iMA(NULL, PERIOD_H1, gi_440, 0, MODE_SMA, PRICE_CLOSE, 1) + gi_444 * gd_560), iMA(NULL, PERIOD_H1, gi_448, 0, MODE_SMMA, PRICE_CLOSE,
         1) - gi_452 * gd_560, MathMin(ld_336 - gi_436 * gd_560, iMA(NULL, PERIOD_H1, gi_440, 0, MODE_SMA, PRICE_CLOSE, 1) - gi_444 * gd_560), iMA(NULL, PERIOD_H1, gi_448,
         0, MODE_SMMA, PRICE_CLOSE, 1) + gi_452 * gd_560) == 1) || (li_160 >= 1 && Bid > ld_100 + gi_148 * gd_560)) {
         if (Ask - Bid > MaxSpread * gd_560) {
            Print("SELL not taken!!! - High spead...");
            Sleep(1000);
         } else {
            if (!li_352) {
               Print("SELL not taken!!! - No Hedge, or FIFO restriction ...");
               Sleep(1000);
            } else {
               ls_28 = "SELL";
               li_356 = 1;
               li_8 = Red;
               RefreshRates();
               ld_0 = NormalizeDouble(Bid, Digits);
            }
         }
      }
   }
   if (li_356 >= OP_BUY && f0_14()) {
      for (li_344 = 1; li_344 <= MathMax(1, gi_480); li_344++) {
         li_12 = OrderSend(Symbol(), li_356, ld_44, ld_0, Slippage * (gd_560 / Point), 0, 0, EA_Comment, Magic, 0, li_8);
         if (li_12 >= 0) break;
         Sleep(MathMax(100, 1000 * gi_484));
         RefreshRates();
         if (li_356 == OP_BUY) ld_0 = NormalizeDouble(Ask, Digits);
         else
            if (li_356 == OP_SELL) ld_0 = NormalizeDouble(Bid, Digits);
      }
      Sleep(1000);
      if (li_12 > 0) {
         if (OrderSelect(li_12, SELECT_BY_TICKET, MODE_TRADES)) {
            Print("Order " + ls_28 + " opened!: ", OrderOpenPrice());
            if (gi_164 > 0 || gi_168 > 0) {
               if (OrderType() == OP_BUY) {
                  if (li_156 == 0) {
                     ld_180 = 0;
                     ld_188 = 0;
                     if (gi_168 > 0) ld_180 = MathMin(OrderOpenPrice() - gi_168 * gd_560, Bid - gi_520 * Point);
                     if (gi_164 > 0) ld_188 = MathMax(OrderOpenPrice() + gi_164 * gd_560, Ask + gi_520 * Point);
                  }
                  if (MathAbs(ld_180 - OrderStopLoss()) >= Point || MathAbs(ld_188 - OrderTakeProfit()) >= Point) OrderModify(OrderTicket(), OrderOpenPrice(), ld_180, ld_188, 0, CLR_NONE);
               } else {
                  if (OrderType() == OP_SELL) {
                     if (li_160 == 0) {
                        ld_196 = 0;
                        ld_204 = 0;
                        if (gi_168 > 0) ld_196 = MathMax(OrderOpenPrice() + gi_168 * gd_560, Ask + gi_520 * Point);
                        if (gi_164 > 0) ld_204 = MathMin(OrderOpenPrice() - gi_164 * gd_560, Bid - gi_520 * Point);
                     }
                     if (MathAbs(ld_196 - OrderStopLoss()) >= Point || MathAbs(ld_204 - OrderTakeProfit()) >= Point) OrderModify(OrderTicket(), OrderOpenPrice(), ld_196, ld_204, 0, CLR_NONE);
                  }
               }
            }
         }
      } else Print("Error opening " + ls_28 + " order!: ", GetLastError());
      Sleep(4000);
   }
   return (0);
}

// 78BAA8FAE18F93570467778F2E829047
double f0_9() {
   double ld_0;
   int li_8;
   double ld_12;
   int li_20;
   double ld_24;
   int li_32;
   double ld_36;
   int li_44;
   double ld_48 = 1;
   if (gd_472 > 0.0 && AutoMM > 0.0) {
      ld_0 = 0;
      li_8 = 0;
      ld_12 = 0;
      li_20 = 0;
      ld_24 = 0;
      li_32 = 0;
      for (int li_56 = OrdersHistoryTotal() - 1; li_56 >= 0; li_56--) {
         if (OrderSelect(li_56, SELECT_BY_POS, MODE_HISTORY)) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {
               li_8++;
               ld_0 += OrderProfit();
               if (ld_0 > ld_24) {
                  ld_24 = ld_0;
                  li_32 = li_8;
               }
               if (ld_0 < ld_12) {
                  ld_12 = ld_0;
                  li_20 = li_8;
               }
               if (li_8 >= gi_460) break;
            }
         }
      }
      if (li_32 <= li_20) ld_48 = MathPow(gd_472, li_20);
      else {
         ld_0 = ld_24;
         li_8 = li_32;
         ld_36 = ld_24;
         li_44 = li_32;
         for (li_56 = OrdersHistoryTotal() - li_32 - 1; li_56 >= 0; li_56--) {
            if (OrderSelect(li_56, SELECT_BY_POS, MODE_HISTORY)) {
               if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {
                  if (li_8 >= gi_460) break;
                  li_8++;
                  ld_0 += OrderProfit();
                  if (ld_0 < ld_36) {
                     ld_36 = ld_0;
                     li_44 = li_8;
                  }
               }
            }
         }
         if (li_44 == li_32 || ld_36 == ld_24) ld_48 = MathPow(gd_472, li_20);
         else {
            if (MathAbs(ld_12 - ld_24) / MathAbs(ld_36 - ld_24) >= (gd_464 + 100.0) / 100.0) ld_48 = MathPow(gd_472, li_20);
            else ld_48 = MathPow(gd_472, li_44);
         }
      }
   }
   for (double ld_60 = MathMax(gd_524, MathMin(gd_532, MathCeil(MathMin(AutoMM_Max, ld_48 * AutoMM) / 100.0 * AccountFreeMargin() / gd_540 / (gi_548 / 100)) * gd_540)); ld_60 >= 2.0 * gd_524 &&
      1.05 * (ld_60 * gd_552) >= AccountFreeMargin(); ld_60 -= gd_524) {
   }
   return (ld_60);
}

// D1DDCE31F1A86B3140880F6B1877CBF8
int f0_14() {
   int li_0;
   bool li_4 = TRUE;
   if (gi_488 > 0 && gi_492 > 0) {
      li_0 = 0;
      for (int li_8 = OrdersHistoryTotal() - 1; li_8 >= 0; li_8--) {
         if (OrderSelect(li_8, SELECT_BY_POS, MODE_HISTORY)) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {
               if (!(((OrderType() == OP_BUY && (OrderClosePrice() - OrderOpenPrice()) / gd_560 <= (-gi_488)) || (OrderType() == OP_SELL && (OrderOpenPrice() - OrderClosePrice()) / gd_560 <= (-gi_488))))) break;
               li_0 = OrderCloseTime();
               break;
            }
         }
      }
      if (TimeCurrent() - li_0 < 3600 * gi_492) li_4 = FALSE;
   }
   return (li_4);
}

// 9B1AEE847CFB597942D106A4135D4FE6
int f0_11() {
   int li_0 = Hour();
   li_0 -= gi_508;
   if (IsTesting()) gi_132 = FALSE;
   if (gi_132 == TRUE && (Month() > 3 && Month() < 11)) li_0++;
   if (li_0 > 23) li_0 -= 24;
   if (li_0 < 0) li_0 += 24;
   return (li_0);
}

// 945D754CB0DC06D04243FCBA25FC0802
int f0_10() {
   if (gi_172) gs_500 = StringSubstr(gs_gbpusd_176, 0, 6);
   else gs_500 = StringSubstr(Symbol(), 0, 6);
   int li_0 = f0_3(AccountNumber(), IsTesting(), IsDemo(), WindowHandle(Symbol(), Period()), gs_500, TimeCurrent());
   if (li_0 == -8 && StringFind(",GBPUSD,", "," + gs_500 + ",") >= 0) {
      Comment("\nUpdating settings (" + gs_500 + ")...");
      li_0 = f0_2(AccountNumber(), IsTesting(), IsDemo(), WindowHandle(Symbol(), Period()), gs_500);
      Sleep(3000);
      li_0 = f0_3(AccountNumber(), IsTesting(), IsDemo(), WindowHandle(Symbol(), Period()), gs_500, TimeCurrent());
   }
   if (li_0 >= 0) {
      if (!IsTesting() && AutoGMT_Offset == TRUE) gi_508 = f0_5();
      else gi_508 = ManualGMT_Offset;
      if (gi_148 <= 0) gi_148 = f0_15(li_0, "BetterPricePips");
      if (gi_156 <= 0) gi_156 = f0_15(li_0, "ForceProfit");
      if (gi_160 <= 0) gi_160 = f0_15(li_0, "ForceLoss");
      if (gi_164 <= 0) gi_164 = f0_15(li_0, "FixedTakeProfit");
      if (gi_168 <= 0) gi_168 = f0_15(li_0, "FixedStopLoss");
      if (gi_364 == 0) gi_364 = f0_15(li_0, "BandPer");
      if (gi_368 == 0) gi_368 = f0_15(li_0, "BandPer_Open");
      if (gi_372 == 0) gi_372 = f0_15(li_0, "BreakEntry");
      if (gi_376 == 0) gi_376 = f0_15(li_0, "MaxBreakEntry");
      if (gi_380 == 0) gi_380 = f0_15(li_0, "BreakExit");
      if (gi_384 == 0) gi_384 = f0_15(li_0, "TREND_PER");
      if (gi_388 == 0) gi_388 = f0_15(li_0, "TrendDist");
      if (gi_392 == 0) gi_392 = f0_15(li_0, "TREND_PER_2");
      if (gi_396 == 0) gi_396 = f0_15(li_0, "TrendDist_2");
      if (gi_400 == 0) gi_400 = f0_15(li_0, "ExitTimeProfit");
      if (gi_404 == 0) gi_404 = f0_15(li_0, "MinBandDist");
      if (gi_408 == 0) gi_408 = f0_15(li_0, "RescueProfit");
      if (gi_412 < 0) gi_412 = f0_15(li_0, "FridayEndHour");
      if (gi_416 == 0) gi_416 = f0_15(li_0, "BreakEntryH4Reverse");
      if (gi_420 == 0) gi_420 = f0_15(li_0, "BreakbandH4");
      if (gi_424 == 0) gi_424 = f0_15(li_0, "BandDistH4");
      if (gi_428 == 0) gi_428 = f0_15(li_0, "BandPer_H4");
      if (gi_432 == 0) gi_432 = f0_15(li_0, "MinBandDistH4");
      if (gi_436 == 0) gi_436 = f0_15(li_0, "BreakEntrySwingReverse");
      if (gi_440 == 0) gi_440 = f0_15(li_0, "SWING_MA_PER");
      if (gi_444 == 0) gi_444 = f0_15(li_0, "SWING_MA_DIST");
      if (gi_448 == 0) gi_448 = f0_15(li_0, "SWING_IMPULSE_MA_PER");
      if (gi_452 == 0) gi_452 = f0_15(li_0, "SWING_MA_IMPULSE");
      if (gi_456 == 0) gi_456 = f0_15(li_0, "BandPer_Open_Swing");
   }
   return (li_0);
}

// AA5EA51BFAC7B64E723BF276E0075513
int f0_13() {
   int li_0;
   if (gi_172) li_0 = f0_2(AccountNumber(), IsTesting(), IsDemo(), WindowHandle(Symbol(), Period()), StringSubstr(gs_gbpusd_176, 0, 6));
   else li_0 = f0_2(AccountNumber(), IsTesting(), IsDemo(), WindowHandle(Symbol(), Period()), StringSubstr(Symbol(), 0, 6));
   return (li_0);
}

// 2FC9212C93C86A99B2C376C96453D3A4
int f0_3(int ai_0, int ai_4, int ai_8, int ai_12, string as_16, int ai_24) {
   return (1);
}

// D362D41CFF235C066CFB390D52F4EB13
int f0_15(int ai_0, string as_4) {
   string ls_12 = StringSubstr(Symbol(), 0, 6);
   if (ls_12 == "EURUSD" || ls_12 == Symbol()) {
      gi_276 = 490;
      gi_284 = 0;
      gi_296 = 4;
      gi_300 = 18;
      gi_304 = 55;
      gi_308 = 55;
      gi_220 = 6;
      if (as_4 == "BetterPricePips") return (gi_220);
      gi_224 = 8;
      if (as_4 == "ForceProfit") return (gi_224);
      gi_228 = 300;
      if (as_4 == "ForceLoss") return (gi_228);
      gi_232 = FALSE;
      if (as_4 == "FixedTakeProfit") return (gi_232);
      gi_236 = FALSE;
      if (as_4 == "FixedStopLoss") return (gi_236);
      gi_240 = 19;
      if (as_4 == "BandPer") return (gi_240);
      gi_244 = 15;
      if (as_4 == "BandPer_Open") return (gi_244);
      gi_248 = 3;
      if (as_4 == "BreakEntry") return (gi_248);
      gi_252 = 8;
      if (as_4 == "MaxBreakEntry") return (gi_252);
      gi_256 = 3;
      if (as_4 == "BreakExit") return (gi_256);
      gi_260 = 22;
      if (as_4 == "TREND_PER") return (gi_260);
      gi_264 = 100;
      if (as_4 == "TrendDist") return (gi_264);
      gi_268 = 5;
      if (as_4 == "TREND_PER_2") return (gi_268);
      gi_272 = 55;
      if (as_4 == "TrendDist_2") return (gi_272);
      gi_280 = -40;
      if (as_4 == "ExitTimeProfit") return (gi_280);
      gi_288 = 8;
      if (as_4 == "MinBandDist") return (gi_288);
      gi_292 = 7;
      if (as_4 == "RescueProfit") return (gi_292);
      gi_312 = 21;
      if (as_4 == "FridayEndHour") return (gi_312);
      gi_316 = 7;
      if (as_4 == "BreakEntryH4Reverse") return (gi_316);
      gi_320 = 28;
      if (as_4 == "BreakbandH4") return (gi_320);
      gi_324 = 42;
      if (as_4 == "BandDistH4") return (gi_324);
      gi_328 = 5;
      if (as_4 == "BandPer_H4") return (gi_328);
      gi_332 = 5;
      if (as_4 == "MinBandDistH4") return (gi_332);
      gi_336 = -1;
      if (as_4 == "BreakEntrySwingReverse") return (gi_336);
      gi_340 = 55;
      if (as_4 == "SWING_MA_PER") return (gi_340);
      gi_344 = 60;
      if (as_4 == "SWING_MA_DIST") return (gi_344);
      gi_348 = 9;
      if (as_4 == "SWING_IMPULSE_MA_PER") return (gi_348);
      gi_352 = FALSE;
      if (as_4 == "SWING_MA_IMPULSE") return (gi_352);
      gi_356 = 4;
      if (as_4 == "BandPer_Open_Swing") return (gi_356);
   }
   if (ls_12 == "GBPUSD") {
      gi_276 = 600;
      gi_284 = 0;
      gi_296 = 22;
      gi_300 = 4;
      gi_304 = 15;
      gi_308 = 55;
      gi_220 = 15;
      if (as_4 == "BetterPricePips") return (gi_220);
      gi_224 = 20;
      if (as_4 == "ForceProfit") return (gi_224);
      gi_228 = 380;
      if (as_4 == "ForceLoss") return (gi_228);
      gi_232 = FALSE;
      if (as_4 == "FixedTakeProfit") return (gi_232);
      gi_236 = FALSE;
      if (as_4 == "FixedStopLoss") return (gi_236);
      gi_240 = 22;
      if (as_4 == "BandPer") return (gi_240);
      gi_244 = 10;
      if (as_4 == "BandPer_Open") return (gi_244);
      gi_248 = 1;
      if (as_4 == "BreakEntry") return (gi_248);
      gi_252 = 80;
      if (as_4 == "MaxBreakEntry") return (gi_252);
      gi_256 = 9;
      if (as_4 == "BreakExit") return (gi_256);
      gi_260 = 21;
      if (as_4 == "TREND_PER") return (gi_260);
      gi_264 = 100;
      if (as_4 == "TrendDist") return (gi_264);
      gi_268 = 9;
      if (as_4 == "TREND_PER_2") return (gi_268);
      gi_272 = 155;
      if (as_4 == "TrendDist_2") return (gi_272);
      gi_280 = 11;
      if (as_4 == "ExitTimeProfit") return (gi_280);
      gi_288 = 12;
      if (as_4 == "MinBandDist") return (gi_288);
      gi_292 = 19;
      if (as_4 == "RescueProfit") return (gi_292);
      gi_312 = 14;
      if (as_4 == "FridayEndHour") return (gi_312);
      gi_316 = 7;
      if (as_4 == "BreakEntryH4Reverse") return (gi_316);
      gi_320 = 18;
      if (as_4 == "BreakbandH4") return (gi_320);
      gi_324 = 37;
      if (as_4 == "BandDistH4") return (gi_324);
      gi_328 = 4;
      if (as_4 == "BandPer_H4") return (gi_328);
      gi_332 = 15;
      if (as_4 == "MinBandDistH4") return (gi_332);
      gi_336 = 0;
      if (as_4 == "BreakEntrySwingReverse") return (gi_336);
      gi_340 = 50;
      if (as_4 == "SWING_MA_PER") return (gi_340);
      gi_344 = 10;
      if (as_4 == "SWING_MA_DIST") return (gi_344);
      gi_348 = 6;
      if (as_4 == "SWING_IMPULSE_MA_PER") return (gi_348);
      gi_352 = FALSE;
      if (as_4 == "SWING_MA_IMPULSE") return (gi_352);
      gi_356 = 10;
      if (as_4 == "BandPer_Open_Swing") return (gi_356);
   }
   if (ls_12 == "USDCHF" || ls_12 == Symbol()) {
      gi_276 = 490;
      gi_284 = 0;
      gi_296 = 4;
      gi_300 = 18;
      gi_304 = 55;
      gi_308 = 55;
      gi_220 = 6;
      if (as_4 == "BetterPricePips") return (gi_220);
      gi_224 = 8;
      if (as_4 == "ForceProfit") return (gi_224);
      gi_228 = 300;
      if (as_4 == "ForceLoss") return (gi_228);
      gi_232 = FALSE;
      if (as_4 == "FixedTakeProfit") return (gi_232);
      gi_236 = FALSE;
      if (as_4 == "FixedStopLoss") return (gi_236);
      gi_240 = 19;
      if (as_4 == "BandPer") return (gi_240);
      gi_244 = 15;
      if (as_4 == "BandPer_Open") return (gi_244);
      gi_248 = 3;
      if (as_4 == "BreakEntry") return (gi_248);
      gi_252 = 8;
      if (as_4 == "MaxBreakEntry") return (gi_252);
      gi_256 = 3;
      if (as_4 == "BreakExit") return (gi_256);
      gi_260 = 22;
      if (as_4 == "TREND_PER") return (gi_260);
      gi_264 = 100;
      if (as_4 == "TrendDist") return (gi_264);
      gi_268 = 5;
      if (as_4 == "TREND_PER_2") return (gi_268);
      gi_272 = 55;
      if (as_4 == "TrendDist_2") return (gi_272);
      gi_280 = -40;
      if (as_4 == "ExitTimeProfit") return (gi_280);
      gi_288 = 8;
      if (as_4 == "MinBandDist") return (gi_288);
      gi_292 = 7;
      if (as_4 == "RescueProfit") return (gi_292);
      gi_312 = 21;
      if (as_4 == "FridayEndHour") return (gi_312);
      gi_316 = 7;
      if (as_4 == "BreakEntryH4Reverse") return (gi_316);
      gi_320 = 28;
      if (as_4 == "BreakbandH4") return (gi_320);
      gi_324 = 42;
      if (as_4 == "BandDistH4") return (gi_324);
      gi_328 = 5;
      if (as_4 == "BandPer_H4") return (gi_328);
      gi_332 = 5;
      if (as_4 == "MinBandDistH4") return (gi_332);
      gi_336 = -1;
      if (as_4 == "BreakEntrySwingReverse") return (gi_336);
      gi_340 = 55;
      if (as_4 == "SWING_MA_PER") return (gi_340);
      gi_344 = 60;
      if (as_4 == "SWING_MA_DIST") return (gi_344);
      gi_348 = 9;
      if (as_4 == "SWING_IMPULSE_MA_PER") return (gi_348);
      gi_352 = FALSE;
      if (as_4 == "SWING_MA_IMPULSE") return (gi_352);
      gi_356 = 4;
      if (as_4 == "BandPer_Open_Swing") return (gi_356);
   }
   if (ls_12 == "AUDUSD" || ls_12 == Symbol()) {
      gi_276 = 490;
      gi_284 = 0;
      gi_296 = 4;
      gi_300 = 18;
      gi_304 = 55;
      gi_308 = 55;
      gi_220 = 6;
      if (as_4 == "BetterPricePips") return (gi_220);
      gi_224 = 8;
      if (as_4 == "ForceProfit") return (gi_224);
      gi_228 = 300;
      if (as_4 == "ForceLoss") return (gi_228);
      gi_232 = FALSE;
      if (as_4 == "FixedTakeProfit") return (gi_232);
      gi_236 = FALSE;
      if (as_4 == "FixedStopLoss") return (gi_236);
      gi_240 = 19;
      if (as_4 == "BandPer") return (gi_240);
      gi_244 = 15;
      if (as_4 == "BandPer_Open") return (gi_244);
      gi_248 = 3;
      if (as_4 == "BreakEntry") return (gi_248);
      gi_252 = 8;
      if (as_4 == "MaxBreakEntry") return (gi_252);
      gi_256 = 3;
      if (as_4 == "BreakExit") return (gi_256);
      gi_260 = 22;
      if (as_4 == "TREND_PER") return (gi_260);
      gi_264 = 100;
      if (as_4 == "TrendDist") return (gi_264);
      gi_268 = 5;
      if (as_4 == "TREND_PER_2") return (gi_268);
      gi_272 = 55;
      if (as_4 == "TrendDist_2") return (gi_272);
      gi_280 = -40;
      if (as_4 == "ExitTimeProfit") return (gi_280);
      gi_288 = 8;
      if (as_4 == "MinBandDist") return (gi_288);
      gi_292 = 7;
      if (as_4 == "RescueProfit") return (gi_292);
      gi_312 = 21;
      if (as_4 == "FridayEndHour") return (gi_312);
      gi_316 = 7;
      if (as_4 == "BreakEntryH4Reverse") return (gi_316);
      gi_320 = 28;
      if (as_4 == "BreakbandH4") return (gi_320);
      gi_324 = 42;
      if (as_4 == "BandDistH4") return (gi_324);
      gi_328 = 5;
      if (as_4 == "BandPer_H4") return (gi_328);
      gi_332 = 5;
      if (as_4 == "MinBandDistH4") return (gi_332);
      gi_336 = -1;
      if (as_4 == "BreakEntrySwingReverse") return (gi_336);
      gi_340 = 55;
      if (as_4 == "SWING_MA_PER") return (gi_340);
      gi_344 = 60;
      if (as_4 == "SWING_MA_DIST") return (gi_344);
      gi_348 = 9;
      if (as_4 == "SWING_IMPULSE_MA_PER") return (gi_348);
      gi_352 = FALSE;
      if (as_4 == "SWING_MA_IMPULSE") return (gi_352);
      gi_356 = 4;
      if (as_4 == "BandPer_Open_Swing") return (gi_356);
   }
   if (ls_12 == "NZDUSD" || ls_12 == Symbol()) {
      gi_276 = 490;
      gi_284 = 0;
      gi_296 = 4;
      gi_300 = 18;
      gi_304 = 55;
      gi_308 = 55;
      gi_220 = 6;
      if (as_4 == "BetterPricePips") return (gi_220);
      gi_224 = 8;
      if (as_4 == "ForceProfit") return (gi_224);
      gi_228 = 300;
      if (as_4 == "ForceLoss") return (gi_228);
      gi_232 = FALSE;
      if (as_4 == "FixedTakeProfit") return (gi_232);
      gi_236 = FALSE;
      if (as_4 == "FixedStopLoss") return (gi_236);
      gi_240 = 19;
      if (as_4 == "BandPer") return (gi_240);
      gi_244 = 15;
      if (as_4 == "BandPer_Open") return (gi_244);
      gi_248 = 3;
      if (as_4 == "BreakEntry") return (gi_248);
      gi_252 = 8;
      if (as_4 == "MaxBreakEntry") return (gi_252);
      gi_256 = 3;
      if (as_4 == "BreakExit") return (gi_256);
      gi_260 = 22;
      if (as_4 == "TREND_PER") return (gi_260);
      gi_264 = 100;
      if (as_4 == "TrendDist") return (gi_264);
      gi_268 = 5;
      if (as_4 == "TREND_PER_2") return (gi_268);
      gi_272 = 55;
      if (as_4 == "TrendDist_2") return (gi_272);
      gi_280 = -40;
      if (as_4 == "ExitTimeProfit") return (gi_280);
      gi_288 = 8;
      if (as_4 == "MinBandDist") return (gi_288);
      gi_292 = 7;
      if (as_4 == "RescueProfit") return (gi_292);
      gi_312 = 21;
      if (as_4 == "FridayEndHour") return (gi_312);
      gi_316 = 7;
      if (as_4 == "BreakEntryH4Reverse") return (gi_316);
      gi_320 = 28;
      if (as_4 == "BreakbandH4") return (gi_320);
      gi_324 = 42;
      if (as_4 == "BandDistH4") return (gi_324);
      gi_328 = 5;
      if (as_4 == "BandPer_H4") return (gi_328);
      gi_332 = 5;
      if (as_4 == "MinBandDistH4") return (gi_332);
      gi_336 = -1;
      if (as_4 == "BreakEntrySwingReverse") return (gi_336);
      gi_340 = 55;
      if (as_4 == "SWING_MA_PER") return (gi_340);
      gi_344 = 60;
      if (as_4 == "SWING_MA_DIST") return (gi_344);
      gi_348 = 9;
      if (as_4 == "SWING_IMPULSE_MA_PER") return (gi_348);
      gi_352 = FALSE;
      if (as_4 == "SWING_MA_IMPULSE") return (gi_352);
      gi_356 = 4;
      if (as_4 == "BandPer_Open_Swing") return (gi_356);
   }
   Alert("Pairname-", ls_12, " invalid");
   return (0);
}

// 58B0897F29A3AD862616D6CBF39536ED
int f0_6(int ai_0, double ad_4, double ad_12, double ad_20, double ad_28, int ai_36, double ad_40, double ad_48) {
   if (ad_48 >= 0.0 && ad_40 > 0.0) {
      if (ad_28 > ad_12) return (0);
      if (ad_28 < ad_20) return (1);
   }
   return (-1);
}

// 2569208C5E61CB15E209FFE323DB48B7
int f0_1(int ai_0, int ai_4, double ad_8, double ad_16) {
   if (ad_16 >= 0.0 && ad_8 > 0.0 && ai_4 > 60 * gi_276) return (1);
   return (0);
}

// 09CBB5F5CE12C31A043D5C81BF20AA4A
int f0_0(int ai_0, int ai_4, double ad_8, double ad_16) {
   if (ad_16 >= 0.0 && ad_8 > 0.0 && ai_4 > 60 * gi_284) return (1);
   return (0);
}

// 5710F6E623305B2C1458238C9757193B
int f0_5() {
   return (ManualGMT_Offset);
}

// 28EFB830D150E70A8BB0F12BAC76EF35
int f0_2(int ai_0, int ai_4, int ai_8, int ai_12, string as_16) {
   return (1);
}

// 6ABA3523C7A75AAEA41CC0DEC7953CC5
int f0_8(int ai_0, double ad_4, double ad_12, double ad_20, double ad_28, double ad_36, double ad_44, double ad_52) {
   if (ad_4 < ad_28 && ad_4 > ad_36 && ad_4 > ad_44) return (0);
   if (ad_4 > ad_12 && ad_4 < ad_20 && ad_4 < ad_52) return (1);
   return (-1);
}

// 689C35E4872BA754D7230B8ADAA28E48
int f0_7(int ai_0, double ad_4, double ad_12, double ad_20, double ad_28, double ad_36, int ai_44) {
   if (ad_4 < ad_28 && ad_4 > ad_36 && ai_44 == gi_296 || ai_44 == gi_300 || ai_44 == gi_304 || ai_44 == gi_308) return (0);
   if (ad_4 > ad_12 && ad_4 < ad_20 && ai_44 == gi_296 || ai_44 == gi_300 || ai_44 == gi_304 || ai_44 == gi_308) return (1);
   return (-1);
}

// 50257C26C4E5E915F022247BABD914FE
int f0_4(int ai_0, double ad_4, double ad_12, double ad_20, double ad_28, double ad_36, double ad_44, double ad_52, double ad_60, double ad_68) {
   if (ad_4 < ad_20 && ad_36 < ad_52 && ad_60 > ad_68) return (0);
   if (ad_4 > ad_12 && ad_28 > ad_44 && ad_60 > ad_68) return (1);
   return (-1);
}

// A9B24A824F70CC1232D1C2BA27039E8D
int f0_12(int ai_0, double ad_4, double ad_12, double ad_20, double ad_28, double ad_36) {
   if (ad_4 < ad_28 && ad_4 > ad_36) return (0);
   if (ad_4 > ad_12 && ad_4 < ad_20) return (1);
   return (-1);
}