/*
   Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/
#property copyright "Mod Copyright � 2009, kuegmi. http://fortraders.ueuo.com"
#property link      "http://fortraders.ueuo.com"

extern int g_magic_176 = 12322;
extern bool OnlyBuy = FALSE;
extern bool OnlySell = FALSE;
extern double LotExponent = 1.59;
double g_slippage_96 = 3.0;
extern double Lots = 0.01;
extern int lotdecimal = 2;
bool gi_120 = FALSE;
extern double TakeProfit = 10.0;
int gi_132 = 999;
bool gi_136 = FALSE;
double g_pips_140 = 10.0;
double gd_148 = 1.59;
int gi_156 = 0;
double gd_160 = 10.0;
double gd_168 = 10.0;
extern double PipStep = 30.0;
extern int MaxTrades = 10;
bool gi_188 = FALSE;
double gd_192 = 20.0;
bool gi_200 = FALSE;
bool gi_204 = FALSE;
double gd_208 = 48.0;
extern int Order_QQE = 0;
extern int SF = 5;
extern double PipStep2 = 30.0;
extern double PipStep3 = 30.0;
extern double PipStep4 = 30.0;
extern double PipStep5 = 30.0;
extern double PipStep6 = 30.0;
extern double PipStep7 = 30.0;
extern double PipStep8 = 30.0;
extern double PipStep9 = 30.0;
extern double PipStep10 = 30.0;
extern double PipStep11 = 30.0;
extern double PipStep12 = 30.0;
extern double PipStep13 = 30.0;
extern double PipStep14 = 30.0;
extern double PipStep15 = 30.0;
double g_price_336;
double gd_344;
double gd_unused_352;
double gd_unused_360;
double g_price_368;
double g_bid_376;
double g_ask_384;
double gd_392;
double gd_400;
double gd_408;
bool gi_416;
string gs_qqe_mod_420 = "QQE mod";
int g_time_428 = 0;
int gi_432;
int gi_436 = 0;
double gd_440;
int g_pos_448 = 0;
int gi_452;
double g_price_456 = 0.0;
bool gi_464 = FALSE;
bool gi_468 = FALSE;
bool gi_472 = FALSE;
int gi_476;
bool gi_480 = FALSE;
double gd_484;
double gd_492;
string gs_500;
int g_count_512;
bool gi_516;
bool gi_520;

int init() {
   gi_516 = TRUE;
   gi_520 = TRUE;
   gd_408 = MarketInfo(Symbol(), MODE_SPREAD) * Point;
   return (0);
}

int deinit() {
   return (0);
}

int start() {
   double l_iclose_0;
   double l_iclose_8;
   if (gi_200) TrailingAlls(gd_160, gd_168, g_price_368);
   if (gi_204) {
      if (TimeCurrent() >= gi_432) {
         CloseThisSymbolAll();
         Print("Closed All due to TimeOut");
      }
   }
   if (g_time_428 == Time[0]) return (0);
   g_time_428 = Time[0];
   double ld_16 = CalculateProfit();
   if (gi_188) {
      if (ld_16 < 0.0 && MathAbs(ld_16) > gd_192 / 100.0 * AccountEquityHigh()) {
         CloseThisSymbolAll();
         Print("Closed All due to Stop Out");
         gi_480 = FALSE;
      }
   }
   gi_452 = CountTrades();
   if (gi_452 == 0) gi_416 = FALSE;
   for (g_pos_448 = OrdersTotal() - 1; g_pos_448 >= 0; g_pos_448--) {
      OrderSelect(g_pos_448, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {
         if (OrderType() == OP_BUY) {
            gi_468 = TRUE;
            gi_472 = FALSE;
            break;
         }
      }
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {
         if (OrderType() == OP_SELL) {
            gi_468 = FALSE;
            gi_472 = TRUE;
            break;
         }
      }
   }
   if (iCustom(NULL, 0, "QQE", SF, 0, 1) > iCustom(NULL, 0, "QQE", SF, 1, 1)) gi_516 = TRUE;
   if (iCustom(NULL, 0, "QQE", SF, 0, 1) < iCustom(NULL, 0, "QQE", SF, 1, 1)) gi_520 = TRUE;
   if (gi_452 == 1 && gi_452 <= MaxTrades) {
      RefreshRates();
      gd_392 = FindLastBuyPrice();
      gd_400 = FindLastSellPrice();
      if (gi_452 <= Order_QQE || (gi_520 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) > iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_468 && gd_392 - Ask >= PipStep * Point) gi_464 = TRUE;
      if (gi_452 <= Order_QQE || (gi_516 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) < iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_472 && Bid - gd_400 >= PipStep * Point) gi_464 = TRUE;
   }
   if (gi_452 == 2 && gi_452 <= MaxTrades) {
      RefreshRates();
      gd_392 = FindLastBuyPrice();
      gd_400 = FindLastSellPrice();
      if (gi_452 <= Order_QQE || (gi_520 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) > iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_468 && gd_392 - Ask >= PipStep2 * Point) gi_464 = TRUE;
      if (gi_452 <= Order_QQE || (gi_516 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) < iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_472 && Bid - gd_400 >= PipStep2 * Point) gi_464 = TRUE;
   }
   if (gi_452 == 3 && gi_452 <= MaxTrades) {
      RefreshRates();
      gd_392 = FindLastBuyPrice();
      gd_400 = FindLastSellPrice();
      if (gi_452 <= Order_QQE || (gi_520 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) > iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_468 && gd_392 - Ask >= PipStep3 * Point) gi_464 = TRUE;
      if (gi_452 <= Order_QQE || (gi_516 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) < iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_472 && Bid - gd_400 >= PipStep3 * Point) gi_464 = TRUE;
   }
   if (gi_452 == 4 && gi_452 <= MaxTrades) {
      RefreshRates();
      gd_392 = FindLastBuyPrice();
      gd_400 = FindLastSellPrice();
      if (gi_452 <= Order_QQE || (gi_520 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) > iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_468 && gd_392 - Ask >= PipStep4 * Point) gi_464 = TRUE;
      if (gi_452 <= Order_QQE || (gi_516 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) < iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_472 && Bid - gd_400 >= PipStep4 * Point) gi_464 = TRUE;
   }
   if (gi_452 == 5 && gi_452 <= MaxTrades) {
      RefreshRates();
      gd_392 = FindLastBuyPrice();
      gd_400 = FindLastSellPrice();
      if (gi_452 <= Order_QQE || (gi_520 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) > iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_468 && gd_392 - Ask >= PipStep5 * Point) gi_464 = TRUE;
      if (gi_452 <= Order_QQE || (gi_516 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) < iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_472 && Bid - gd_400 >= PipStep5 * Point) gi_464 = TRUE;
   }
   if (gi_452 == 6 && gi_452 <= MaxTrades) {
      RefreshRates();
      gd_392 = FindLastBuyPrice();
      gd_400 = FindLastSellPrice();
      if (gi_452 <= Order_QQE || (gi_520 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) > iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_468 && gd_392 - Ask >= PipStep6 * Point) gi_464 = TRUE;
      if (gi_452 <= Order_QQE || (gi_516 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) < iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_472 && Bid - gd_400 >= PipStep6 * Point) gi_464 = TRUE;
   }
   if (gi_452 == 7 && gi_452 <= MaxTrades) {
      RefreshRates();
      gd_392 = FindLastBuyPrice();
      gd_400 = FindLastSellPrice();
      if (gi_452 <= Order_QQE || (gi_520 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) > iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_468 && gd_392 - Ask >= PipStep7 * Point) gi_464 = TRUE;
      if (gi_452 <= Order_QQE || (gi_516 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) < iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_472 && Bid - gd_400 >= PipStep7 * Point) gi_464 = TRUE;
   }
   if (gi_452 == 8 && gi_452 <= MaxTrades) {
      RefreshRates();
      gd_392 = FindLastBuyPrice();
      gd_400 = FindLastSellPrice();
      if (gi_452 <= Order_QQE || (gi_520 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) > iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_468 && gd_392 - Ask >= PipStep8 * Point) gi_464 = TRUE;
      if (gi_452 <= Order_QQE || (gi_516 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) < iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_472 && Bid - gd_400 >= PipStep8 * Point) gi_464 = TRUE;
   }
   if (gi_452 == 9 && gi_452 <= MaxTrades) {
      RefreshRates();
      gd_392 = FindLastBuyPrice();
      gd_400 = FindLastSellPrice();
      if (gi_452 <= Order_QQE || (gi_520 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) > iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_468 && gd_392 - Ask >= PipStep9 * Point) gi_464 = TRUE;
      if (gi_452 <= Order_QQE || (gi_516 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) < iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_472 && Bid - gd_400 >= PipStep9 * Point) gi_464 = TRUE;
   }
   if (gi_452 == 10 && gi_452 <= MaxTrades) {
      RefreshRates();
      gd_392 = FindLastBuyPrice();
      gd_400 = FindLastSellPrice();
      if (gi_452 <= Order_QQE || (gi_520 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) > iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_468 && gd_392 - Ask >= PipStep10 * Point) gi_464 = TRUE;
      if (gi_452 <= Order_QQE || (gi_516 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) < iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_472 && Bid - gd_400 >= PipStep10 * Point) gi_464 = TRUE;
   }
   if (gi_452 == 11 && gi_452 <= MaxTrades) {
      RefreshRates();
      gd_392 = FindLastBuyPrice();
      gd_400 = FindLastSellPrice();
      if (gi_452 <= Order_QQE || (gi_520 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) > iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_468 && gd_392 - Ask >= PipStep11 * Point) gi_464 = TRUE;
      if (gi_452 <= Order_QQE || (gi_516 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) < iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_472 && Bid - gd_400 >= PipStep11 * Point) gi_464 = TRUE;
   }
   if (gi_452 == 12 && gi_452 <= MaxTrades) {
      RefreshRates();
      gd_392 = FindLastBuyPrice();
      gd_400 = FindLastSellPrice();
      if (gi_452 <= Order_QQE || (gi_520 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) > iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_468 && gd_392 - Ask >= PipStep12 * Point) gi_464 = TRUE;
      if (gi_452 <= Order_QQE || (gi_516 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) < iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_472 && Bid - gd_400 >= PipStep12 * Point) gi_464 = TRUE;
   }
   if (gi_452 == 13 && gi_452 <= MaxTrades) {
      RefreshRates();
      gd_392 = FindLastBuyPrice();
      gd_400 = FindLastSellPrice();
      if (gi_452 <= Order_QQE || (gi_520 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) > iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_468 && gd_392 - Ask >= PipStep13 * Point) gi_464 = TRUE;
      if (gi_452 <= Order_QQE || (gi_516 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) < iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_472 && Bid - gd_400 >= PipStep13 * Point) gi_464 = TRUE;
   }
   if (gi_452 == 14 && gi_452 <= MaxTrades) {
      RefreshRates();
      gd_392 = FindLastBuyPrice();
      gd_400 = FindLastSellPrice();
      if (gi_452 <= Order_QQE || (gi_520 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) > iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_468 && gd_392 - Ask >= PipStep14 * Point) gi_464 = TRUE;
      if (gi_452 <= Order_QQE || (gi_516 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) < iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_472 && Bid - gd_400 >= PipStep14 * Point) gi_464 = TRUE;
   }
   if (gi_452 == 15 && gi_452 <= MaxTrades) {
      RefreshRates();
      gd_392 = FindLastBuyPrice();
      gd_400 = FindLastSellPrice();
      if (gi_452 <= Order_QQE || (gi_520 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) > iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_468 && gd_392 - Ask >= PipStep15 * Point) gi_464 = TRUE;
      if (gi_452 <= Order_QQE || (gi_516 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) < iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_472 && Bid - gd_400 >= PipStep15 * Point) gi_464 = TRUE;
   }
   if (gi_452 > 15 && gi_452 <= MaxTrades) {
      RefreshRates();
      gd_392 = FindLastBuyPrice();
      gd_400 = FindLastSellPrice();
      if (gi_452 <= Order_QQE || (gi_520 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) > iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_468 && gd_392 - Ask >= PipStep15 * Point) gi_464 = TRUE;
      if (gi_452 <= Order_QQE || (gi_516 == TRUE && gi_452 > Order_QQE && iCustom(NULL, 0, "QQE", SF, 0, 1) < iCustom(NULL, 0, "QQE", SF, 1, 1)) && gi_472 && Bid - gd_400 >= PipStep15 * Point) gi_464 = TRUE;
   }
   if (gi_452 < 1) {
      gi_472 = FALSE;
      gi_468 = FALSE;
      gi_464 = TRUE;
      gd_344 = AccountEquity();
   }
   if (gi_464) {
      gd_392 = FindLastBuyPrice();
      gd_400 = FindLastSellPrice();
      if (gi_472) {
         gi_436 = gi_452;
         gs_500 = "sell";
         if (gi_452 <= gi_132) gd_440 = NormalizeDouble(FindLastOrder(gs_500, "Lots") * LotExponent, lotdecimal);
         if (gi_452 > gi_132) gd_440 = NormalizeDouble(FindLastOrder(gs_500, "Lots") * gd_148, lotdecimal);
         RefreshRates();
         gi_476 = OpenPendingOrder(1, gd_440, NormalizeDouble(Bid, Digits), g_slippage_96, Ask, 0, 0, gs_qqe_mod_420 + "-" + gi_436, g_magic_176, 0, HotPink);
         if (gi_476 < 0) {
            Print("Error: ", GetLastError());
            return (0);
         }
         gd_400 = FindLastSellPrice();
         gi_464 = FALSE;
         gi_480 = TRUE;
      } else {
         if (gi_468) {
            gi_436 = gi_452;
            gs_500 = "buy";
            if (gi_452 <= gi_132) gd_440 = NormalizeDouble(FindLastOrder(gs_500, "Lots") * LotExponent, lotdecimal);
            if (gi_452 > gi_132) gd_440 = NormalizeDouble(FindLastOrder(gs_500, "Lots") * gd_148, lotdecimal);
            gi_476 = OpenPendingOrder(0, gd_440, NormalizeDouble(Ask, Digits), g_slippage_96, Bid, 0, 0, gs_qqe_mod_420 + "-" + gi_436, g_magic_176, 0, Lime);
            if (gi_476 < 0) {
               Print("Error: ", GetLastError());
               return (0);
            }
            gd_392 = FindLastBuyPrice();
            gi_464 = FALSE;
            gi_480 = TRUE;
         }
      }
   }
   if (gi_464 && gi_452 < 1) {
      if (OnlyBuy == TRUE && OnlySell == FALSE) {
         l_iclose_0 = 8;
         l_iclose_8 = 16;
      }
      if (OnlyBuy == FALSE && OnlySell == TRUE) {
         l_iclose_0 = 16;
         l_iclose_8 = 8;
      }
      if ((OnlyBuy == TRUE && OnlySell == TRUE) || (OnlyBuy == FALSE && OnlySell == FALSE)) {
         l_iclose_0 = iClose(Symbol(), 0, 2);
         l_iclose_8 = iClose(Symbol(), 0, 1);
      }
      g_bid_376 = Bid;
      g_ask_384 = Ask;
      if (!gi_472 && !gi_468) {
         gi_436 = gi_452;
         gd_440 = NormalizeDouble(Lots * MathPow(LotExponent, gi_436), lotdecimal);
         if (l_iclose_0 > l_iclose_8) {
            gi_476 = OpenPendingOrder(1, gd_440, NormalizeDouble(Bid, Digits), g_slippage_96, g_bid_376, 0, 0, gs_qqe_mod_420 + "-" + gi_436, g_magic_176, 0, HotPink);
            if (gi_476 < 0) {
               Print("Error: ", GetLastError());
               return (0);
            }
            gd_392 = FindLastBuyPrice();
            gi_480 = TRUE;
         } else {
            gi_476 = OpenPendingOrder(0, gd_440, NormalizeDouble(Ask, Digits), g_slippage_96, g_ask_384, 0, 0, gs_qqe_mod_420 + "-" + gi_436, g_magic_176, 0, Lime);
            if (gi_476 < 0) {
               Print("Error: ", GetLastError());
               return (0);
            }
            gd_400 = FindLastSellPrice();
            gi_480 = TRUE;
         }
         if (gi_476 > 0) gi_432 = TimeCurrent() + 60.0 * (60.0 * gd_208);
         gi_464 = FALSE;
      }
   }
   gi_452 = CountTrades();
   g_price_368 = 0;
   double ld_24 = 0;
   for (g_pos_448 = OrdersTotal() - 1; g_pos_448 >= 0; g_pos_448--) {
      OrderSelect(g_pos_448, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {
         if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
            g_price_368 += OrderOpenPrice() * OrderLots();
            ld_24 += OrderLots();
         }
      }
   }
   if (gi_452 > 0) g_price_368 = NormalizeDouble(g_price_368 / ld_24, Digits);
   if (gi_480) {
      for (g_pos_448 = OrdersTotal() - 1; g_pos_448 >= 0; g_pos_448--) {
         OrderSelect(g_pos_448, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {
            if (OrderType() == OP_BUY) {
               if (gi_120 == FALSE && gi_452 <= gi_132) g_price_336 = g_price_368 + TakeProfit * Point;
               if (gi_136 == FALSE && gi_452 > gi_132) g_price_336 = g_price_368 + g_pips_140 * Point;
               if (gi_120 == TRUE && gi_452 <= gi_132) g_price_336 = g_price_368 + TakeProfit * Point / gi_452;
               if (gi_136 == TRUE && gi_452 > gi_132) g_price_336 = g_price_368 + g_pips_140 * Point / gi_452;
               gd_unused_352 = g_price_336;
               g_price_456 = gd_392 - gi_156 * Point;
               gi_416 = TRUE;
            }
         }
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {
            if (OrderType() == OP_SELL) {
               if (gi_120 == FALSE && gi_452 <= gi_132) g_price_336 = g_price_368 - TakeProfit * Point;
               if (gi_136 == FALSE && gi_452 > gi_132) g_price_336 = g_price_368 - g_pips_140 * Point;
               if (gi_120 == TRUE && gi_452 <= gi_132) g_price_336 = g_price_368 - TakeProfit * Point / gi_452;
               if (gi_136 == TRUE && gi_452 > gi_132) g_price_336 = g_price_368 - g_pips_140 * Point / gi_452;
               gd_unused_360 = g_price_336;
               g_price_456 = gd_400 + gi_156 * Point;
               gi_416 = TRUE;
            }
         }
      }
   }
   if (gi_480) {
      if (gi_416 == TRUE) {
         if (gi_156 == 0) g_price_456 = 0;
         for (g_pos_448 = OrdersTotal() - 1; g_pos_448 >= 0; g_pos_448--) {
            OrderSelect(g_pos_448, SELECT_BY_POS, MODE_TRADES);
            if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) OrderModify(OrderTicket(), g_price_368, g_price_456, g_price_336, 0, Yellow);
            gi_480 = FALSE;
         }
      }
   }
   return (0);
}

int CountTrades() {
   int l_count_0 = 0;
   for (int l_pos_4 = OrdersTotal() - 1; l_pos_4 >= 0; l_pos_4--) {
      OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176)
         if (OrderType() == OP_SELL || OrderType() == OP_BUY) l_count_0++;
   }
   return (l_count_0);
}

void CloseThisSymbolAll() {
   for (int l_pos_0 = OrdersTotal() - 1; l_pos_0 >= 0; l_pos_0--) {
      OrderSelect(l_pos_0, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {
            if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, g_slippage_96, Blue);
            if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, g_slippage_96, Red);
         }
         Sleep(1000);
      }
   }
}

int OpenPendingOrder(int ai_0, double a_lots_4, double a_price_12, int a_slippage_20, double ad_24, int ai_32, int ai_36, string a_comment_40, int a_magic_48, int a_datetime_52, color a_color_56) {
   int l_ticket_60 = 0;
   int l_error_64 = 0;
   int l_count_68 = 0;
   int li_72 = 100;
   switch (ai_0) {
   case 2:
      for (l_count_68 = 0; l_count_68 < li_72; l_count_68++) {
         l_ticket_60 = OrderSend(Symbol(), OP_BUYLIMIT, a_lots_4, a_price_12, a_slippage_20, StopLong(ad_24, ai_32), TakeLong(a_price_12, ai_36), a_comment_40, a_magic_48, a_datetime_52, a_color_56);
         l_error_64 = GetLastError();
         if (l_error_64 == 0/* NO_ERROR */) break;
         if (!((l_error_64 == 4/* SERVER_BUSY */ || l_error_64 == 137/* BROKER_BUSY */ || l_error_64 == 146/* TRADE_CONTEXT_BUSY */ || l_error_64 == 136/* OFF_QUOTES */))) break;
         Sleep(1000);
      }
      break;
   case 4:
      for (l_count_68 = 0; l_count_68 < li_72; l_count_68++) {
         l_ticket_60 = OrderSend(Symbol(), OP_BUYSTOP, a_lots_4, a_price_12, a_slippage_20, StopLong(ad_24, ai_32), TakeLong(a_price_12, ai_36), a_comment_40, a_magic_48, a_datetime_52, a_color_56);
         l_error_64 = GetLastError();
         if (l_error_64 == 0/* NO_ERROR */) break;
         if (!((l_error_64 == 4/* SERVER_BUSY */ || l_error_64 == 137/* BROKER_BUSY */ || l_error_64 == 146/* TRADE_CONTEXT_BUSY */ || l_error_64 == 136/* OFF_QUOTES */))) break;
         Sleep(5000);
      }
      break;
   case 0:
      g_count_512 = 0;
      while (l_ticket_60 < 1) {
         g_count_512++;
         RefreshRates();
         l_ticket_60 = OrderSend(Symbol(), OP_BUY, a_lots_4, NormalizeDouble(Ask, Digits), a_slippage_20, 0, 0, a_comment_40, a_magic_48, a_datetime_52, a_color_56);
         if (l_ticket_60 < 1) {
            Print("������: ", GetLastError());
            Sleep(1000);
         } else gi_520 = FALSE;
         if (g_count_512 == 3) break;
      }
      break;
   case 3:
      for (l_count_68 = 0; l_count_68 < li_72; l_count_68++) {
         l_ticket_60 = OrderSend(Symbol(), OP_SELLLIMIT, a_lots_4, a_price_12, a_slippage_20, StopShort(ad_24, ai_32), TakeShort(a_price_12, ai_36), a_comment_40, a_magic_48, a_datetime_52, a_color_56);
         l_error_64 = GetLastError();
         if (l_error_64 == 0/* NO_ERROR */) break;
         if (!((l_error_64 == 4/* SERVER_BUSY */ || l_error_64 == 137/* BROKER_BUSY */ || l_error_64 == 146/* TRADE_CONTEXT_BUSY */ || l_error_64 == 136/* OFF_QUOTES */))) break;
         Sleep(5000);
      }
      break;
   case 5:
      for (l_count_68 = 0; l_count_68 < li_72; l_count_68++) {
         l_ticket_60 = OrderSend(Symbol(), OP_SELLSTOP, a_lots_4, a_price_12, a_slippage_20, StopShort(ad_24, ai_32), TakeShort(a_price_12, ai_36), a_comment_40, a_magic_48, a_datetime_52, a_color_56);
         l_error_64 = GetLastError();
         if (l_error_64 == 0/* NO_ERROR */) break;
         if (!((l_error_64 == 4/* SERVER_BUSY */ || l_error_64 == 137/* BROKER_BUSY */ || l_error_64 == 146/* TRADE_CONTEXT_BUSY */ || l_error_64 == 136/* OFF_QUOTES */))) break;
         Sleep(5000);
      }
      break;
   case 1:
      g_count_512 = 0;
      while (l_ticket_60 < 1) {
         g_count_512++;
         RefreshRates();
         l_ticket_60 = OrderSend(Symbol(), OP_SELL, a_lots_4, NormalizeDouble(Bid, Digits), a_slippage_20, 0, 0, a_comment_40, a_magic_48, a_datetime_52, a_color_56);
         if (l_ticket_60 < 1) {
            Print("������: ", GetLastError());
            Sleep(1000);
         } else gi_516 = FALSE;
         if (g_count_512 == 3) break;
      }
   }
   return (l_ticket_60);
}

double StopLong(double ad_0, int ai_8) {
   if (ai_8 == 0) return (0);
   return (ad_0 - ai_8 * Point);
}

double StopShort(double ad_0, int ai_8) {
   if (ai_8 == 0) return (0);
   return (ad_0 + ai_8 * Point);
}

double TakeLong(double ad_0, int ai_8) {
   if (ai_8 == 0) return (0);
   return (ad_0 + ai_8 * Point);
}

double TakeShort(double ad_0, int ai_8) {
   if (ai_8 == 0) return (0);
   return (ad_0 - ai_8 * Point);
}

double CalculateProfit() {
   double ld_ret_0 = 0;
   for (g_pos_448 = OrdersTotal() - 1; g_pos_448 >= 0; g_pos_448--) {
      OrderSelect(g_pos_448, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176)
         if (OrderType() == OP_BUY || OrderType() == OP_SELL) ld_ret_0 += OrderProfit();
   }
   return (ld_ret_0);
}

void TrailingAlls(int ai_0, int ai_4, double a_price_8) {
   int li_16;
   double l_ord_stoploss_20;
   double l_price_28;
   if (ai_4 != 0) {
      for (int l_pos_36 = OrdersTotal() - 1; l_pos_36 >= 0; l_pos_36--) {
         if (OrderSelect(l_pos_36, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;
            if (OrderSymbol() == Symbol() || OrderMagicNumber() == g_magic_176) {
               if (OrderType() == OP_BUY) {
                  li_16 = NormalizeDouble((Bid - a_price_8) / Point, 0);
                  if (li_16 < ai_0) continue;
                  l_ord_stoploss_20 = OrderStopLoss();
                  l_price_28 = Bid - ai_4 * Point;
                  if (l_ord_stoploss_20 == 0.0 || (l_ord_stoploss_20 != 0.0 && l_price_28 > l_ord_stoploss_20)) OrderModify(OrderTicket(), a_price_8, l_price_28, OrderTakeProfit(), 0, Aqua);
               }
               if (OrderType() == OP_SELL) {
                  li_16 = NormalizeDouble((a_price_8 - Ask) / Point, 0);
                  if (li_16 < ai_0) continue;
                  l_ord_stoploss_20 = OrderStopLoss();
                  l_price_28 = Ask + ai_4 * Point;
                  if (l_ord_stoploss_20 == 0.0 || (l_ord_stoploss_20 != 0.0 && l_price_28 < l_ord_stoploss_20)) OrderModify(OrderTicket(), a_price_8, l_price_28, OrderTakeProfit(), 0, Red);
               }
            }
            Sleep(1000);
         }
      }
   }
}

double AccountEquityHigh() {
   if (CountTrades() == 0) gd_484 = AccountEquity();
   if (gd_484 < gd_492) gd_484 = gd_492;
   else gd_484 = AccountEquity();
   gd_492 = AccountEquity();
   return (gd_484);
}

double FindLastBuyPrice() {
   double l_ord_open_price_0;
   int l_ticket_8;
   double ld_unused_12 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_24 = OrdersTotal() - 1; l_pos_24 >= 0; l_pos_24--) {
      OrderSelect(l_pos_24, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176 && OrderType() == OP_BUY) {
         l_ticket_8 = OrderTicket();
         if (l_ticket_8 > l_ticket_20) {
            l_ord_open_price_0 = OrderOpenPrice();
            ld_unused_12 = l_ord_open_price_0;
            l_ticket_20 = l_ticket_8;
         }
      }
   }
   return (l_ord_open_price_0);
}

double FindLastSellPrice() {
   double l_ord_open_price_0;
   int l_ticket_8;
   double ld_unused_12 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_24 = OrdersTotal() - 1; l_pos_24 >= 0; l_pos_24--) {
      OrderSelect(l_pos_24, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176 && OrderType() == OP_SELL) {
         l_ticket_8 = OrderTicket();
         if (l_ticket_8 > l_ticket_20) {
            l_ord_open_price_0 = OrderOpenPrice();
            ld_unused_12 = l_ord_open_price_0;
            l_ticket_20 = l_ticket_8;
         }
      }
   }
   return (l_ord_open_price_0);
}

double FindLastOrder(string as_0, string as_8) {
   double l_ord_open_price_16;
   double l_ord_lots_24;
   int l_ticket_36 = 0;
   for (int l_pos_32 = OrdersTotal() - 1; l_pos_32 >= 0; l_pos_32--) {
      OrderSelect(l_pos_32, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {
         if (as_0 == "buy") {
            if (OrderType() == OP_BUY) {
               if (OrderTicket() > l_ticket_36) {
                  l_ord_open_price_16 = OrderOpenPrice();
                  l_ord_lots_24 = OrderLots();
                  l_ticket_36 = OrderTicket();
               }
            }
         }
         if (as_0 == "sell") {
            if (OrderType() == OP_SELL) {
               if (OrderTicket() > l_ticket_36) {
                  l_ord_open_price_16 = OrderOpenPrice();
                  l_ord_lots_24 = OrderLots();
                  l_ticket_36 = OrderTicket();
               }
            }
         }
      }
   }
   if (as_8 == "Price") return (l_ord_open_price_16);
   if (as_8 == "Lots") return (l_ord_lots_24);
   return (0.0);
}