#property copyright "Copyright © 2013, Ice FX <icefx@icefx.eu> <http://www.icefx.eu>"
#property link      "http://www.icefx.eu"

#include <WinUser32.mqh>

#import "IceFX.TraderAgent_edu.dll"
   void IceLock_GetWindowSize(int a0, int& a1[]);
   int IceLock_GetMouseState(int a0, int& a1[]);
   void IceLock_StartTicker(int a0, int a1);
   void IceLock_StopTicker(int a0);

#import

extern string _____Product_name_______ = " ..:: IceFX TraderAgent PRO ::..";
extern string CC1______________________ = "========= License settings =========";
extern string PassKey = "";
extern string CC2______________________ = "========= Common settings =========";
extern int MagicNumber = 0;
extern string CommentForOrder = "IceFX.TraderAgent";
extern int OrderSlippage = 3;
extern string CC3______________________ = "========= Money management =========";
extern double RiskPercent = 1.0;
extern double LOT = 0.0;
extern string CC4______________________ = "========= SL / TP settings =========";
extern double StopLoss = 40.0;
extern double TakeProfit = 80.0;
extern double TrailingStop = 25.0;
extern string CC4______________________1 = " TrailingStopAt: 0 - after BreakEventAt; x - after x pips";
extern double TrailingStopAt = 0.0;
extern bool ForceSetSLTPIfMissing = FALSE;
extern string CC5______________________ = "========= Break Even settings =========";
extern double BreakEvenAt = 0.0;
extern double BreakEvenPips = 0.0;
extern string CC6______________________ = "========= Partial Close settings =========";
extern double QuickPartialClose = 50.0;
extern double PartialClosePos1 = 0.0;
extern double PartialClosePercent1 = 50.0;
extern double PartialClosePos2 = 0.0;
extern double PartialClosePercent2 = 50.0;
extern double PartialClosePos3 = 0.0;
extern double PartialClosePercent3 = 50.0;
extern string CC13_____________________ = "========= Trendline handling =========";
extern bool UseTrendLines = FALSE;
extern bool UseChannels = FALSE;
extern bool TrueTLSupport = FALSE;
extern bool OppositeTrendLineOrder = FALSE;
extern bool OpenAfterCandleClose = FALSE;
extern bool DeleteTrendLinesAfterOpen = TRUE;
extern bool TrendLinesOCOMode = FALSE;
extern string CC19_____________________ = "========= Pending line handling =========";
extern bool UsePendingLines = TRUE;
extern color PendingLineColor = LightSkyBlue;
extern bool PendingOCOMode = FALSE;
extern string CC20_____________________ = "========= Auto Close-All settings =======";
extern double AutoCloseAllProfitMoney = 0.0;
extern double AutoCloseAllProfitPercent = 0.0;
extern double AutoCloseAllLossMoney = 0.0;
extern double AutoCloseAllLossPercent = 0.0;
extern string CC15_____________________ = "========= Grid feature settings =========";
bool vgi_392 = TRUE;
extern double GridStep = 20.0;
extern int GridMaxOrderCount = 10;
extern double GridLotMultiplier = 1.6;
extern bool GridReCalculateSLTP = TRUE;
extern bool AutoGridMode = FALSE;
string vgs_nsd_424 = "========= Hedge feature settings =========";
bool vgi_432 = TRUE;
extern string CC7______________________ = "========= Visual settings =========";
extern bool DrawPriceLabel = TRUE;
extern bool BackgroundOpacity = FALSE;
int vgi_452 = 2958105;
extern string CC7______________________1____________________ = "========= Control line settings =========";
extern bool ShowControlLineLabels = TRUE;
extern int ControlLineOffset = 10;
extern color ControlLineLabelColor = Black;
extern color StopLossColor = Red;
extern color TakeProfitColor = LimeGreen;
extern color PartialCloseColor = Orange;
extern color BreakEvenColor = LightSkyBlue;
extern string CC8______________________ = "========= Account Panel settings =========";
extern bool ShowAccountPanel = TRUE;
extern int AccountPanelX = 25;
extern int AccountPanelY = 25;
extern color AveragePriceLineColor = SlateGray;
extern string CC9______________________ = "========= Control Panel settings =========";
extern bool ShowControlPanel = TRUE;
extern int ControlPanelX = -220;
extern int ControlPanelY = 25;
extern string CC10_____________________ = "========= Order list settings =========";
extern bool ShowOrderListPanel = TRUE;
extern int OrderListPanelX = 25;
extern int OrderListPanelY = 220;
extern string CC8______________________1 = " 0 - Side by order list, 1 - Bottom of order list";
extern int PropertiesPanelPos = 1;
extern string CC11_____________________ = "========= Profit Panel settings =========";
extern bool ShowProfitPanel = TRUE;
extern int ProfitPanelX = 200;
extern int ProfitPanelY = 25;
extern string CC16_____________________ = "========= Dashboard Panel settings =========";
extern bool ShowDashboard = TRUE;
extern int DashboardX = -220;
extern int DashboardY = 200;
extern double DashboardSpreadRedValue = 3.0;
extern bool Dashboard_OnlyCurrentTF = FALSE;
extern int Dashboard_MAPeriod = 14;
extern int Dashboard_MAMode = 1;
extern int Dashboard_MAPrice = 0;
extern int Dashboard_CCIPeriod = 14;
extern int Dashboard_CCIPrice = 5;
extern int Dashboard_RSIPeriod = 14;
extern int Dashboard_RSIPrice = 5;
extern int Dashboard_StochKPeriod = 8;
extern int Dashboard_StockDPeriod = 3;
extern int Dashboard_StochSlowing = 3;
extern int Dashboard_StochMode = 1;
extern int Dashboard_StochPrice = 0;
extern string CC12_____________________ = "========= Notifications =========";
extern bool ShowNotifications = TRUE;
extern string CC14_____________________ = "========= Extra features =========";
extern bool StealthMode = FALSE;
extern double DontAllowOrderOpenMaxSpread = 0.0;
extern bool ShowPivotPoints = TRUE;
extern bool ShowNextCandleTime = TRUE;
extern color NextCandleTimeTextColor = White;
extern bool ShowSentinelAlerts = TRUE;
extern string CC17_____________________ = "======= Performance settings =========";
extern int TickTime = 200;
extern int BackTestTime = 50;


bool vgi_732 = FALSE;
bool vgi_736 = FALSE;
bool vgi_nsd_740 = TRUE;
int vgi_nsd_744 = 0;
double vgd_748 = 0.0;
int vgi_756;
int vgi_760;
int vgi_764 = 0;
int vgi_768 = 0;
int vg_dttm_772 = 0;
bool vg_bool_776 = FALSE;
double vg_Bid;
double vg_Ask = 0.0;
bool vgi_796 = FALSE;
int vg_dttm_800 = 0;
int vgi_804 = 0;
bool vg_StopEA = FALSE;
bool vg_bool_812 = FALSE;
int vgi_816 = 1000;
int vg_ticket_820 = -1;
string vg_IpServer = "127.0.0.1";
int vgi_832 = 42780;
int vgi_836 = 0;
int vgi_840 = 16;
bool vg_bool_844 = TRUE;
bool vgi_848 = FALSE;
bool vg_bool_852 = TRUE;
bool vg_bool_856 = FALSE;
string vg_name_860 = "";
string vg_InfoExecuteEA = "";
double vDigits = 1.0;
string vg_SymbolCurrencyAccount;
string vgs_892;
string vg_ArrayStrPeriodos[] = {"M1", "M5", "M15", "M30", "H1", "H4", "D1", "W1", "MN"};
int vg_ArrayIntPeriodos[] = {1, 5, 15, 30, 60, 240, 1440, 10080, 43200};

int vgi_nsd_908 = 1;
int vgi_nsd_912 = 10;
int vgi_nsd_916 = 10;
int vgi_nsd_920 = 6;
string vg_FonteLetra = "Verdana";
int vgi_932 = -1;
int vgi_936 = 3145645;
int vgi_940 = 255;
int vg_FontSize = 8;
bool vgi_948 = FALSE;
int vgi_952 = 3;
string vg_comment_956 = "";
bool vg_bool_964 = FALSE;
int vg_ticket_968 = -1;
int vgi_972;
int vgi_nsd_976;
int vgi_nsd_980;
string vgs_984 = "";
int vgi_992 = 0;
string vgs_996 = "DrW.";
string vgs_1004 = "TA";
string vg_NameLineSL = "SL";
string vg_NameLineTP = "TP";
string vgs_nsd_1028 = "TSL";
string vg_NameBreakEven = "BE";
string vgs_1044 = "PC";
string vg_PartialClose1 = "PC1";
string vg_PartialClose2 = "PC2";
string vg_PartialClose3 = "PC3";
string vg_NameGrid = "GRID";
string vg_NamGridParent = "GRIDPARENT";
string vg_NameLevelGrid = "GRIDLEVEL";
string vg_NameGridPrice = "GRIDPRICE";
string vg_NameAvgPrice = "AVGPRICE";
string vg_NamePendingPrice = "PENDING";
string vg_NameLastTrendOpen = "LASTTRENDOPEN";
string vgs_udplovg_1132 = "UDPLog";
double vgd_nsd_1140 = 0.0;
double vgd_nsd_1148 = 0.0;
double vgd_nsd_1156 = 0.0;
double vgd_nsd_1172 = 0.0;
int vg_corner_1180 = 0;
int vgia_1184[4];
int vgia_1188[4];
int vgi_1192;
int vgi_1196;
int vgia_1200[3];
int vgi_1204 = 1;
string vgs_1208 = "ZNTF_";
int vgi_1216 = 0;
int vgi_1220 = 2000;
int vgi_1224 = 20;
int vgi_1228 = 400;
int vgi_nsd_1232 = 50;
bool vgi_1236 = FALSE;
int vg_fontsize_1240 = 10;
int vg_clr_1244 = C'0xE6,0xE6,0xE6';
int vgi_1248 = 15;
int vgia_1252[6][8];
string vgsa_1256[6];
string vgs_1260 = "XCP_";
int vgi_1268;
int vgi_1272;
int vgi_1276 = 170;
int vgi_1280 = 170;
string vgs_1284 = "OL_";
int vgia_1292[11];
int vgi_1296 = 0;
int vgi_1300 = 24;
int vgi_1304 = 12;
int vgi_1308;
int vgi_1312;
int vgi_1316 = 170;
int vgi_1320 = 170;
bool vgi_1324 = FALSE;
int vg_dttm_1328 = 0;
string vgs_1332 = "PP_";
bool vgi_1340 = FALSE;
int vgi_1344;
int vgi_1348;
int vgi_1352 = 320;
int vgi_1356 = 160;
int vgi_1360 = 220;
int vgi_1364 = 30;
int vgi_1368 = 86;
int vgi_1372 = 20;
int vgi_1376 = 25;
string vgs_1380 = "AP_";
int vgi_1388 = 28;
int vgi_1392 = 14;
int vgi_1396;
int vgi_1400;
int vgi_nsd_1404 = 170;
int vgi_1408 = 170;
bool vgi_nsd_1412 = FALSE;
string vgs_1416 = "ProfitP_";
int vgi_1424 = 28;
int vgi_1428 = 14;
int vgi_1432;
int vgi_1436;
int vgi_nsd_1440 = 170;
int vgi_1444 = 170;
bool vgi_nsd_1448 = FALSE;
bool vgi_1452 = FALSE;
int vgi_1456 = 86400;
string vg_NameDashboard = "Dashboard_";
int vgi_1468;
int vgi_1472;
int vgi_nsd_1476 = 170;
int vgi_1480 = 170;
bool vgi_1484 = FALSE;
string vgs_1488 = ".Pivot_";
double vgd_1496;
double vgd_1504;
double vgd_1512;
double vgd_1520;
double vgd_1528;
double vgd_1536;
double vgd_1544;
int vgi_1552 = 14822282;
int vgi_1556 = 3329434;
int vgi_1560 = 16776960;
int vgi_nsd_1564 = 8421504;
int vgi_nsd_1568 = 6908265;
int vgi_1572 = 7;
string vg_NameNextBar = "BNextBar_";
int vg_count_1584 = 0;
string vg_ArrayComment[50];
int vg_count_1592 = 0;
bool vgi_1596 = FALSE;
bool vgi_1600 = FALSE;


//////////////////////////////////////////////////////////////////////////////////////////
int init() {
   f0_38("DrW_");
   GetDigitsPips();
   GetAccountCurrency();
   f0_47();
   vgi_952 = OrderSlippage;
   vg_comment_956 = CommentForOrder;
   vg_bool_964 = ShowSentinelAlerts;
   SetTraceLog(StringConcatenate("Pip multiplier: ", vDigits, ", Digits: ", Digits));
   vgi_768 = GetTickCount() - 1000;
   OrderSelect(OrdersHistoryTotal() - 1, SELECT_BY_POS, MODE_HISTORY);
   vgi_932 = OrderTicket();
   if (IsTesting()) vgi_732 = TRUE;
   HideTestIndicators(TRUE);
   vg_StopEA = TRUE;
   int li_0 = StatusEA();
   if (li_0 <= 0) {
      AddComment(StringConcatenate("TraderAgent", " stopped!"));
      if (li_0 > -1000) return (1);
   }
   vg_StopEA = FALSE;
   if (f0_94()) f0_6();
   if (!vgi_732) f0_113();
   return (0);
}

int deinit() {
   f0_38("DrW_");
   if ((!vg_StopEA) && !vgi_732) f0_23();
   if (!vg_StopEA) f0_163();
   return (0);
}

int start() {
   if (vg_StopEA) {
      StopEA();
      return (0);
   }
   vg_bool_776 = vg_Bid != Bid || vg_Ask != Ask;
   vg_Bid = Bid;
   vg_Ask = Ask;
   if (vgi_1600) {
      PrintComment();
      vgi_1600 = FALSE;
   }
   f0_49();
   return (0);
}
//////////////////////////////////////////////////////////////////////////////////////////

// D47AFFB6503B6D108F7DC3C7539BC8BB
void f0_141(int &aia_0[], int ai_4, string as_8) {
   int li_20;
   int count_24;
   int li_16 = ai_4 >> 16;
   if (li_16 >= 2) {
      ai_4 &= 65535;
      li_20 = ai_4 >> 2;
      count_24 = ai_4 % 4;
      for (int li_28 = 0; li_28 < StringLen(as_8); li_28++) {
         aia_0[li_20] = aia_0[li_20] & (~(255 << (count_24 * 8)));
         aia_0[li_20] = aia_0[li_20] | StringGetChar(as_8, li_28) << (count_24 * 8);
         if (count_24 == 3) {
            li_20++;
            count_24 = 0;
         } else count_24++;
         if (li_16 == 2) break;
         li_16--;
      }
      aia_0[li_20] = aia_0[li_20] & (~(255 << (count_24 * 8)));
   }
}

// 9E32925D7C93C8DA847A44286E60E4E5
void f0_105(int &aia_0[5], int ai_4, int ai_8) {
   int li_16;
   int li_20;
   if (ai_4 < 0) ai_4 = -ai_4;
   int li_12 = ai_4 >> 16;
   if (li_12 != 0) {
      if (li_12 > 4) li_12 = 4;
      ai_4 &= 65535;
      li_16 = ai_4 >> 2;
      li_20 = ai_4 % 4;
      ai_8 &= (-1) >> ((4 - li_12) * 8);
      aia_0[li_16] = aia_0[li_16] & (-1) >> ((4 - li_20) * 8);
      aia_0[li_16] = aia_0[li_16] | ai_8 << (li_20 * 8);
      if (li_20 + li_12 > 4) {
         li_16++;
         aia_0[li_16] = aia_0[li_16] & (-1) << ((li_20 + li_12 - 4) * 8);
         aia_0[li_16] = aia_0[li_16] | ai_8 >> ((8 - li_20 - li_12) * 8);
      }
   }
}

// 4748625205F23D72AC04097BF0528233
int f0_51(int ai_0) {
   return ((ai_0 & 255 * 256) | ai_0 & 65280 >> 8);
}


// 57F68BD7CB298DFCF8C1D55FF163E283
void VerifyTicket(int a_ticket_0, string as_4 = "", int ai_12 = 8) {
   double ld_16;
   double ld_24;
   string ls_32;
   if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) {
      ld_16 = 0;
      ld_24 = 0;
      if (OrderStopLoss() > 0.0) ld_16 = MathAbs((OrderOpenPrice() - OrderStopLoss()) / Point);
      if (OrderTakeProfit() > 0.0) ld_24 = MathAbs((OrderTakeProfit() - OrderOpenPrice()) / Point);
      ls_32 = "";
      if (OrderCloseTime() > 0) ls_32 = ", Close Price: " + DoubleToStr(OrderClosePrice(), Digits);
      SetLog(as_4 + " Ticket #" + a_ticket_0 + ": " + " Type: " + GetStrTypeOrder(OrderType()) + ", LOT: " + DoubleToStr(OrderLots(), 2) + ", Open Price: " + DoubleToStr(OrderOpenPrice(),
         Digits) + ", SL: " + DoubleToStr(OrderStopLoss(), Digits) + " (" + DoubleToStr(ld_16, 0) + ")" + ", TP: " + DoubleToStr(OrderTakeProfit(), Digits) + " (" + DoubleToStr(ld_24,
         0) + ")" + ls_32 + ", Magic: " + OrderMagicNumber() + ", Comment: " + OrderComment(), "ORDER ", ai_12);
      return;
   }
   SetWarningLog("Invalid ticket: " + a_ticket_0);
}

// F095AEEEF8A18556B81B2C841501C9C8
double GetDigitsPips(bool ai_0 = FALSE) {
   vDigits = 1;
   if (ai_0) {
      if (Digits % 4 != FALSE) vDigits = 10;
   } else {
      if (Digits == 5 || (Digits == 3 && StringFind(Symbol(), "JPY") > -1) || (Digits == 2 && StringFind(Symbol(), "XAU") > -1) || (Digits == 2 && StringFind(Symbol(),
         "GOLD") > -1) || (Digits == 3 && StringFind(Symbol(), "XAG") > -1) || (Digits == 3 && StringFind(Symbol(), "SILVER") > -1) || Digits == 1) vDigits = 10;
      if (Digits == 6 || (Digits == 4 && StringFind(Symbol(), "JPY") > -1) || (Digits == 3 && StringFind(Symbol(), "XAU") > -1) || (Digits == 3 && StringFind(Symbol(),
         "GOLD") > -1) || (Digits == 4 && StringFind(Symbol(), "XAG") > -1) || (Digits == 4 && StringFind(Symbol(), "SILVER") > -1)) vDigits = 100;
   }
   return (vDigits);
}

// 0D51E5907CFDB5931B9358945E89438B
double f0_7(double a_pips_0) {
   return (a_pips_0 * Point * vDigits);
}

// D315BD4B967F698F17705C9D8F74028C
double f0_139(double ad_0) {
   return (ad_0 / Point / vDigits);
}

// E5B9BDBE11C5EB46DAE10F059B104BF7
double f0_153(double ad_0, double ad_8) {
   double ld_24;
   double ticksize_16 = MarketInfo(Symbol(), MODE_TICKSIZE);
   if (ticksize_16 != 0.0) {
      ld_24 = MarketInfo(Symbol(), MODE_TICKVALUE) * (Point / ticksize_16);
      return (ad_0 * vDigits * ld_24 * ad_8);
   }
   return (0);
}

// 9A116C50D133C8648404081885194300
double NormalizeDoubleDigits(double ad_0, int a_digits_8 = -1) {
   if (a_digits_8 == -1) a_digits_8 = Digits;
   return (NormalizeDouble(ad_0, a_digits_8));
}

// CCA857FBDD027B602626930098BCCF85
string f0_136(double ad_0, int ai_8 = 2) {
   if (ad_0 < 0.0) return (StringConcatenate("-", vg_SymbolCurrencyAccount, GetDoubleToStr(MathAbs(ad_0), ai_8), vgs_892));
   return (StringConcatenate(vg_SymbolCurrencyAccount, GetDoubleToStr(ad_0, ai_8), vgs_892));
}

// A2089E7697BB46B042BA7BD3E2EB50F1
string GetDoubleToStr(double ad_0, int ai_8 = 0) {
   return (DoubleToStr(ad_0, ai_8));
}

// 44A6E0D66A0838FD2F5DD7630F7C1327
void GetAccountCurrency() {
   string ls_0 = AccountCurrency();
   if (ls_0 == "USD") {
      vg_SymbolCurrencyAccount = "$";
      return;
   }
   if (ls_0 == "EUR") {
      vg_SymbolCurrencyAccount = "Ђ";
      return;
   }
   if (ls_0 == "GBP") {
      vg_SymbolCurrencyAccount = "Ј";
      return;
   }
   if (ls_0 == "JPY") {
      vg_SymbolCurrencyAccount = "Ґ";
      return;
   }
   vg_SymbolCurrencyAccount = "";
}

// 8B2937C36CA255BF2098D743850095A6
double GetNormalizeLot(double pLot, string a_symbol_8 = "") {
   string ls_48;
   if (a_symbol_8 == "") a_symbol_8 = Symbol();
   double marginrequired_16 = MarketInfo(a_symbol_8, MODE_MARGINREQUIRED);
   double lotstep_24 = MarketInfo(a_symbol_8, MODE_LOTSTEP);
   double minlot_32 = MarketInfo(a_symbol_8, MODE_MINLOT);
   if (lotstep_24 != 0.0) pLot = MathFloor(pLot / lotstep_24) * lotstep_24;
   pLot = MathMax(pLot, minlot_32);
   double ld_40 = pLot * marginrequired_16;
   if (ld_40 > AccountFreeMargin()) {
      ls_48 = "You have not enough money! Free margin: " + DoubleToStr(AccountFreeMargin(), 2) + ", Require: " + DoubleToStr(ld_40, 2);
      Print(ls_48);
      return (0);
   }
   return (pLot);
}

// 620ECEBAA3D316E5E5B8B3F19CFCE19B
double f0_67(double ad_nsd_0, bool ai_8 = FALSE) {
   double ld_ret_20;
   double ld_ret_28;
   double ld_12 = AccountBalance();
   if (ld_12 != 0.0) {
      ld_ret_20 = AccountMargin() + (AccountBalance() - AccountEquity());
      ld_ret_28 = 100.0 * (ld_ret_20 / ld_12);
      if (!(ai_8)) return (ld_ret_20);
      return (ld_ret_28);
   }
   return (0);
}

// 88B988D72577FB329BF0848DE410CA17
string f0_89(string &as_0, string as_8) {
   string ls_ret_16 = "";
   int li_24 = StringFind(as_0, as_8, 0);
   if (li_24 != -1) {
      if (li_24 > 0) ls_ret_16 = StringSubstr(as_0, 0, li_24);
      as_0 = StringSubstr(as_0, li_24 + StringLen(as_8));
   } else {
      ls_ret_16 = as_0;
      as_0 = "";
   }
   return (ls_ret_16);
}

// 06CCE67E6D164C6A1BBC38BAD20E8EDF
int GetPrimeiroValor(bool ai_0, int ai_4, int ai_8) {
   if (ai_0) return (ai_4);
   return (ai_8);
}

// 3BE4B59601B7B2E82D21E1C5C718B88F
double GetPrimeiroValorDouble(bool ai_0, double ad_4, double ad_12) {
   if (ai_0) return (ad_4);
   return (ad_12);
}

// 1368D28A27D3419A04740CF6C5C45FD7
string f0_12(int ai_0) {
   for (int li_4 = ArraySize(vg_ArrayIntPeriodos) - 1; li_4 >= 0; li_4--)
      if (ai_0 == vg_ArrayIntPeriodos[li_4]) return (vg_ArrayStrPeriodos[li_4]);
   return ("");
}

// 14C18FA4BA9031D803BCA7111529C553
string GetApenasLetras(string as_0) {
   int li_36;
   string ls_ret_8 = "";
   string ls_16 = "abcdefghijklmnopqrstuvwxyz";
   string ls_24 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   for (int li_32 = 0; li_32 < StringLen(as_0); li_32++) {
      li_36 = StringFind(ls_24, StringSubstr(as_0, li_32, 1), 0);
      if (li_36 >= 0) ls_ret_8 = ls_ret_8 + StringSubstr(ls_16, li_36, 1);
      else ls_ret_8 = ls_ret_8 + StringSubstr(as_0, li_32, 1);
   }
   return (ls_ret_8);
}

// 3B196A05381EC289525B2E53A98926D7
void f0_38(string as_0 = "") {
   for (int li_8 = ObjectsTotal() - 1; li_8 >= 0; li_8--)
      if (as_0 == "" || StringFind(ObjectName(li_8), as_0, 0) >= 0) ObjectDelete(ObjectName(li_8));
}

// 7126649E3622237FA222CDC6BBA2273F
void f0_75(int a_dttm_0, double ad_4, string a_text_12, color a_clr_20 = 16777215, bool ai_24 = TRUE, bool ai_28 = FALSE) {
   int count_32 = 0;
   string ls_36 = "U";
   if (!ai_24) ls_36 = "D";
   string str_concat_44 = StringConcatenate("___PRICELBL_", ls_36, GetDoubleToStr(a_dttm_0, 0), "_", GetDoubleToStr(ad_4, 5));
   if (ai_28 && ObjectFind(str_concat_44) != -1) {
      while (ObjectFind(str_concat_44) != -1) {
         count_32++;
         str_concat_44 = StringConcatenate("PRICELBL_", ls_36, GetDoubleToStr(a_dttm_0, 0), "_", GetDoubleToStr(ad_4, 5), "_", count_32);
      }
   }
   if (ObjectFind(str_concat_44) == -1 || ObjectCreate(str_concat_44, OBJ_TEXT, 0, 0, 0)) ObjectSet(str_concat_44, OBJPROP_TIME1, a_dttm_0);
   double ld_52 = ad_4 + 5.0 * Point;
   if (!ai_24) ld_52 = ad_4;
   ObjectSet(str_concat_44, OBJPROP_PRICE1, ld_52);
   ObjectSetText(str_concat_44, a_text_12, vg_FontSize, "Arial", a_clr_20);
}

// F5CF62E4BA63BB2971FB9EED7A4B943F
void f0_168(int ai_0, int ai_4, double ad_8, double ad_16) {
   int li_24 = vgi_936;
   if (ad_16 < 0.0) li_24 = vgi_940;
   f0_75(ai_4, ad_8, StringConcatenate(f0_136(ad_16, 2), "                  "), li_24, (ai_0 == 0 && ad_16 > 0.0) || (ai_0 == 1 && ad_16 < 0.0), 1);
}

// E1C2C4B95F3F081D753ECB174966268B
void f0_148(int a_magic_0, int a_cmd_4 = -1) {
   int li_8 = vgi_932;
   int hist_total_12 = OrdersHistoryTotal();
   for (int pos_16 = hist_total_12 - 1; pos_16 >= 0; pos_16--) {
      if (OrderSelect(pos_16, SELECT_BY_POS, MODE_HISTORY)) {
         if (OrderType() == a_cmd_4 || a_cmd_4 == -1 && OrderSymbol() == Symbol() && OrderMagicNumber() == a_magic_0) {
            if (!(OrderTicket() > vgi_932 || vgi_932 == -1 && OrderType() == OP_BUY || OrderType() == OP_SELL)) break;
            f0_168(OrderType(), OrderCloseTime(), OrderClosePrice(), OrderProfit() + OrderSwap() + OrderCommission());
            li_8 = MathMax(li_8, OrderTicket());
            if (vgi_932 == -1) vgi_932 = OrderTicket();
         }
      }
   }
   vgi_932 = li_8;
}

// 498CFE7F1A6FB1C64C3B3ACF54438508
double f0_53(string a_symbol_0, double ad_8, double ad_16 = 0.0, double ad_24 = 0.0) {
   double ld_72;
   double ld_80;
   double ld_88;
   string ls_96;
   double ld_ret_32 = 0;
   if (a_symbol_0 == "") a_symbol_0 = Symbol();
   double marginrequired_40 = MarketInfo(a_symbol_0, MODE_MARGINREQUIRED);
   double ld_48 = MarketInfo(a_symbol_0, MODE_MINLOT);
   double lotstep_56 = MarketInfo(a_symbol_0, MODE_LOTSTEP);
   double free_magrin_64 = AccountFreeMargin();
   if (ad_16 > 0.0) {
      ld_72 = ad_16 * marginrequired_40;
      if (ld_72 <= AccountFreeMargin()) ld_ret_32 = ad_16;
      else ld_ret_32 = MathFloor(free_magrin_64 / marginrequired_40 / lotstep_56) * lotstep_56;
   } else {
      if (ad_24 > 0.0) {
         ld_80 = AccountEquity() * (ad_8 / 100.0);
         ld_88 = MarketInfo(a_symbol_0, MODE_TICKVALUE) * vDigits;
         ld_ret_32 = ld_80 / (ld_88 * ad_24);
         ld_ret_32 = MathFloor(ld_ret_32 / lotstep_56) * lotstep_56;
      } else {
         if (ad_8 > 100.0) ad_8 = 100;
         if (ad_8 == 0.0) ld_ret_32 = ld_48;
         else ld_ret_32 = MathFloor(free_magrin_64 * ad_8 / 100.0 / marginrequired_40 / lotstep_56) * lotstep_56;
      }
   }
   if (ld_ret_32 < ld_48) ld_ret_32 = ld_48;
   ld_72 = ld_ret_32 * marginrequired_40;
   if (ld_72 > AccountFreeMargin()) {
      ls_96 = "You have not enough money! Free margin: " + GetDoubleToStr(AccountFreeMargin(), 2) + ", Require: " + GetDoubleToStr(ld_72, 2);
      Print(ls_96);
      return (0);
   }
   return (ld_ret_32);
}

// 401811F13CF39DF9D4C78BFA5C77530C
int VerifyTradeBrokerBusy(int ai_0 = 20) {
   int li_4 = 500;
   for (int count_8 = 0; IsTradeContextBusy() && count_8 < ai_0; count_8++) Sleep(li_4);
   if (count_8 >= ai_0) SetWarningLog(StringConcatenate("Trade context is busy more than ", GetDoubleToStr(li_4 * count_8 / 1000, 2), " seconds"));
   else
      if (count_8 > 0) SetErrorLog(StringConcatenate("Trade context was busy ", GetDoubleToStr(li_4 * count_8 / 1000, 2), " seconds"));
   RefreshRates();
   return (count_8 < ai_0);
}

// 3ED4137FCCCAF209812ED7B28A787689
int OpenOrder(int pTipoOrdem, double a_lots_4, double ad_12, double ad_20, int a_magic_28, double ad_32 = 0.0, double ad_40 = 0.0) {
   color color_48;
   double ld_52;
   double ld_60;
   double ld_68;
   double ld_76;
   int li_84;
   int ticket_88;
   double ld_92;
   string str_concat_100;
   if (a_lots_4 != 0.0) {
      color_48 = GetColor(pTipoOrdem);
      ld_60 = 0.0;
      ld_68 = 0.0;
      RefreshRates();
      if (pTipoOrdem == OP_BUYLIMIT || pTipoOrdem == OP_BUYSTOP || pTipoOrdem == OP_BUY) {
         if (ad_32 != 0.0) ld_52 = Ask + f0_7(ad_32);
         else {
            if (ad_40 != 0.0) ld_52 = ad_40;
            else ld_52 = Ask;
         }
         if (ad_12 > 0.0) ld_60 = NormalizeDoubleDigits(ld_52 - f0_7(ad_12));
         if (ad_20 > 0.0) ld_68 = NormalizeDoubleDigits(ld_52 + f0_7(ad_20));
      } else {
         if (pTipoOrdem == OP_SELLLIMIT || pTipoOrdem == OP_SELLSTOP || pTipoOrdem == OP_SELL) {
            if (ad_32 != 0.0) ld_52 = Bid - f0_7(ad_32);
            else {
               if (ad_40 != 0.0) ld_52 = ad_40;
               else ld_52 = Bid;
            }
            if (ad_12 > 0.0) ld_60 = NormalizeDoubleDigits(ld_52 + f0_7(ad_12));
            if (ad_20 > 0.0) ld_68 = NormalizeDoubleDigits(ld_52 - f0_7(ad_20));
         }
      }
      if (!VerifyTradeBrokerBusy()) {
         vgs_984 = "Sorry, but the trade context is busy!";
         SetWarningLog("Order open error! OrderSend(" + Symbol() + ", " + GetStrTypeOrder(pTipoOrdem) + ", " + DoubleToStr(a_lots_4, 2) + ", " + DoubleToStr(ld_52, Digits) + ", " + DoubleToStr(vgi_952 * vDigits,
            1) + ", " + DoubleToStr(ld_60, Digits) + ", " + DoubleToStr(ld_68, Digits) + ", \'" + vg_comment_956 + "\', " + DoubleToStr(a_magic_28, 0) + ") error - " + vgs_984);
         return (0);
      }
      ld_76 = MarketInfo(OrderSymbol(), MODE_SPREAD) / vDigits;
      SetTraceLog("Open order OrderSend(" + Symbol() + ", " + GetStrTypeOrder(pTipoOrdem) + ", " + DoubleToStr(a_lots_4, 2) + ", " + DoubleToStr(ld_52, Digits) + ", " + DoubleToStr(vgi_952 * vDigits,
         1) + ", " + DoubleToStr(ld_60, Digits) + ", " + DoubleToStr(ld_68, Digits) + ", \'" + vg_comment_956 + "\', " + DoubleToStr(a_magic_28, 0) + ") ... Current spread: " + GetDoubleToStr(ld_76, 2));
      li_84 = GetTickCount();
      ticket_88 = -1;
      if (vgi_948) ticket_88 = OrderSend(Symbol(), pTipoOrdem, a_lots_4, NormalizeDoubleDigits(ld_52), vgi_952 * vDigits, 0, 0, vg_comment_956, a_magic_28, 0, color_48);
      else ticket_88 = OrderSend(Symbol(), pTipoOrdem, a_lots_4, NormalizeDoubleDigits(ld_52), vgi_952 * vDigits, NormalizeDoubleDigits(ld_60), NormalizeDoubleDigits(ld_68), vg_comment_956, a_magic_28, 0, color_48);
      if (ticket_88 < 0) {
         vgs_984 = GetError(GetLastError());
         SetWarningLog("Order open error! OrderSend(" + Symbol() + ", " + GetStrTypeOrder(pTipoOrdem) + ", " + DoubleToStr(a_lots_4, 2) + ", " + DoubleToStr(ld_52, Digits) + ", " + DoubleToStr(vgi_952 * vDigits,
            1) + ", " + DoubleToStr(ld_60, Digits) + ", " + DoubleToStr(ld_68, Digits) + ", \'" + vg_comment_956 + "\', " + DoubleToStr(a_magic_28, 0) + ") error - " + vgs_984);
         return (0);
      }
      vgi_992 = GetTickCount() - li_84;
      VerifyTicket(ticket_88, StringConcatenate("New order (", vgi_992, " ms)!"));
      vg_ticket_968 = ticket_88;
      if (vgi_948) {
         Sleep(1000);
         VerifyTradeBrokerBusy();
         if (!OrderModify(ticket_88, NormalizeDoubleDigits(OrderOpenPrice()), NormalizeDoubleDigits(ld_60), NormalizeDoubleDigits(ld_68), 0, Black)) {
            vgs_984 = GetError(GetLastError());
            SetErrorLog(StringConcatenate("OrderModify(", ticket_88, ", ", OrderOpenPrice(), ", ", ld_60, ", ", ld_68, ", 0) error (method: OpenOrder) - " + vgs_984));
         }
      }
      if (vg_bool_964 && NormalizeDoubleDigits(OrderOpenPrice()) != NormalizeDoubleDigits(ld_52)) {
         ld_92 = f0_139(OrderOpenPrice() - ld_52);
         str_concat_100 = StringConcatenate("[", Symbol(), " ", f0_12(Period()), "] Order (", ticket_88, ") open price changed (", ld_92, " pips)! Original: ", NormalizeDoubleDigits(ld_52),
            ", Opened price: ", NormalizeDoubleDigits(OrderOpenPrice()), ", Before spread: ", ld_76);
         if (ld_92 >= 1.0 || ld_92 <= -1.0) SetErrorLogAlert(str_concat_100);
         else SetErrorLog(str_concat_100);
      }
      vgi_972 = Time[0];
      if (pTipoOrdem == OP_BUY) vgi_nsd_976 = vgi_972;
      else
         if (pTipoOrdem == OP_SELL) vgi_nsd_980 = vgi_972;
   }
   return (1);
}

// F235F73FF9E6C9B0402F9856A41D6B1B
int ModifyTicketOrder(int a_ticket_0, double ad_4, double ad_12, double a_order_stoploss_20 = 0.0, double a_order_takeprofit_28 = 0.0) {
   double price_40;
   double order_stoploss_48;
   double order_takeprofit_56;
   bool li_ret_36 = FALSE;
   if (OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES)) {
      order_stoploss_48 = OrderStopLoss();
      order_takeprofit_56 = OrderTakeProfit();
      if (OrderType() == OP_BUY) {
         price_40 = MarketInfo(OrderSymbol(), MODE_ASK);
         if (ad_4 > 0.0) order_stoploss_48 = NormalizeDoubleDigits(price_40 - f0_7(ad_4));
         if (ad_12 > 0.0) order_takeprofit_56 = NormalizeDoubleDigits(price_40 + f0_7(ad_12));
      } else {
         if (OrderType() == OP_SELL) {
            price_40 = MarketInfo(OrderSymbol(), MODE_BID);
            if (ad_4 > 0.0) order_stoploss_48 = NormalizeDoubleDigits(price_40 + f0_7(ad_4));
            if (ad_12 > 0.0) order_takeprofit_56 = NormalizeDoubleDigits(price_40 - f0_7(ad_12));
         }
      }
      if (a_order_stoploss_20 > 0.0) order_stoploss_48 = a_order_stoploss_20;
      if (a_order_takeprofit_28 > 0.0) order_takeprofit_56 = a_order_takeprofit_28;
      if ((order_stoploss_48 > 0.0 && NormalizeDoubleDigits(order_stoploss_48) != NormalizeDoubleDigits(OrderStopLoss())) || (order_takeprofit_56 > 0.0 && NormalizeDoubleDigits(order_takeprofit_56) != NormalizeDoubleDigits(OrderTakeProfit()))) {
         VerifyTradeBrokerBusy();
         if (!OrderModify(OrderTicket(), NormalizeDoubleDigits(OrderOpenPrice()), NormalizeDoubleDigits(order_stoploss_48), NormalizeDoubleDigits(order_takeprofit_56), 0)) {
            vgs_984 = GetError(GetLastError());
            SetErrorLog(StringConcatenate("OrderModify(", OrderTicket(), ", ", OrderOpenPrice(), ", ", order_stoploss_48, ", ", order_takeprofit_56, ", 0) error (method: ModifyTicketOrder) - " +
               vgs_984));
            li_ret_36 = FALSE;
         } else {
            li_ret_36 = TRUE;
            VerifyTicket(a_ticket_0, "Modify order!");
         }
      }
   } else SetErrorLog("OrderSelect() error (method: ModifyTicketOrder) - " + GetError(GetLastError()));
   return (li_ret_36);
}

// B48C18DF8AF1F72C0BA3C0FF3FEED7C1
int ModifyPendingOrderPrice(int a_ticket_0, double ad_4, double ad_12, double ad_20) {
   bool li_ret_28 = FALSE;
   if (OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES)) {
      if (NormalizeDoubleDigits(OrderOpenPrice()) != NormalizeDoubleDigits(ad_4)) {
         VerifyTradeBrokerBusy();
         if (!OrderModify(OrderTicket(), NormalizeDoubleDigits(ad_4), NormalizeDoubleDigits(ad_12), NormalizeDoubleDigits(ad_20), OrderExpiration(), GetColor(OrderType()))) {
            vgs_984 = GetError(GetLastError());
            SetErrorLog(StringConcatenate("OrderModify(", OrderTicket(), ", ", ad_4, ", ", ad_12, ", ", ad_20, ", ", OrderExpiration(), ") error (method: ModifyPendingOrderPrice) - " +
               vgs_984));
            li_ret_28 = FALSE;
         } else {
            li_ret_28 = TRUE;
            VerifyTicket(a_ticket_0, "Modify pending order!");
         }
      }
   } else SetErrorLog("OrderSelect() error (method: ModifyPendingOrderPrice) - " + GetError(GetLastError()));
   return (li_ret_28);
}

// 1F083AF200C3B46024FBE1FC4E9CC80E
int GetColor(int ai_0) {
   if (ai_0 == 0 || ai_0 == 2 || ai_0 == 4) return (16711680);
   if (ai_0 == 1 || ai_0 == 3 || ai_0 == 5) return (255);
   return (0);
}

// D43CF0F27808F53715C65F405A5023D1
int CloseOrder(int a_ticket_0) {
   color color_4;
   int li_8;
   double ld_12;
   double ld_20;
   int is_closed_28;
   double ld_32;
   string str_concat_40;
   if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) {
      color_4 = GetColor(OrderType());
      li_8 = GetTickCount();
      VerifyTradeBrokerBusy();
      ld_12 = GetPrimeiroValorDouble(OrderType() == OP_BUY, Bid, Ask);
      ld_20 = MarketInfo(OrderSymbol(), MODE_SPREAD) / vDigits;
      is_closed_28 = OrderClose(OrderTicket(), OrderLots(), NormalizeDoubleDigits(OrderClosePrice()), vgi_952 * vDigits, color_4);
      if (is_closed_28 < 0) {
         SetErrorLogAlert("OrderClose(" + OrderTicket() + ") error (method: CloseOrder) - " + GetError(GetLastError()));
         return (0);
      }
      vgi_992 = GetTickCount() - li_8;
      VerifyTicket(OrderTicket(), StringConcatenate("Order closed (", vgi_992, " ms)! Profit: $", DoubleToStr(OrderProfit() + OrderSwap() + OrderCommission(), 2)));
      if (!(vg_bool_964)) return (1);
      if (NormalizeDoubleDigits(OrderClosePrice()) == NormalizeDoubleDigits(ld_12)) return (1);
      ld_32 = f0_139(OrderClosePrice() - ld_12);
      str_concat_40 = StringConcatenate("[", Symbol(), " ", f0_12(Period()), "] Order (", a_ticket_0, ") close price changed (", ld_32, " pips)! Original: ", NormalizeDoubleDigits(ld_12),
         ", Closed price: ", NormalizeDoubleDigits(OrderClosePrice()), ", Before spread: ", ld_20);
      if (ld_32 >= 1.0 || ld_32 <= -1.0) SetErrorLogAlert(str_concat_40);
      else SetErrorLog(str_concat_40);
      return (1);
   }
   return (0);
}

// 29C540D42AE92A3223D6E1A9AB741030
int CloseOrderPartial(int a_ticket_0, int ai_4) {
   double order_lots_12;
   double lots_20;
   bool is_closed_8 = FALSE;
   if (OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES)) {
      order_lots_12 = OrderLots();
      lots_20 = GetNormalizeLot(order_lots_12 * ai_4 / 100.0);
      if (lots_20 > 0.0 && lots_20 != order_lots_12) {
         VerifyTradeBrokerBusy();
         VerifyTicket(OrderTicket(), "Close partial order. Partial LOT: " + DoubleToStr(lots_20, 2));
         is_closed_8 = OrderClose(OrderTicket(), lots_20, NormalizeDoubleDigits(OrderClosePrice()), vgi_952 * vDigits, Yellow);
         if (!is_closed_8) SetErrorLogAlert("OrderClose(" + OrderTicket() + ", " + lots_20 + ") error (method: CloseOrderPartial) - " + GetError(GetLastError()));
      }
   }
   return (is_closed_8);
}

// B428A88CD9DF965BCCC23643E79706F2
int GetOrderCount(int pTipoOrdem, int pMagicNumber) {
   int count_8 = 0;
   for (int pos_12 = OrdersTotal() - 1; pos_12 >= 0; pos_12--) {
      if (OrderSelect(pos_12, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderType() == pTipoOrdem || pTipoOrdem == -1 && OrderSymbol() == Symbol() && OrderMagicNumber() == pMagicNumber) count_8++;
      } else Print("OrderSelect() error (method: getOrderCount) - ", GetError(GetLastError()));
   }
   return (count_8);
}

// 3562582EF5099112B14C7258B3FECDA0
double GetOrderProfit(int pTipoOrdem, int pMagicNumber) {
   double ld_ret_8 = 0.0;
   for (int pos_16 = OrdersTotal() - 1; pos_16 >= 0; pos_16--) {
      if (OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderType() == pTipoOrdem || pTipoOrdem == -1 && OrderSymbol() == Symbol() && OrderMagicNumber() == pMagicNumber) ld_ret_8 += OrderProfit() + OrderSwap() + OrderCommission();
      } else Print("OrderSelect() error (method: getOrderProfit) - ", GetError(GetLastError()));
   }
   return (ld_ret_8);
}

// Retorna o ticket da ultima ordem aberta
int GetLastOpenTicket(int pTipoOrdem, int pMagicNumber) {
   int ticket_8;
   int ticket_12 = 0;
   for (int pos_16 = OrdersTotal() - 1; pos_16 >= 0; pos_16--) {
      OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderType() == pTipoOrdem || pTipoOrdem == -1 && OrderSymbol() == Symbol() && OrderMagicNumber() == pMagicNumber) {
         ticket_8 = OrderTicket();
         if (ticket_8 > ticket_12) ticket_12 = ticket_8;
      }
   }
   return (ticket_12);
}

// E39EB44E9236337DBF2220C9902FAD68
string f0_151(string as_0, int ai_8 = -1) {
   if (ai_8 == -1) return (StringConcatenate(vgs_996, "G_", as_0));
   return (StringConcatenate(vgs_996, ai_8, "_", as_0));
}

// 5D5B78699E57104F2FA03BBDF7B9197B
string CreateHLine(string as_0, string a_text_8, int ai_16 = -1) {
   string name_20 = f0_151(as_0, ai_16);
   if (ObjectFind(name_20) == -1) {
      ObjectCreate(name_20, OBJ_HLINE, 0, 0, 0);
      ObjectSet(name_20, OBJPROP_COLOR, CLR_NONE);
   }
   ObjectSetText(name_20, a_text_8, 0);
   return (name_20);
}

// FBDC0FE21760429A9A6F11B2349D9766
void f0_172(string as_0, int ai_8, int ai_12 = -1) {
   CreateHLine(as_0, GetDoubleToStr(ai_8, 0), ai_12);
}

// F21D692D6A0306D3155FDAA501D856C4
void f0_164(string as_0, int ai_8, int ai_12 = -1) {
   f0_172(as_0, GetPrimeiroValor(ai_8, 1, 0), ai_12);
}

// 02349AD6FAB026BA3C46B06ECCBC51A6
string CreateHLineForTicket(string as_0, double ad_8, int ai_16 = -1, color a_clr_20 = -1, int a_style_24 = 0) {
   string name_28 = CreateHLine(as_0, ad_8, ai_16);
   ObjectSet(name_28, OBJPROP_PRICE1, ad_8);
   ObjectSet(name_28, OBJPROP_STYLE, a_style_24);
   if (a_clr_20 != CLR_NONE) ObjectSet(name_28, OBJPROP_COLOR, a_clr_20);
   return (name_28);
}

// C55582518CBA2C464F29F5BAE1C68DEF
string f0_129(string as_0, int ai_8 = -1) {
   string ls_nsd_20;
   string name_12 = f0_151(as_0, ai_8);
   return (ObjectDescription(name_12));
}

// 356039C5D703DCB56F4879935BA31135
double f0_31(string as_0, int ai_8 = -1) {
   string name_12 = f0_151(as_0, ai_8);
   if (ObjectFind(name_12) == -1) return (EMPTY_VALUE);
   return (NormalizeDoubleDigits(ObjectGet(name_12, OBJPROP_PRICE1)));
}

// 5173A4BF4B690EEB6E19049C96B168CE
int f0_56(string as_0, int ai_8 = -1) {
   string ls_12 = f0_129(as_0, ai_8);
   if (ls_12 == "") return (EMPTY_VALUE);
   return (MathRound(StrToDouble(ls_12)));
}

// DCDE74C7DAC0D8DB7A9D163D8715FA29
double f0_145(string as_0, int ai_8 = -1) {
   string ls_12 = f0_129(as_0, ai_8);
   if (ls_12 == "") return (EMPTY_VALUE);
   return (StrToDouble(ls_12));
}

// 4226BC9394DA5D70553D304AE75F7AFB
int f0_45(string as_0, int ai_8 = -1) {
   string ls_12 = f0_129(as_0, ai_8);
   if (ls_12 == "") return (0);
   return (ls_12 == "1");
}

// 0F4BEB3FF65A97C25BFCE93C0F43B321
string f0_9(string as_0, int ai_8 = -1) {
   string ls_12 = ".";
   if (IsTesting()) ls_12 = "t.";
   if (ai_8 == -1) return (StringConcatenate(vgs_1004, ls_12, "G_", Symbol(), "_", MagicNumber, "_", as_0));
   return (StringConcatenate(vgs_1004, ls_12, ai_8, "_", as_0));
}

// 22DDEC2378F13A723E0661C5486289FB
double f0_22(string as_0, int ai_8 = -1, double ad_12 = EMPTY_VALUE, bool ai_20 = FALSE) {
   string var_name_24 = f0_9(as_0, ai_8);
   if (GlobalVariableCheck(var_name_24)) return (GlobalVariableGet(var_name_24));
   if (ai_20 && ad_12 != EMPTY_VALUE) GlobalVariableSet(var_name_24, ad_12);
   return (ad_12);
}

// 76D720982E767099D1C64D3CFDDE7E8D
void VerifyAutoCloseAll() {
   bool li_4;
   double ld_8;
   double ld_16;
   for (int pos_0 = OrdersTotal() - 1; pos_0 >= 0; pos_0--) {
      if (OrderSelect(pos_0, SELECT_BY_POS, MODE_TRADES)) {
         if (vgi_736 || OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime() == 0) {
            if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
               if (!(GerenciaGrid(OrderTicket()))) break;
               continue;
            }
            if (OrderSelect(pos_0, SELECT_BY_POS, MODE_TRADES)) f0_167(OrderTicket());
         }
      }
   }
   if (AutoCloseAllProfitMoney > 0.0 || AutoCloseAllProfitPercent > 0.0 || AutoCloseAllLossMoney > 0.0 || AutoCloseAllLossPercent > 0.0) {
      li_4 = FALSE;
      ld_8 = GetOrderProfit(-1, MagicNumber);
      if (AutoCloseAllProfitMoney > 0.0) {
         if (ld_8 >= AutoCloseAllProfitMoney) {
            SetWarningLog(StringConcatenate("Profit reach the \'AutoCloseAllProfitMoney\' value (", ld_8, " >= ", AutoCloseAllProfitMoney, "). Close all orders..."));
            li_4 = TRUE;
         }
      }
      if (!li_4 && AutoCloseAllLossMoney > 0.0) {
         ld_8 = GetOrderProfit(-1, MagicNumber);
         if (ld_8 <= 0.0 - AutoCloseAllLossMoney) {
            SetWarningLog(StringConcatenate("Loss reach the \'AutoCloseAllLossMoney\' value (", ld_8, " <= -", AutoCloseAllLossMoney, "). Close all orders..."));
            li_4 = TRUE;
         }
      }
      if (!li_4 && AutoCloseAllProfitPercent > 0.0 && AccountBalance() > 0.0) {
         ld_16 = AccountBalance() * (AutoCloseAllProfitPercent / 100.0);
         if (ld_8 >= ld_16) {
            SetWarningLog(StringConcatenate("Profit reach the \'AutoCloseAllProfitPercent\' value (", AutoCloseAllProfitPercent, "%). Profit: ", ld_8, ", EQLimit: ", ld_16, ". Close all orders..."));
            li_4 = TRUE;
         }
      }
      if (!li_4 && AutoCloseAllLossPercent > 0.0 && AccountBalance() > 0.0) {
         ld_16 = -1.0 * (AccountBalance() * AutoCloseAllLossPercent / 100.0);
         if (ld_16 < 0.0 && ld_8 <= ld_16) {
            SetWarningLog(StringConcatenate("Profit reach the \'AutoCloseAllLossPercent\' value (", AutoCloseAllLossPercent, "%). Profit: ", ld_8, ", EQLimit: ", ld_16, ". Close all orders..."));
            li_4 = TRUE;
         }
      }
      if (li_4) {
        ExibeMensagem("Please wait!", "Closing all orders...", 3);
         CloseAllOrders();
      }
   }
   LimpaLinhas();
   if (DrawPriceLabel) f0_148(MagicNumber);
}

// C2E84E4BE8F91EAB42131A8D7A20024E
bool GerenciaGrid(int a_ticket_0) {
   bool li_4;
   int li_8;
   int li_12;
   if (OrderTicket() == a_ticket_0 || OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES)) {
      f0_167(a_ticket_0);
      if (OrderTicket() == a_ticket_0 || OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES) && OrderCloseTime() == 0) {
         li_4 = f0_45(vg_NameGrid, a_ticket_0);
         li_8 = f0_56(vg_NamGridParent, a_ticket_0);
         if (li_8 != EMPTY_VALUE) {
            if (f0_56(vg_NameLevelGrid, li_8) == EMPTY_VALUE && vg_bool_776) {
               SetLog(StringConcatenate("Parent order (", li_8, ") not found. Closing..."));
               CloseAllGrid(a_ticket_0);
               return (TRUE);
            }
         }
         if (li_4) OpenGridfoTicket(a_ticket_0);
         else {
            if (AutoGridMode) {
               li_12 = f0_56(vg_NameGrid, a_ticket_0);
               if (li_12 == EMPTY_VALUE && li_8 == EMPTY_VALUE) f0_134(a_ticket_0);
            }
         }
      }
   }
   return (TRUE);
}

// AAEEC1DA66744E56049D8EB29EBD4B9E
int OpenOrderNow(int ai_0, double ad_4) {
   double ld_12;
   if (DontAllowOrderOpenMaxSpread > 0.0) {
      ld_12 = MarketInfo(Symbol(), MODE_SPREAD) / vDigits;
      if (ld_12 >= DontAllowOrderOpenMaxSpread) {
         SetWarningLog(StringConcatenate("Order open don\'t allowed! Spread is too high: ", ld_12, " (Max: ", DontAllowOrderOpenMaxSpread, ")"));
        ExibeMensagem("Order open error!", "Spread is too high! Current: " + GetDoubleToStr(ld_12, 1) + " (Max: " + GetDoubleToStr(DontAllowOrderOpenMaxSpread, 1) + ")", 2, 2000);
         return (-1);
      }
   }
   f0_5();
   int ticket_20 = -1;
   if (OpenOrder(ai_0, ad_4, 0, 0, MagicNumber)) {
      ticket_20 = vg_ticket_968;
      f0_160(ticket_20);
      WindowRedraw();
      GerenciaTicket(ticket_20);
   } else f0_1();
   return (ticket_20);
}

// 86EFCD35CE6F1F09B11E9598963798FE
int CloseAllOrders() {
   for (int pos_0 = OrdersTotal() - 1; pos_0 >= 0; pos_0--) {
      if (OrderSelect(pos_0, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol())
            if (OrderMagicNumber() == MagicNumber) CloseAllGrid(OrderTicket());
      }
   }
   return (0);
}

// 19DAC327423444E9E3A386AD9DFED170
int CloseAllGrid(int ai_0) {
   f0_54(ai_0);
   int li_4 = f0_56(vg_NameGrid, ai_0);
   int li_ret_8 = CloseOrder(ai_0);
   if (li_ret_8 && li_4 != EMPTY_VALUE) {
      for (int pos_12 = OrdersTotal() - 1; pos_12 >= 0; pos_12--) {
         if (OrderSelect(pos_12, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderSymbol() == Symbol()) {
               if (OrderMagicNumber() == MagicNumber)
                  if (f0_56(vg_NamGridParent, OrderTicket()) == ai_0) CloseOrder(OrderTicket());
            }
         }
      }
   }
   f0_131(ai_0);
   return (li_ret_8);
}

// 712C4A32F28797E584F3D1327EA2AE16
int CloseOrderPartialNow(int a_ticket_0 = -1, double ad_4 = 0.0) {
   double datetime_12;
   double ld_20;
   double ld_28;
   double ld_36;
   double ld_44;
   double ld_52;
   int li_ret_60;
   int ticket_68;
   if (a_ticket_0 == -1) a_ticket_0 = GetLastOpenTicket(-1, MagicNumber);
   if (a_ticket_0 != -1) {
      if (ad_4 == 0.0) ad_4 = QuickPartialClose;
      if (ad_4 > 0.0 && ad_4 <= 100.0) {
         SetLog("Partial close for " + a_ticket_0);
         OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES);
         datetime_12 = OrderOpenTime();
         ld_20 = f0_31(vg_NameLineSL, a_ticket_0);
         ld_28 = f0_31(vg_NameLineTP, a_ticket_0);
         ld_36 = f0_31(vg_PartialClose1, a_ticket_0);
         ld_44 = f0_31(vg_PartialClose2, a_ticket_0);
         ld_52 = f0_31(vg_PartialClose3, a_ticket_0);
         f0_54(a_ticket_0);
         li_ret_60 = CloseOrderPartial(a_ticket_0, ad_4);
         f0_131(a_ticket_0);
         for (int pos_64 = 0; pos_64 < OrdersTotal(); pos_64++) {
            if (OrderSelect(pos_64, SELECT_BY_POS, MODE_TRADES)) {
               if (OrderOpenTime() == datetime_12) {
                  ticket_68 = OrderTicket();
                  if (ld_20 != EMPTY_VALUE) CreateHLineForTicket(vg_NameLineSL, ld_20, ticket_68, StopLossColor);
                  if (ld_28 != EMPTY_VALUE) CreateHLineForTicket(vg_NameLineTP, ld_28, ticket_68, TakeProfitColor);
                  if (ld_36 != EMPTY_VALUE) CreateHLineForPartialClose(ticket_68, 1, PartialClosePos1, ld_36);
                  if (ld_44 != EMPTY_VALUE) CreateHLineForPartialClose(ticket_68, 2, PartialClosePos2, ld_44);
                  if (ld_52 != EMPTY_VALUE) CreateHLineForPartialClose(ticket_68, 3, PartialClosePos3, ld_52);
                  if (vg_ticket_820 != a_ticket_0) break;
                  vg_ticket_820 = ticket_68;
                  break;
               }
            }
         }
         return (li_ret_60);
      }
   }
   return (0);
}

// C628A3FD73C8D961CDB3A222D4565D74
void SetBreakeEven(int a_ticket_0 = -1) {
   double ld_4;
   if (a_ticket_0 == -1) a_ticket_0 = GetLastOpenTicket(-1, MagicNumber);
   SetLog("Order break-even for " + a_ticket_0);
   if (OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES)) {
      ld_4 = OrderOpenPrice() + f0_7(GetPrimeiroValorDouble(OrderType() == OP_BUY, BreakEvenPips, -BreakEvenPips));
      if ((OrderType() == OP_BUY && Bid > OrderOpenPrice()) || (OrderType() == OP_SELL && Ask < OrderOpenPrice())) CreateHLineForTicket(vg_NameLineSL, ld_4, a_ticket_0);
   }
}

// 60D14E47B2DF497D9D8BFC9A6DF1C130
void SendOrderReverse(int a_ticket_0 = -1) {
   double order_lots_4;
   double cmd_12;
   int ticket_20;
   if (a_ticket_0 == -1) a_ticket_0 = GetLastOpenTicket(-1, MagicNumber);
   SetLog("Order reverse for " + a_ticket_0);
   if (OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES)) {
      order_lots_4 = OrderLots();
      cmd_12 = OrderType();
      if (CloseAllGrid(a_ticket_0)) {
         ticket_20 = OpenOrderNow(1 - cmd_12, order_lots_4);
         if (vg_ticket_820 == a_ticket_0) vg_ticket_820 = ticket_20;
      }
   }
}

// 5F3B02AD6210F6A480324B754A657904
int TrailingTicket(int a_ticket_0, int ai_4, bool ai_8) {
   double ld_12;
   double ld_20;
   double bid_28;
   double ask_36;
   double ld_44;
   double ld_52;
   int li_ret_60;
   if (OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES)) {
      ld_12 = NormalizeDoubleDigits(f0_145(vg_NameLineSL, a_ticket_0));
      ld_20 = 0;
      bid_28 = MarketInfo(OrderSymbol(), MODE_BID);
      ask_36 = MarketInfo(OrderSymbol(), MODE_ASK);
      ld_44 = GetOrderOpenPrice(a_ticket_0);
      ld_52 = TrailingStopAt;
      if (ld_52 == 0.0) ld_52 = MathMax(BreakEvenAt + BreakEvenPips, ai_4);
      if (OrderType() == OP_BUY && ai_4 > 0 && ld_44 < bid_28 - f0_7(ld_52)) {
         ld_20 = NormalizeDoubleDigits(bid_28 - f0_7(ai_4));
         if (ld_12 >= ld_20) return (0);
         SetTraceLog(StringConcatenate("Trailing stop active! Ticket: ", a_ticket_0, ", Bid: ", NormalizeDoubleDigits(bid_28), ", Trigger: ", ld_52, ", New SL: ", ld_20));
         if (ai_8) li_ret_60 = ModifyTicketOrder(a_ticket_0, 0, 0, ld_20);
         else {
            CreateHLineForTicket(vg_NameLineSL, ld_20, a_ticket_0);
            return (li_ret_60);
         }
         return (li_ret_60);
      }
      if (OrderType() == OP_SELL && ai_4 > 0 && ld_44 > ask_36 + f0_7(ld_52)) {
         ld_20 = NormalizeDoubleDigits(ask_36 + f0_7(ai_4));
         if (ld_12 > ld_20) {
            SetTraceLog(StringConcatenate("Trailing stop active! Ticket: ", a_ticket_0, ", Ask: ", NormalizeDoubleDigits(ask_36), ", Trigger: ", ld_52, ", New SL: ", ld_20));
            if (ai_8) li_ret_60 = ModifyTicketOrder(a_ticket_0, 0, 0, ld_20);
            else {
               CreateHLineForTicket(vg_NameLineSL, ld_20, a_ticket_0);
               return (li_ret_60);
            }
            return (li_ret_60);
         }
      }
   }
   return (0);
}

// CA01614000B01CD69F6C857A26D84621
void f0_134(int ai_0) {
   bool bool_4 = f0_45(vg_NameGrid, ai_0);
   bool_4 = !bool_4;
   f0_164(vg_NameGrid, bool_4, ai_0);
   f0_172(vg_NameLevelGrid, 0, ai_0);
   SetInfoLog(StringConcatenate("Grid mode: ", bool_4, " for ticket: ", ai_0));
}

// 2AC226274B5A56BE10DD89C0E4F6F6B6
int GetLevelGrid(int a_ticket_0) {
   int li_12;
   int li_ret_4 = 1;
   for (int pos_8 = OrdersTotal() - 1; pos_8 >= 0; pos_8--) {
      if (OrderSelect(pos_8, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol()) {
            if (OrderMagicNumber() == MagicNumber && OrderCloseTime() == 0) {
               li_12 = f0_56(vg_NamGridParent, OrderTicket());
               if (li_12 == a_ticket_0) li_ret_4++;
            }
         }
      }
   }
   OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES);
   return (li_ret_4);
}

// CCA9F5804B320357938880F3BA496D3D
int ValidTicket(int a_ticket_0) {
   int li_16;
   int li_20;
   int li_4 = 0;
   int ticket_8 = a_ticket_0;
   for (int pos_12 = OrdersTotal() - 1; pos_12 >= 0; pos_12--) {
      if (OrderSelect(pos_12, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol()) {
            if (OrderMagicNumber() == MagicNumber && OrderCloseTime() == 0) {
               li_16 = f0_56(vg_NamGridParent, OrderTicket());
               li_20 = f0_56(vg_NameLevelGrid, OrderTicket());
               if (li_16 == a_ticket_0 && li_20 != EMPTY_VALUE && li_20 > li_4) {
                  ticket_8 = OrderTicket();
                  li_4 = li_20;
               }
            }
         }
      }
   }
   OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES);
   return (ticket_8);
}

// E1D3C83CF0954E411ECB4A5C870BE017
double f0_149(double ad_0 = 0.0, int ai_8 = 0) {
   double ld_12 = 0.0;
   double ld_nsd_20 = 0.0;
   ld_12 = ad_0 * MathPow(GridLotMultiplier, ai_8);
   ld_12 = GetNormalizeLot(ld_12);
   return (ld_12);
}

// 930D3DF8ACDBA14442C51753EE796F0C
double GetProfitTicket(int a_ticket_0) {
   double ld_ret_8;
   int li_20;
   int li_4 = f0_56(vg_NameGrid, a_ticket_0);
   if (li_4 == EMPTY_VALUE) {
      if (a_ticket_0 == OrderTicket() || OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES)) return (OrderProfit() + OrderSwap() + OrderCommission());
   } else {
      ld_ret_8 = 0;
      for (int pos_16 = OrdersTotal() - 1; pos_16 >= 0; pos_16--) {
         if (OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderSymbol() == Symbol()) {
               if (OrderMagicNumber() == MagicNumber) {
                  li_20 = f0_56(vg_NamGridParent, OrderTicket());
                  if (li_20 == a_ticket_0 || OrderTicket() == a_ticket_0) ld_ret_8 += OrderProfit() + OrderSwap() + OrderCommission();
               }
            }
         }
      }
      OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES);
      return (ld_ret_8);
   }
   return (0.0);
}

// 6931510EEC1D544CDBB7B21C811B1A6A
double GetOrderOpenPrice(int a_ticket_0) {
   double order_open_price_4;
   int li_12;
   double order_open_price_16;
   if (a_ticket_0 == OrderTicket() || OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES)) {
      order_open_price_4 = OrderOpenPrice();
      li_12 = f0_56(vg_NameGrid, a_ticket_0);
      if (li_12 == EMPTY_VALUE) return (order_open_price_4);
      order_open_price_16 = f0_31(vg_NameGridPrice, a_ticket_0);
      if (order_open_price_16 == EMPTY_VALUE) return (order_open_price_4);
      order_open_price_4 = order_open_price_16;
      return (order_open_price_4);
   }
   return (0.0);
}

// 54013F4126E159CFBF9EDBF5C54CB30B
double GetLotsforTicket(int a_ticket_0) {
   double ld_ret_8;
   int li_20;
   int li_4 = f0_56(vg_NameGrid, a_ticket_0);
   if (li_4 == EMPTY_VALUE) {
      if (a_ticket_0 == OrderTicket() || OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES)) return (OrderLots());
   } else {
      ld_ret_8 = 0;
      for (int pos_16 = OrdersTotal() - 1; pos_16 >= 0; pos_16--) {
         if (OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderSymbol() == Symbol()) {
               if (OrderMagicNumber() == MagicNumber) {
                  li_20 = f0_56(vg_NamGridParent, OrderTicket());
                  if (li_20 == a_ticket_0 || OrderTicket() == a_ticket_0) ld_ret_8 += OrderLots();
               }
            }
         }
      }
      OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES);
      return (ld_ret_8);
   }
   return (0.0);
}

// A7A7BD63893A41868B6FD78A8AF34542
void f0_110() {
   if (vgi_1220 != 0 && vgi_1216 != 0 && GetTickCount() - vgi_1216 > vgi_1220) f0_33();
}

// 3CFCFEF22F80E2BA0879716EC20B2242
voidExibeMensagem(string as_0, string as_8, int ai_16, int ai_20 = 0) {
   string name_24;
   string ls_32;
   int li_40;
   int li_44;
   string str_concat_48;
   if (ShowNotifications) {
      li_40 = MathRound((vgi_1192 - vgi_1228) / 2);
      li_44 = vgi_1224;
      str_concat_48 = StringConcatenate("DrW_", vgs_1208);
      name_24 = str_concat_48 + "0";
      CriaLabel(name_24, li_40, li_44, "gggggggggg", 28, "Webdings", C'0x28,0x32,0x3C');
      ObjectSet(name_24, OBJPROP_BACK, BackgroundOpacity);
      ls_32 = str_concat_48 + "1";
      name_24 = str_concat_48 + "2";
      if (ai_16 == 1) {
         CriaLabel(ls_32, li_40 + 5, li_44 - 5, CharToStr(252), 40, "Wingdings", Black);
         CriaLabel(name_24, li_40 + 4, li_44 - 6, CharToStr(252), 40, "Wingdings", LimeGreen);
      } else {
         if (ai_16 == 2) {
            CriaLabel(ls_32, li_40 + 5, li_44 - 5, CharToStr(251), 40, "Wingdings", Black);
            CriaLabel(name_24, li_40 + 4, li_44 - 6, CharToStr(251), 40, "Wingdings", Red);
         } else {
            if (ai_16 == 3) {
               CriaLabel(ls_32, li_40 + 16, li_44 - 2, CharToStr(54), 28, "Wingdings", Black);
               CriaLabel(name_24, li_40 + 15, li_44 - 1, CharToStr(54), 28, "Wingdings", White);
            }
         }
      }
      name_24 = str_concat_48 + "3";
      CriaLabel(name_24, li_40 + 51, li_44 + 4, as_0, 10, "Verdana", Black);
      name_24 = str_concat_48 + "4";
      CriaLabel(name_24, li_40 + 50, li_44 + 3, as_0, 10, "Verdana", Gold);
      name_24 = str_concat_48 + "5";
      CriaLabel(name_24, li_40 + 50, li_44 + 21, as_8, 8, "Verdana", Lavender);
      vgi_1220 = ai_20;
      if (ai_20 != 0) vgi_1216 = GetTickCount();
      vgi_1236 = TRUE;
      WindowRedraw();
   }
}

// EF55EB61069A84B053F95051A3724466
void f0_160(int a_ticket_0) {
   if (OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES))ExibeMensagem("Order opened successfully!", StringConcatenate("Ticket: ", a_ticket_0, "  Price: ", GetDoubleToStr(OrderOpenPrice(), Digits), "  Time: ", vgi_992 + "ms"), 1, 2000);
}

// C60DA1C2D19499586BB98E9E78000D23
void f0_131(int a_ticket_0) {
   if (!OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_HISTORY)) {
     ExibeMensagem("Order closed successfully!", "", 1, 1000);
      return;
   }
  ExibeMensagem("Order closed successfully!", StringConcatenate("Ticket: ", a_ticket_0, "  Profit: ", f0_136(OrderProfit() + OrderSwap() + OrderCommission(), 2), "  Time: ",
      vgi_992 + "ms"), 1, 2000);
}

// 02FEDB4208B169F2AEFE06EC40955FA4
void f0_1() {
  ExibeMensagem("Order open error!", vgs_984, 2, 2000);
}

// 09F811BB4E16AC1455F42F8FCE933EB7
void f0_5() {
  ExibeMensagem("Please wait!", "Opening order...", 3);
}

// 5004AD33EC6D9A3D31C23DBBA6B929AC
void f0_54(int ai_0) {
  ExibeMensagem("Please wait!", "Closing order " + GetDoubleToStr(ai_0) + "...", 3);
}

// 356C0B5B48197BDAC60AC2CA3FDFD40D
void f0_33() {
   string str_concat_0 = StringConcatenate("DrW_", vgs_1208);
   f0_38(str_concat_0);
   vgi_1216 = 0;
   vgi_1236 = FALSE;
   WindowRedraw();
}

// 123E9B4FB777D3655C8723715E95FCBB
void ExibeControlPainel() {
   int li_0;
   int li_4;
   string str_concat_8;
   string name_16;
   string str_concat_24;
   string ls_32;
   if (ShowControlPanel) {
      li_0 = vgi_1268;
      li_4 = vgi_1272;
      str_concat_8 = StringConcatenate("DrW_", vgs_1260, "Bvg_");
      name_16 = str_concat_8 + "0";
      ObjectDelete(name_16);
      CriaLabel(name_16, li_0, li_4, "g", 120, "Webdings", vgi_452);
      ObjectSet(name_16, OBJPROP_BACK, BackgroundOpacity);
      name_16 = str_concat_8 + "1";
      ObjectDelete(name_16);
      CriaLabel(name_16, li_0 + 5, li_4 + 2, "gggggggg", 14, "Webdings", C'0x8B,0x66,0x10');
      str_concat_24 = StringConcatenate("IceFX ", "TraderAgent", " ", GetTypeLicence());
      name_16 = str_concat_8 + "2";
      ObjectDelete(name_16);
      CriaLabel(name_16, li_0 + 17, li_4 + 7, str_concat_24, 10, "Tahoma", Black);
      name_16 = str_concat_8 + "3";
      ObjectDelete(name_16);
      CriaLabel(name_16, li_0 + 18, li_4 + 6, str_concat_24, 10, "Tahoma", Gold);
      ls_32 = CharToStr(145);
      name_16 = str_concat_8 + "5";
      ObjectDelete(name_16);
      CriaLabel(name_16, li_0 - 10, li_4 - 9, ls_32, 26, "Webdings", C'0x32,0x32,0x32');
      name_16 = str_concat_8 + "6";
      ObjectDelete(name_16);
      CriaLabel(name_16, li_0 - 11, li_4 - 10, ls_32, 26, "Webdings", Gold);
      SetMatrix();
      SettextBtn(0, StringConcatenate("Buy ", GetDoubleToStr(vgd_748, 2)));
      SettextBtn(1, StringConcatenate("Sell ", GetDoubleToStr(vgd_748, 2)));
   }
}

// 625A81B248C77C68CA67798166642489
void f0_68(int ai_0) {
   int li_4 = vgi_1268;
   int li_8 = vgi_1272;
   string str_concat_12 = StringConcatenate("DrW_", vgs_1260, "Btn", ai_0, "_");
   string name_20 = str_concat_12 + "BG";
   ObjectDelete(name_20);
   CriaLabel(name_20, li_4 + vgia_1252[ai_0][1], li_8 + vgia_1252[ai_0][2], "gg", 24, "Webdings", vgia_1252[ai_0][5]);
   name_20 = str_concat_12 + "Text1";
   ObjectDelete(name_20);
   CriaLabel(name_20, li_4 + vgia_1252[ai_0][1] + vgia_1252[ai_0][7], li_8 + vgia_1252[ai_0][2] + vgi_1248 + 1, vgsa_1256[ai_0], vg_fontsize_1240, "Tahoma", Black);
   name_20 = str_concat_12 + "Text2";
   CriaLabel(name_20, li_4 + vgia_1252[ai_0][1] + vgia_1252[ai_0][7] + 1, li_8 + vgia_1252[ai_0][2] + vgi_1248, vgsa_1256[ai_0], vg_fontsize_1240, "Tahoma", vg_clr_1244);
   name_20 = str_concat_12 + "Icon";
   ObjectDelete(name_20);
   CriaLabel(name_20, li_4 + vgia_1252[ai_0][1] + 26, li_8 + vgia_1252[ai_0][2], CharToStr(vgia_1252[ai_0][6]), vg_fontsize_1240, "Webdings", vg_clr_1244);
}

// 3AA2F22582134EAB3445680B1089F691
void SetMatrix() {
   int li_0 = 10;
   int li_4 = 85;
   int li_8 = 35;
   int li_12 = 40;
   vgia_1252[0][0] = 0;
   vgia_1252[0][1] = li_0;
   vgia_1252[0][2] = li_8;
   vgia_1252[0][3] = 66;
   vgia_1252[0][4] = 34;
   vgia_1252[0][5] = 6240281;
   vgia_1252[0][6] = 53;
   vgsa_1256[0] = "Buy 0.00";
   vgia_1252[0][7] = 6;
   vgia_1252[1][0] = 1;
   vgia_1252[1][1] = li_4;
   vgia_1252[1][2] = li_8;
   vgia_1252[1][3] = 66;
   vgia_1252[1][4] = 34;
   vgia_1252[1][5] = 1644894;
   vgia_1252[1][6] = 54;
   vgsa_1256[1] = "Sell 0.00";
   vgia_1252[1][7] = 7;
   li_8 += li_12;
   vgia_1252[2][0] = 2;
   vgia_1252[2][1] = li_0;
   vgia_1252[2][2] = li_8;
   vgia_1252[2][3] = 66;
   vgia_1252[2][4] = 34;
   vgia_1252[2][5] = 5922330;
   vgia_1252[2][6] = 114;
   vgsa_1256[2] = "Partial";
   vgia_1252[2][7] = 14;
   vgia_1252[3][0] = 3;
   vgia_1252[3][1] = li_4;
   vgia_1252[3][2] = li_8;
   vgia_1252[3][3] = 66;
   vgia_1252[3][4] = 34;
   vgia_1252[3][5] = 1662515;
   vgia_1252[3][6] = 114;
   vgsa_1256[3] = "Close all";
   vgia_1252[3][7] = 7;
   li_8 += li_12;
   vgia_1252[5][0] = 5;
   vgia_1252[5][1] = li_0;
   vgia_1252[5][2] = li_8;
   vgia_1252[5][3] = 66;
   vgia_1252[5][4] = 34;
   vgia_1252[5][5] = 1662302;
   vgia_1252[5][6] = 97;
   vgsa_1256[5] = "Breakeven";
   vgia_1252[5][7] = 1;
   vgia_1252[4][0] = 4;
   vgia_1252[4][1] = li_4;
   vgia_1252[4][2] = li_8;
   vgia_1252[4][3] = 66;
   vgia_1252[4][4] = 34;
   vgia_1252[4][5] = 5970526;
   vgia_1252[4][6] = 113;
   vgsa_1256[4] = "Reverse";
   vgia_1252[4][7] = 8;
   li_8 += li_12;
   for (int count_16 = 0; count_16 < ArrayRange(vgia_1252, 0); count_16++) f0_68(count_16);
}

// 1BEDD10B036445FC9065C868400C94C8
void SettextBtn(int ai_0, string a_text_4) {
   vgsa_1256[ai_0] = a_text_4;
   string str_concat_12 = StringConcatenate("DrW_", vgs_1260, "Btn", ai_0, "_", "Text1");
   if (ObjectFind(str_concat_12) >= 0 && ObjectDescription(str_concat_12) != a_text_4) ObjectSetText(str_concat_12, a_text_4, vg_fontsize_1240, "Tahoma", Black);
   str_concat_12 = StringConcatenate("DrW_", vgs_1260, "Btn", ai_0, "_", "Text2");
   if (ObjectFind(str_concat_12) >= 0 && ObjectDescription(str_concat_12) != a_text_4) ObjectSetText(str_concat_12, a_text_4, vg_fontsize_1240, "Tahoma", vg_clr_1244);
}

// DC063D5188C6387A77D4A4B8AF2DF3B1
int f0_144() {
   string str_concat_0 = StringConcatenate("DrW_", vgs_1260, "Bvg_0");
   if (ShowControlPanel && ObjectFind(str_concat_0) == -1) ExibeControlPainel();
   return (0);
}

// F85E6B1BCD21006936A5FC7650501B5A
int f0_170(int ai_0, int ai_4) {
   if (!ShowControlPanel) return (0);
   for (int count_8 = 0; count_8 < ArrayRange(vgia_1252, 0); count_8++) {
      if (f0_85(ai_0, ai_4, count_8)) {
         SetTraceLog("Pressed button: " + count_8);
         if (count_8 == 0) {
            if (vgd_748 > 0.0) OpenOrderNow(0, vgd_748);
            else SetWarningLog("Invalid LOT size: " + GetDoubleToStr(vgd_748, 2));
         } else {
            if (count_8 == 1) {
               if (vgd_748 > 0.0) OpenOrderNow(1, vgd_748);
               else SetWarningLog("Invalid LOT size: " + GetDoubleToStr(vgd_748, 2));
            } else {
               if (count_8 == 2) CloseOrderPartialNow();
               else {
                  if (count_8 == 3) CloseAllOrders();
                  else {
                     if (count_8 == 5) SetBreakeEven();
                     else
                        if (count_8 == 4) SendOrderReverse();
                  }
               }
            }
         }
         return (1);
      }
   }
   return (0);
}

// 83C11C0D6BB6C72129E782F6802E19EF
int f0_85(int ai_0, int ai_4, int ai_8) {
   return (vgi_1268 + vgia_1252[ai_8][1] < ai_0 && vgi_1268 + vgia_1252[ai_8][1] + vgia_1252[ai_8][3] > ai_0 && vgi_1272 + vgia_1252[ai_8][2] < ai_4 && vgi_1272 + vgia_1252[ai_8][2] +
      vgia_1252[ai_8][4] > ai_4);
}

// B846A4EF99F35CE236E2A91B4E8E97B2
void f0_121() {
   int li_0;
   int li_4;
   string str_concat_8;
   string name_16;
   string ls_24;
   string ls_32;
   if (ShowOrderListPanel) {
      li_0 = vgi_1308;
      li_4 = vgi_1312;
      str_concat_8 = StringConcatenate("DrW_", vgs_1284);
      name_16 = str_concat_8 + "0";
      ObjectDelete(name_16);
      CriaLabel(name_16, li_0, li_4, "g", 120, "Webdings", vgi_452);
      ObjectSet(name_16, OBJPROP_BACK, BackgroundOpacity);
      name_16 = str_concat_8 + "1";
      ObjectDelete(name_16);
      CriaLabel(name_16, li_0 + 5, li_4 + 2, "gggggggg", 14, "Webdings", C'0x14,0x14,0x14');
      ls_24 = "Order list";
      name_16 = str_concat_8 + "2";
      ObjectDelete(name_16);
      CriaLabel(name_16, li_0 + 55, li_4 + 7, ls_24, 10, "Tahoma", Black);
      name_16 = str_concat_8 + "3";
      ObjectDelete(name_16);
      CriaLabel(name_16, li_0 + 54, li_4 + 6, ls_24, 10, "Tahoma", Gold);
      ls_32 = CharToStr(157);
      name_16 = str_concat_8 + "5";
      ObjectDelete(name_16);
      CriaLabel(name_16, li_0 + 9, li_4 + 6, ls_32, 12, "Webdings", C'0x32,0x32,0x32');
      name_16 = str_concat_8 + "6";
      ObjectDelete(name_16);
      CriaLabel(name_16, li_0 + 8, li_4 + 5, ls_32, 12, "Webdings", Gold);
      vgi_1324 = TRUE;
   }
}

// 19BC271349716E65C7043520C1B84644
void PainelOrdersOpens(int ai_0) {
   int color_24;
   string ls_28;
   string ls_36;
   int li_44;
   int li_48;
   double ld_52;
   int li_4 = vgi_1308;
   int li_8 = vgi_1312 + vgi_1300;
   string str_concat_12 = StringConcatenate("DrW_", vgs_1284, "Row", ai_0);
   int ticket_20 = vgia_1292[ai_0];
   if (OrderSelect(ticket_20, SELECT_BY_TICKET, MODE_TRADES)) {
      color_24 = PaleTurquoise;
      if (OrderType() == OP_SELL) color_24 = LightPink;
      ls_36 = str_concat_12 + "0_CloseIcon";
      CriaLabel(ls_36, li_4 + 3, li_8 + ai_0 * vgi_1304 - 2, CharToStr(114), 10, "Webdings", OrangeRed);
      ls_28 = f0_97(ticket_20, 4);
      li_44 = f0_56(vg_NameGrid, ticket_20);
      if (li_44 != EMPTY_VALUE) {
         li_48 = GetLevelGrid(ticket_20);
         if (li_48 > 1) {
            ls_28 = f0_97(ticket_20, 3) + " *" + GetDoubleToStr(li_48);
            color_24 = Orange;
         }
      }
      ls_36 = str_concat_12 + "2_Ticket";
      CriaLabel(ls_36, li_4 + 20, li_8 + ai_0 * vgi_1304, ls_28, 8, "Tahoma", color_24);
      ls_28 = GetDoubleToStr(GetLotsforTicket(ticket_20), 2);
      ls_36 = str_concat_12 + "3_LOT";
      CriaLabel(ls_36, li_4 + 68, li_8 + ai_0 * vgi_1304, ls_28, 8, "Tahoma", color_24);
      ld_52 = GetProfitTicket(ticket_20);
      if (ld_52 > 0.0) color_24 = TakeProfitColor;
      else
         if (ld_52 < 0.0) color_24 = StopLossColor;
      ls_28 = f0_136(ld_52, 2);
      ls_36 = str_concat_12 + "4_Profit";
      CriaLabel(ls_36, li_4 + 108, li_8 + ai_0 * vgi_1304, ls_28, 8, "Tahoma", color_24);
   }
}

// 7E36B3A88BDDE30BC968B675946154B7
void f0_83() {
   int li_4;
   int ticket_8;
   if (GetOrderCount(OP_BUY, MagicNumber) + GetOrderCount(OP_SELL, MagicNumber) > 0 && (!vgi_1324) && ShowOrderListPanel) f0_121();
   else
      if (GetOrderCount(OP_BUY, MagicNumber) + GetOrderCount(OP_SELL, MagicNumber) == 0 && vgi_1324) f0_37();
   if (ShowOrderListPanel && vgi_1324) {
      for (int pos_0 = OrdersTotal() - 1; pos_0 >= 0; pos_0--) {
         if (OrderSelect(pos_0, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderType() == OP_BUY || OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
               li_4 = f0_15(OrderTicket());
               if (li_4 != -1) {
                  PainelOrdersOpens(li_4);
                  continue;
               }
               if (vgi_1296 < ArraySize(vgia_1292) && f0_56(vg_NamGridParent, OrderTicket()) == EMPTY_VALUE) {
                  li_4 = vgi_1296;
                  vgia_1292[li_4] = OrderTicket();
                  PainelOrdersOpens(li_4);
                  vgi_1296++;
               }
            }
         }
      }
      for (li_4 = MathMin(vgi_1296, ArraySize(vgia_1292)) - 1.0; li_4 >= 0; li_4--) {
         ticket_8 = vgia_1292[li_4];
         if (ticket_8 != -1) {
            if (!OrderSelect(ticket_8, SELECT_BY_TICKET, MODE_TRADES) || OrderCloseTime() > 0) {
               for (pos_0 = li_4; pos_0 < ArraySize(vgia_1292) - 1; pos_0++) vgia_1292[pos_0] = vgia_1292[pos_0 + 1];
               vgi_1296--;
               f0_106(vgi_1296);
            }
         }
      }
   }
   vg_dttm_1328 = TimeCurrent();
}

// 18D5EFD0244A5B8BFDFCEDC688973A80
int f0_15(int ai_0) {
   for (int index_4 = 0; index_4 < ArraySize(vgia_1292); index_4++)
      if (vgia_1292[index_4] == ai_0) return (index_4);
   return (-1);
}

// A04052CEA835C4DFD52423BA21668A86
void f0_106(int ai_0) {
   string ls_nsd_4;
   string str_concat_12 = StringConcatenate("DrW_", vgs_1284, "Row", ai_0);
   f0_38(str_concat_12);
   vgia_1292[ai_0] = -1;
   WindowRedraw();
}

// 3AF94171AFD935A46421C3FDEBEF5D6E
void f0_37(int ai_0 = FALSE) {
   if (!ai_0 && !vgi_1324) return;
   string str_concat_4 = StringConcatenate("DrW_", vgs_1284);
   f0_38(str_concat_4);
   WindowRedraw();
   vgi_1324 = FALSE;
}

// BFB9BD0BE88013789FD0C14B17156E63
int f0_124(int ai_0, int ai_4) {
   int li_12;
   if (!vgi_1324) return (0);
   for (int index_8 = 0; index_8 < ArraySize(vgia_1292); index_8++) {
      if (f0_107(ai_0, ai_4, index_8)) {
         li_12 = vgia_1292[index_8];
         if (f0_162(ai_0, ai_4, vgi_1308 + 8, ai_4, vgi_1308 + 16, ai_4)) CloseAllGrid(li_12);
         else {
            if (f0_162(ai_0, ai_4, vgi_1308 + 23, ai_4, vgi_1308 + 29, ai_4)) SetBreakeEven(li_12);
            else f0_126(li_12);
         }
         return (1);
      }
   }
   return (0);
}

// A192C86D2A9C7F68649E4E842C86CBE0
int f0_107(int ai_0, int ai_4, int ai_8) {
   int li_12 = vgi_1312 + vgi_1300 + 3;
   return (vgi_1308 <= ai_0 && vgi_1308 + vgi_1316 >= ai_0 && li_12 + ai_8 * vgi_1304 <= ai_4 && li_12 + (ai_8 + 1) * vgi_1304 > ai_4);
}

// 92A4B9699CF9C843B9D8F9832BB02B79
string f0_97(int ai_0, int ai_4) {
   string ls_ret_8 = GetDoubleToStr(ai_0, 0);
   if (StringLen(ls_ret_8) > ai_4) ls_ret_8 = ".." + StringSubstr(ls_ret_8, StringLen(ls_ret_8) - ai_4, ai_4);
   return (ls_ret_8);
}

// C123310E38F564BFF896BAD76F1D4B1B
void f0_126(int a_ticket_0 = -1) {
   string str_concat_12;
   string name_20;
   int count_28;
   int li_32;
   int li_36;
   int li_40;
   int li_44;
   int color_48;
   int cmd_52;
   double ld_56;
   double ld_64;
   string str_concat_72;
   int li_80;
   int li_84;
   int color_88;
   double ld_92;
   double ld_100;
   string ls_108;
   double ld_116;
   double ld_124;
   double ld_132;
   string ls_140;
   string str_concat_148;
   double ld_156;
   double ld_164;
   double ld_172;
   string ls_180;
   double ld_188;
   int li_196;
   int li_200;
   if (a_ticket_0 == -1) a_ticket_0 = vg_ticket_820;
   else vg_ticket_820 = a_ticket_0;
   if (PropertiesPanelPos == 0) {
      vgi_1344 = GetPrimeiroValor(OrderListPanelX < 0, vgi_1308 - vgi_1352 - 10, vgi_1308 + vgi_1316 + 10);
      vgi_1348 = vgi_1312;
   } else {
      vgi_1344 = GetPrimeiroValor(OrderListPanelX < 0, vgi_1192 - vgi_1352 - 60, OrderListPanelX);
      vgi_1348 = vgi_1312 + vgi_1320;
   }
   int li_4 = vgi_1344;
   int li_8 = vgi_1348;
   if (OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES)) {
      if (OrderCloseTime() != 0) f0_19();
      else {
         str_concat_12 = StringConcatenate("DrW_", vgs_1332);
         name_20 = str_concat_12 + ".BG1";
         CriaLabel(name_20, li_4, li_8, "gg", 120, "Webdings", vgi_452);
         ObjectSet(name_20, OBJPROP_BACK, BackgroundOpacity);
         vgi_1356 = 160;
         if (vgi_392) {
            name_20 = str_concat_12 + ".BG2";
            CriaLabel(name_20, li_4, li_8 + 20, "gg", 120, "Webdings", vgi_452);
            ObjectSet(name_20, OBJPROP_BACK, BackgroundOpacity);
            vgi_1356 = 180;
         }
         name_20 = str_concat_12 + "01";
         CriaLabel(name_20, li_4 + 8, li_8 + 2, "gggggggggggggggg", 14, "Webdings", C'0x14,0x14,0x14');
         name_20 = str_concat_12 + "03";
         CriaLabel(name_20, li_4 + 32, li_8 + 6, "Order properties: " + GetDoubleToStr(a_ticket_0), 10, "Tahoma", Gold);
         name_20 = str_concat_12 + "06";
         CriaLabel(name_20, li_4 + 10, li_8 + 5, CharToStr(78), 12, "Webdings", Gold);
         name_20 = str_concat_12 + "07";
         CriaLabel(name_20, li_4 + vgi_1352 - 25, li_8 + 5, CharToStr(114), 12, "Webdings", Gold);
         count_28 = 0;
         li_32 = 13;
         li_36 = li_4 + 8;
         li_40 = li_4 + 80;
         li_44 = 12632256;
         color_48 = vg_clr_1244;
         cmd_52 = OrderType();
         ld_56 = GetOrderOpenPrice(a_ticket_0);
         ld_64 = GetLotsforTicket(a_ticket_0);
         str_concat_72 = "";
         li_80 = f0_56(vg_NameGrid, a_ticket_0);
         if (li_80 != EMPTY_VALUE) {
            li_84 = GetLevelGrid(a_ticket_0);
            if (li_84 > 1) str_concat_72 = StringConcatenate(" (", li_84, " orders)");
         }
         OrderSelect(a_ticket_0, SELECT_BY_TICKET);
         name_20 = str_concat_12 + "10";
         CriaLabel(name_20, li_36, li_8 + 24 + count_28 * li_32, "Type: ", 8, "Tahoma", li_44);
         CriaLabel(name_20 + "_value", li_40, li_8 + 24 + count_28 * li_32, StringConcatenate(f0_169(OrderType()), "  ", GetDoubleToStr(ld_64, 2), " lots ", str_concat_72), 8, "Tahoma",
            color_48);
         count_28++;
         name_20 = str_concat_12 + "12";
         CriaLabel(name_20, li_36, li_8 + 24 + count_28 * li_32, "Open price: ", 8, "Tahoma", li_44);
         CriaLabel(name_20 + "_value", li_40, li_8 + 24 + count_28 * li_32, GetDoubleToStr(ld_56, Digits), 8, "Tahoma", color_48);
         count_28++;
         name_20 = str_concat_12 + "13";
         CriaLabel(name_20, li_36, li_8 + 24 + count_28 * li_32, "Open time: ", 8, "Tahoma", li_44);
         CriaLabel(name_20 + "_value", li_40, li_8 + 24 + count_28 * li_32, f0_10(TimeCurrent() - OrderOpenTime()), 8, "Tahoma", color_48);
         count_28++;
         count_28++;
         color_88 = color_48;
         name_20 = str_concat_12 + "14";
         ld_92 = f0_139(GetPrimeiroValorDouble(cmd_52 == OP_BUY, Bid - ld_56, ld_56 - Ask));
         ld_100 = GetProfitTicket(a_ticket_0);
         ls_108 = f0_136(ld_100, 2);
         if (ld_100 > 0.0) color_88 = TakeProfitColor;
         else
            if (ld_100 < 0.0) color_88 = StopLossColor;
         CriaLabel(name_20, li_36, li_8 + 24 + count_28 * li_32 - 6, "Profit: ", 8, "Tahoma", li_44);
         CriaLabel(name_20 + "_value", li_40, li_8 + 24 + count_28 * li_32 - 6, StringConcatenate(ls_108, " (", GetDoubleToStr(ld_92, 1), " pips)"), 10, "Tahoma", color_88);
         count_28++;
         name_20 = str_concat_12 + "15";
         ld_116 = f0_31(vg_NameLineTP, a_ticket_0);
         if (ld_116 != EMPTY_VALUE && ld_116 != 0.0) {
            ld_124 = f0_139(MathAbs(ld_56 - ld_116));
            ld_132 = f0_153(ld_124, ld_64);
            ls_140 = f0_136(ld_132, 2);
            str_concat_148 = StringConcatenate(ld_124, " pips (", ls_140, ")");
         } else str_concat_148 = "Not set";
         CriaLabel(name_20, li_36, li_8 + 24 + count_28 * li_32, "TakeProfit: ", 8, "Tahoma", li_44);
         CriaLabel(name_20 + "_value", li_40, li_8 + 24 + count_28 * li_32, str_concat_148, 8, "Tahoma", color_48);
         count_28++;
         name_20 = str_concat_12 + "16";
         ld_156 = f0_31(vg_NameLineSL, a_ticket_0);
         if (ld_156 != EMPTY_VALUE && ld_156 != 0.0) {
            ld_164 = f0_139(GetPrimeiroValorDouble(cmd_52 == OP_BUY, ld_156 - ld_56, ld_56 - ld_156));
            ld_172 = f0_153(ld_164, ld_64);
            ls_180 = f0_136(ld_172, 2);
            str_concat_148 = StringConcatenate(ld_164, " pips (", ls_180, ")");
         } else str_concat_148 = "Not set";
         if (ld_172 > 0.0) color_88 = TakeProfitColor;
         else
            if (ld_172 < 0.0) color_88 = StopLossColor;
         CriaLabel(name_20, li_36, li_8 + 24 + count_28 * li_32, "StopLoss: ", 8, "Tahoma", li_44);
         CriaLabel(name_20 + "_value", li_40, li_8 + 24 + count_28 * li_32, str_concat_148, 8, "Tahoma", color_88);
         count_28++;
         count_28++;
         color_88 = color_48;
         name_20 = str_concat_12 + "17";
         str_concat_148 = "--";
         if (ld_164 < 0.0 && ld_124 > 0.0) {
            ld_188 = MathAbs(ld_124 / ld_164);
            if (ld_188 >= 2.0) color_88 = TakeProfitColor;
            else
               if (ld_188 < 1.0) color_88 = StopLossColor;
            if (ld_124 != 0.0 && ld_164 != 0.0) str_concat_148 = GetDoubleToStr(ld_188, 1);
         }
         CriaLabel(name_20, li_36, li_8 + 24 + count_28 * li_32, "R/R: ", 8, "Tahoma", li_44);
         CriaLabel(name_20 + "_value", li_40, li_8 + 24 + count_28 * li_32 - 4, str_concat_148, 16, "Impact", color_88);
         count_28++;
         str_concat_12 = StringConcatenate("DrW_", vgs_1332, "Btn");
         li_196 = li_4 + vgi_1360;
         li_200 = li_8 + vgi_1364;
         f0_79(str_concat_12 + "Break", li_196, li_200, 15, "Breakeven", 1662302, vg_clr_1244);
         li_200 += vgi_1376;
         f0_79(str_concat_12 + "Partial", li_196, li_200, 10, "Partial close", 5922330, vg_clr_1244);
         li_200 += vgi_1376;
         f0_79(str_concat_12 + "Reverse", li_196, li_200, 20, "Reverse", 5970526, vg_clr_1244);
         li_200 += vgi_1376;
         f0_79(str_concat_12 + "Close", li_196, li_200, 28, "Close", 1662515, vg_clr_1244);
         li_200 += vgi_1376;
         if (vgi_432) f0_79(str_concat_12 + "Hedge", li_196, li_200, 28, "Hedge", 91798, vg_clr_1244);
         li_200 += vgi_1376;
         if (vgi_392) {
            if (li_80 == 1) f0_79(str_concat_12 + "Grid", li_196, li_200, 20, "Grid On", 128, vg_clr_1244);
            else f0_79(str_concat_12 + "Grid", li_196, li_200, 18, "Grid Off", 60, vg_clr_1244);
            li_200 += vgi_1376;
         }
         vgi_1340 = TRUE;
      }
   }
}

// 7A1A81E6D4F7763DA5275206F8CCEB6D
void f0_79(string as_0, int ai_8, int ai_12, int ai_16, string as_20, int ai_28, int ai_32) {
   int li_36 = 10;
   int li_40 = 2;
   string ls_44 = as_0 + "BG";
   CriaLabel(ls_44, ai_8, ai_12, "ggggg", 13, "Webdings", ai_28);
   ls_44 = as_0 + "Txt1";
   CriaLabel(ls_44, ai_8 + ai_16 + 1, ai_12 + li_40 + 1, as_20, li_36, "Tahoma", Black);
   ls_44 = as_0 + "Txt2";
   CriaLabel(ls_44, ai_8 + ai_16, ai_12 + li_40, as_20, li_36, "Tahoma", ai_32);
}

// EB73A07A134C212369DCC3747A0780D5
int f0_156(int ai_0, int ai_4) {
   if (!vgi_1340) return (0);
   if (f0_162(ai_0, ai_4, vgi_1344 + vgi_1352 - 20, vgi_1348 + 8, vgi_1344 + vgi_1352, vgi_1348 + 8 + 16)) {
      f0_19();
      return (1);
   }
   if (f0_162(ai_0, ai_4, vgi_1344 + vgi_1360, vgi_1348 + vgi_1364, vgi_1344 + vgi_1360 + vgi_1368, vgi_1348 + vgi_1364 + vgi_1372)) {
      SetBreakeEven(vg_ticket_820);
      return (1);
   }
   if (f0_162(ai_0, ai_4, vgi_1344 + vgi_1360, vgi_1348 + vgi_1364 + vgi_1376, vgi_1344 + vgi_1360 + vgi_1368, vgi_1348 + vgi_1364 + vgi_1372 + vgi_1376)) {
      CloseOrderPartialNow(vg_ticket_820);
      return (1);
   }
   if (f0_162(ai_0, ai_4, vgi_1344 + vgi_1360, vgi_1348 + vgi_1364 + vgi_1376 * 2, vgi_1344 + vgi_1360 + vgi_1368, vgi_1348 + vgi_1364 + vgi_1372 + vgi_1376 * 2)) {
      SendOrderReverse(vg_ticket_820);
      return (1);
   }
   if (f0_162(ai_0, ai_4, vgi_1344 + vgi_1360, vgi_1348 + vgi_1364 + 3 * vgi_1376, vgi_1344 + vgi_1360 + vgi_1368, vgi_1348 + vgi_1364 + vgi_1372 + 3 * vgi_1376)) {
      CloseAllGrid(vg_ticket_820);
      f0_19();
      WindowRedraw();
      return (1);
   }
   if (f0_162(ai_0, ai_4, vgi_1344 + vgi_1360, vgi_1348 + vgi_1364 + vgi_1376 * 4, vgi_1344 + vgi_1360 + vgi_1368, vgi_1348 + vgi_1364 + vgi_1372 + vgi_1376 * 4)) {
      if (!(vgi_432)) return (0);
      OpenHedgePosition(vg_ticket_820);
      f0_19();
      WindowRedraw();
      return (1);
   }
   if (vgi_392 && f0_162(ai_0, ai_4, vgi_1344 + vgi_1360, vgi_1348 + vgi_1364 + 5 * vgi_1376, vgi_1344 + vgi_1360 + vgi_1368, vgi_1348 + vgi_1364 + vgi_1372 + 5 * vgi_1376)) {
      f0_134(vg_ticket_820);
      f0_126();
      WindowRedraw();
      return (1);
   }
   return (0);
}

// 1CF67D674039C9BB64BDCB42D6706A26
void f0_19() {
   string str_concat_0;
   if (vgi_1340) {
      str_concat_0 = StringConcatenate("DrW_", vgs_1332);
      f0_38(str_concat_0);
      vgi_1340 = FALSE;
   }
}

// ACAE909BAFD5095E6236CD9403AAE758
void ExibeInformacoesPainel() {
   int li_0;
   int li_4;
   int li_8;
   string str_concat_12;
   string name_20;
   string ls_28;
   string ls_36;
   int li_44;
   int color_48;
   int count_52;
   int color_56;
   double ld_60;
   int li_68;
   int count_72;
   double ld_76;
   double ld_84;
   double ld_92;
   double ld_100;
   string ls_112;
   double ld_120;
   if (ShowAccountPanel) {
      li_0 = vgi_1396;
      li_4 = vgi_1400;
      li_8 = vgi_1396 + 80;
      str_concat_12 = StringConcatenate("DrW_", vgs_1380);
      name_20 = str_concat_12 + "0";
      CriaLabel(name_20, li_0, li_4, "g", 120, "Webdings", vgi_452);
      ObjectSet(name_20, OBJPROP_BACK, BackgroundOpacity);
      name_20 = str_concat_12 + "00";
      CriaLabel(name_20, li_0, li_4 + 16, "g", 120, "Webdings", vgi_452);
      ObjectSet(name_20, OBJPROP_BACK, BackgroundOpacity);
      name_20 = str_concat_12 + "1";
      CriaLabel(name_20, li_0 + 5, li_4 + 2, "gggggggg", 14, "Webdings", C'0x14,0x14,0x14');
      ls_28 = "Account info";
      name_20 = str_concat_12 + "2";
      CriaLabel(name_20, li_0 + 45, li_4 + 7, ls_28, 10, "Tahoma", Black);
      name_20 = str_concat_12 + "3";
      CriaLabel(name_20, li_0 + 44, li_4 + 6, ls_28, 10, "Tahoma", Gold);
      ls_36 = CharToStr(165);
      name_20 = str_concat_12 + "5";
      CriaLabel(name_20, li_0 + 9, li_4 + 6, ls_36, 10, "Webdings", C'0x32,0x32,0x32');
      name_20 = str_concat_12 + "6";
      CriaLabel(name_20, li_0 + 8, li_4 + 5, ls_36, 10, "Webdings", Gold);
      li_44 = 12632256;
      color_48 = vg_clr_1244;
      count_52 = 0;
      MontaLabel(count_52, "Balance:", li_44);
      MontaLabelValor(count_52, li_8, f0_136(AccountBalance()), color_48);
      count_52++;
      color_56 = color_48;
      if (AccountEquity() < AccountBalance()) color_56 = LightPink;
      else
         if (AccountEquity() > AccountBalance()) color_56 = PaleTurquoise;
      MontaLabel(count_52, "Equity:", li_44);
      MontaLabelValor(count_52, li_8, f0_136(AccountEquity()), color_56);
      count_52++;
      MontaLabel(count_52, "Free margin:", li_44);
      MontaLabelValor(count_52, li_8, GetDoubleToStr(AccountFreeMargin(), 2), color_48);
      count_52++;
      ld_60 = f0_67(0, 1);
      color_56 = color_48;
      if (ld_60 > 20.0) color_56 = Red;
      MontaLabel(count_52, "Drawdown:", li_44);
      MontaLabelValor(count_52, li_8, GetDoubleToStr(ld_60, 2) + "%", color_56);
      count_52++;
      MontaLabel(count_52, "-------------------------------------", li_44);
      count_52++;
      count_72 = 0;
      ld_84 = 0;
      ld_100 = 0;
      for (int pos_108 = OrdersTotal() - 1; pos_108 >= 0; pos_108--) {
         if (OrderSelect(pos_108, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
               li_68++;
               ld_92 += OrderProfit() + OrderSwap() + OrderCommission();
               ld_76 += OrderLots();
               continue;
            }
            if (OrderType() == OP_SELL && OrderSymbol() == Symbol()) {
               count_72++;
               ld_100 += OrderProfit() + OrderSwap() + OrderCommission();
               ld_84 += OrderLots();
            }
         }
      }
      color_56 = color_48;
      if (ld_92 < 0.0) color_56 = Red;
      else
         if (ld_92 > 0.0) color_56 = Lime;
      MontaLabel(count_52, "Buy:", 15658671);
      MontaLabelValor(count_52, vgi_1396 + 40, StringConcatenate(li_68, " | ", GetDoubleToStr(ld_76, 2), " | ", f0_136(ld_92, 2)), color_56);
      count_52++;
      color_56 = color_48;
      if (ld_100 < 0.0) color_56 = Red;
      else
         if (ld_100 > 0.0) color_56 = Lime;
      MontaLabel(count_52, "Sell:", 12695295);
      MontaLabelValor(count_52, vgi_1396 + 40, StringConcatenate(count_72, " | ", GetDoubleToStr(ld_84, 2), " | ", f0_136(ld_100, 2)), color_56);
      count_52++;
      MontaLabel(count_52, "-------------------------------------", li_44);
      count_52++;
      color_56 = color_48;
      if (ld_92 + ld_100 < 0.0) color_56 = Red;
      else
         if (ld_92 + ld_100 > 0.0) color_56 = Lime;
      MontaLabel(count_52, "Sum:", 55295);
      MontaLabelValor(count_52, vgi_1396 + 40, StringConcatenate(li_68 + count_72, " | ", GetDoubleToStr(ld_76 + ld_84, 2), " | ", f0_136(ld_92 + ld_100, 2)), color_56);
      count_52++;
      MontaLabel(count_52, "Avg:", 55295);
      ls_112 = "-----------------";
      color_56 = Gray;
      if (li_68 + count_72 > 0) {
         ld_120 = GetMedianPrice();
         if (ld_120 != EMPTY_VALUE) {
            ls_112 = GetDoubleToStr(ld_120, Digits);
            color_56 = color_48;
            if (li_68 + count_72 > 1 && AveragePriceLineColor != CLR_NONE) CreateHLineForTicket(vg_NameAvgPrice, ld_120, -1, AveragePriceLineColor, STYLE_DOT);
         }
      } else
         if (AveragePriceLineColor != CLR_NONE) CreateHLineForTicket(vg_NameAvgPrice, 0, -1, AveragePriceLineColor, STYLE_DOT);
      MontaLabelValor(count_52, vgi_1396 + 40, ls_112, color_56);
      count_52++;
      vgi_nsd_1412 = TRUE;
   }
}

// 2D16C2E5D3DD33F6C2ECBE53BC848288
double GetMedianPrice() {
   double ld_0;
   double ld_8 = 0;
   for (int pos_16 = OrdersTotal() - 1; pos_16 >= 0; pos_16--) {
      if (OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
            if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
               ld_0 += OrderOpenPrice() * OrderLots();
               ld_8 += OrderLots();
            }
         }
      }
   }
   if (ld_8 > 0.0) return (NormalizeDoubleDigits(ld_0 / ld_8));
   return (EMPTY_VALUE);
}

// A7C093DDD4EBAF0E80FC957EBF7C53AB
void MontaLabel(int ai_0, string as_4, int ai_12) {
   string str_concat_16 = StringConcatenate("DrW_", vgs_1380, "C", ai_0);
   CriaLabel(str_concat_16, vgi_1396 + 6, vgi_1388 + vgi_1400 + ai_0 * vgi_1392, as_4, 8, "Tahoma", ai_12);
}

// EEC6F43503E25962F346B950A31DA94D
void MontaLabelValor(int ai_0, int ai_4, string as_8, int ai_16) {
   string str_concat_20 = StringConcatenate("DrW_", vgs_1380, "V", ai_0);
   CriaLabel(str_concat_20, ai_4, vgi_1388 + vgi_1400 + ai_0 * vgi_1392, as_8, 8, "Tahoma", ai_16);
}

// 5D2E36B397609AC857C0AF71C6613194
void ExibeProfitPanel() {
   int li_0;
   int li_4;
   string str_concat_8;
   string name_16;
   string ls_24;
   string ls_32;
   int li_nsd_40;
   int li_nsd_44;
   int count_48;
   int str2time_52;
   int str2time_56;
   int datetime_60;
   int li_64;
   if (ShowProfitPanel) {
      li_0 = vgi_1432;
      li_4 = vgi_1436;
      str_concat_8 = StringConcatenate("DrW_", vgs_1416);
      name_16 = str_concat_8 + "0";
      CriaLabel(name_16, li_0, li_4, "gg", 75, "Webdings", vgi_452);
      ObjectSet(name_16, OBJPROP_BACK, BackgroundOpacity);
      name_16 = str_concat_8 + "1";
      CriaLabel(name_16, li_0 + 5, li_4 + 2, "gggggggggg", 14, "Webdings", C'0x14,0x14,0x14');
      ls_24 = "Profit info";
      name_16 = str_concat_8 + "2";
      CriaLabel(name_16, li_0 + 75, li_4 + 7, ls_24, 10, "Tahoma", Black);
      name_16 = str_concat_8 + "3";
      CriaLabel(name_16, li_0 + 74, li_4 + 6, ls_24, 10, "Tahoma", Gold);
      ls_32 = CharToStr(164);
      name_16 = str_concat_8 + "5";
      CriaLabel(name_16, li_0 + 9, li_4 + 6, ls_32, 10, "Webdings", C'0x32,0x32,0x32');
      name_16 = str_concat_8 + "6";
      CriaLabel(name_16, li_0 + 8, li_4 + 5, ls_32, 10, "Webdings", Gold);
      li_nsd_40 = 12632256;
      li_nsd_44 = vg_clr_1244;
      count_48 = 0;
      datetime_60 = TimeCurrent();
      str2time_56 = StrToTime(TimeToStr(datetime_60, TIME_DATE));
      f0_59(str2time_56, datetime_60, count_48, "Today");
      count_48++;
      str2time_52 = str2time_56;
      li_64 = f0_152(str2time_52 - vgi_1456);
      f0_59(li_64, str2time_52, count_48, "Yesterday");
      count_48++;
      str2time_52 = f0_93();
      f0_59(str2time_52, datetime_60, count_48, "Week");
      count_48++;
      str2time_52 = StrToTime(Year() + "." + Month() + ".01");
      f0_59(str2time_52, datetime_60, count_48, "Month");
      count_48++;
      str2time_52 = StrToTime(Year() + ".01.01");
      f0_59(str2time_52, datetime_60, count_48, "Year");
      count_48++;
      vgi_nsd_1448 = TRUE;
   }
}

// 55B8E7F64ACEAFC2E33BA1080F79A8B9
void f0_59(int ai_0, int ai_4, int ai_8, string a_time2str_12 = "") {
   double ld_20;
   double ld_28;
   if (a_time2str_12 == "") a_time2str_12 = TimeToStr(ai_0, TIME_DATE);
   double ld_nsd_36 = 0.0;
   int li_52 = 10;
   int li_56 = 80;
   int li_60 = 140;
   f0_82(ai_0, ai_4, ld_20, ld_28);
   double ld_64 = 0;
   if (AccountBalance() > 0.0) ld_64 = 100.0 * (ld_28 / AccountBalance());
   string ls_44 = StringConcatenate(a_time2str_12, ": ");
   f0_171(ai_8, li_52, ls_44, 12632256);
   ls_44 = f0_136(ld_28, 2);
   f0_171(ai_8, li_56, ls_44, f0_14(ld_28));
   ls_44 = GetDoubleToStr(ld_20, 1) + " pips";
   f0_171(ai_8, li_60, ls_44, f0_14(ld_20));
}

// 18395C9D5496CE3BB9D2FCDDB85B6140
int f0_14(double ad_0) {
   int li_ret_8 = 12632256;
   if (ad_0 > 0.0) li_ret_8 = 65280;
   if (ad_0 < 0.0) li_ret_8 = 255;
   return (li_ret_8);
}

// FAA80C7FAF626ACD4F482B5EEC0C0420
void f0_171(int ai_0, int ai_4, string as_8, int ai_16) {
   string str_concat_20 = StringConcatenate("DrW_", vgs_1416, "V", ai_0, ai_4);
   CriaLabel(str_concat_20, vgi_1432 + ai_4, vgi_1424 + vgi_1436 + ai_0 * vgi_1428, as_8, 8, "Tahoma", ai_16);
}

// 7E0062AA8C59AA9E68163945475F7764
int f0_82(int ai_0, int ai_4, double &ad_8, double &ad_16) {
   int hist_total_28 = OrdersHistoryTotal();
   ad_8 = 0;
   ad_16 = 0;
   for (int pos_24 = 0; pos_24 < hist_total_28; pos_24++) {
      if (OrderSelect(pos_24, SELECT_BY_POS, MODE_HISTORY)) {
         if (vgi_1452 || OrderSymbol() == Symbol()) {
            if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
               if (ai_4 >= OrderCloseTime() && OrderCloseTime() >= ai_0) {
                  ad_16 += OrderProfit() + OrderCommission() + OrderSwap();
                  if (OrderType() == OP_BUY) ad_8 += f0_139(OrderClosePrice() - OrderOpenPrice());
                  if (OrderType() == OP_SELL) ad_8 += f0_139(OrderOpenPrice() - OrderClosePrice());
               }
            }
         }
      }
   }
   return (1);
}

// E3D77C5FEF5B55479437EF591440DE35
int f0_152(int ai_0) {
   for (int li_ret_4 = ai_0; TimeDayOfWeek(li_ret_4) < 1 || TimeDayOfWeek(li_ret_4) > 5; li_ret_4 -= vgi_1456) {
   }
   return (li_ret_4);
}

// 8A729F392CA03BCF676C04744BE4AB2E
int f0_93(int ai_0 = 0) {
   for (int li_ret_4 = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)); TimeDayOfWeek(li_ret_4) != 1; li_ret_4 -= vgi_1456) {
   }
   li_ret_4 += 7 * ai_0 * vgi_1456;
   return (li_ret_4);
}

// D87000F73B355D66104C50794879C500
void f0_142(bool ai_0) {
   int li_4;
   int li_8;
   string str_concat_12;
   string name_20;
   string ls_28;
   string ls_36;
   int li_44;
   int digits_48;
   double spread_52;
   string ls_60;
   string ls_68;
   string ls_76;
   string ls_84;
   string ls_96;
   int li_104;
   int li_108;
   int li_112;
   int li_116;
   int li_120;
   double ihigh_124;
   double ilow_132;
   double iopen_140;
   double iclose_148;
   double ld_156;
   double ld_164;
   double ld_172;
   double ld_180;
   int li_188;
   if (ShowDashboard) {
      li_4 = vgi_1468;
      li_8 = vgi_1472;
      str_concat_12 = StringConcatenate("DrW_", vg_NameDashboard);
      if (ai_0 || (!vgi_1484)) {
         name_20 = str_concat_12 + "0";
         CriaLabel(name_20, li_4, li_8, "g", 120, "Webdings", vgi_452);
         ObjectSet(name_20, OBJPROP_BACK, BackgroundOpacity);
         name_20 = str_concat_12 + "00";
         CriaLabel(name_20, li_4, li_8 + 28, "g", 120, "Webdings", vgi_452);
         ObjectSet(name_20, OBJPROP_BACK, BackgroundOpacity);
         name_20 = str_concat_12 + "1";
         CriaLabel(name_20, li_4 + 5, li_8 + 2, "gggggggg", 14, "Webdings", C'0x14,0x14,0x14');
         ls_28 = "Dashboard";
         name_20 = str_concat_12 + "2";
         CriaLabel(name_20, li_4 + 55, li_8 + 7, ls_28, 10, "Tahoma", Black);
         name_20 = str_concat_12 + "3";
         CriaLabel(name_20, li_4 + 54, li_8 + 6, ls_28, 10, "Tahoma", Gold);
         ls_36 = CharToStr(105);
         name_20 = str_concat_12 + "5";
         CriaLabel(name_20, li_4 + 9, li_8 + 6, ls_36, 10, "Webdings", C'0x32,0x32,0x32');
         name_20 = str_concat_12 + "6";
         CriaLabel(name_20, li_4 + 8, li_8 + 5, ls_36, 10, "Webdings", Gold);
      }
      li_44 = li_8 + 25;
      digits_48 = Digits;
      spread_52 = MarketInfo(Symbol(), MODE_SPREAD);
      ls_60 = GetDoubleToStr(Bid, digits_48);
      ls_68 = GetDoubleToStr(Ask, digits_48);
      ls_76 = GetDoubleToStr(spread_52);
      ls_84 = "";
      for (int li_92 = 0; li_92 < StringLen(ls_60); li_92++) {
         if (StringGetChar(ls_60, li_92) != StringGetChar(ls_68, li_92)) break;
         ls_84 = ls_84 + StringSubstr(ls_60, li_92, 1);
      }
      ls_96 = Symbol();
      ls_28 = StringSubstr(ls_96, 0, 6);
      CriaLabel(str_concat_12 + "07", li_4 + 55, li_44 + 1, ls_28, 10, "Arial Black", Black);
      CriaLabel(str_concat_12 + "08", li_4 + 54, li_44, ls_28, 10, "Arial Black", DarkGray);
      li_44 += 15;
      li_104 = 5 * (7 - StringLen(ls_84)) + 28;
      ls_28 = ls_84;
      CriaLabel(str_concat_12 + "14", li_4 + li_104 + 2, li_44 + 2, ls_28, 20, "Verdana", Black);
      CriaLabel(str_concat_12 + "15", li_4 + li_104, li_44, ls_28, 20, "Verdana", White);
      li_44++;
      li_108 = li_104 + 16.5 * StringLen(ls_84);
      ls_28 = StringSubstr(ls_68, StringLen(ls_84));
      CriaLabel(str_concat_12 + "16", li_4 + li_108 + 1, li_44 + 1, ls_28, 10, "Verdana", Black);
      CriaLabel(str_concat_12 + "17", li_4 + li_108, li_44, ls_28, 10, "Verdana", White);
      li_44 += 13;
      ls_28 = StringSubstr(ls_60, StringLen(ls_84));
      CriaLabel(str_concat_12 + "18", li_4 + li_108 + 1, li_44 + 1, ls_28, 10, "Verdana", Black);
      CriaLabel(str_concat_12 + "19", li_4 + li_108, li_44, ls_28, 10, "Verdana", White);
      li_44 += 21;
      ls_28 = "Spread";
      CriaLabel(str_concat_12 + "7", li_4 + 64, li_44 + 1, ls_28, 10, "Tahoma", Black);
      CriaLabel(str_concat_12 + "8", li_4 + 63, li_44, ls_28, 10, "Tahoma", DarkGray);
      li_44 += 16;
      ls_28 = GetDoubleToStr(spread_52 / vDigits, 1);
      li_112 = 10026686;
      if (spread_52 / vDigits >= DashboardSpreadRedValue) li_112 = 255;
      CriaLabel(str_concat_12 + "10", li_4 + 62, li_44 + 2, ls_28, 22, "Verdana", Black);
      CriaLabel(str_concat_12 + "11", li_4 + 60, li_44, ls_28, 22, "Verdana", li_112);
      if (ai_0) {
         li_44 += 30;
         li_44 += 14;
         li_116 = 20;
         li_120 = 9;
         CriaLabel(str_concat_12 + "30", li_4 + 10, li_44, "M1", 7, "Arial", f0_158(1));
         CriaLabel(str_concat_12 + "31", li_4 + 6, li_44 - li_116, "-", 42, "Arial", f0_72(PERIOD_M1));
         CriaLabel(str_concat_12 + "32", li_4 + 6, li_44 - li_116 + li_120, "-", 42, "Arial", f0_103(PERIOD_M1));
         CriaLabel(str_concat_12 + "33", li_4 + 6, li_44 - li_116 + li_120 * 2, "-", 42, "Arial", f0_103(PERIOD_M1));
         CriaLabel(str_concat_12 + "34", li_4 + 6, li_44 - li_116 + 3 * li_120, "-", 42, "Arial", f0_102(PERIOD_M1));
         CriaLabel(str_concat_12 + "40", li_4 + 30, li_44, "M5", 7, "Arial", f0_158(5));
         CriaLabel(str_concat_12 + "41", li_4 + 26, li_44 - li_116, "-", 42, "Arial", f0_72(PERIOD_M5));
         CriaLabel(str_concat_12 + "42", li_4 + 26, li_44 - li_116 + li_120, "-", 42, "Arial", f0_103(PERIOD_M5));
         CriaLabel(str_concat_12 + "43", li_4 + 26, li_44 - li_116 + li_120 * 2, "-", 42, "Arial", f0_90(PERIOD_M5));
         CriaLabel(str_concat_12 + "44", li_4 + 26, li_44 - li_116 + 3 * li_120, "-", 42, "Arial", f0_102(PERIOD_M5));
         CriaLabel(str_concat_12 + "50", li_4 + 47, li_44, "M15", 7, "Arial", f0_158(15));
         CriaLabel(str_concat_12 + "51", li_4 + 46, li_44 - li_116, "-", 42, "Arial", f0_72(PERIOD_M15));
         CriaLabel(str_concat_12 + "52", li_4 + 46, li_44 - li_116 + li_120, "-", 42, "Arial", f0_103(PERIOD_M15));
         CriaLabel(str_concat_12 + "53", li_4 + 46, li_44 - li_116 + li_120 * 2, "-", 42, "Arial", f0_90(PERIOD_M15));
         CriaLabel(str_concat_12 + "54", li_4 + 46, li_44 - li_116 + 3 * li_120, "-", 42, "Arial", f0_102(PERIOD_M15));
         CriaLabel(str_concat_12 + "60", li_4 + 68, li_44, "M30", 7, "Arial", f0_158(30));
         CriaLabel(str_concat_12 + "61", li_4 + 66, li_44 - li_116, "-", 42, "Arial", f0_72(PERIOD_M30));
         CriaLabel(str_concat_12 + "62", li_4 + 66, li_44 - li_116 + li_120, "-", 42, "Arial", f0_103(PERIOD_M30));
         CriaLabel(str_concat_12 + "63", li_4 + 66, li_44 - li_116 + li_120 * 2, "-", 42, "Arial", f0_90(PERIOD_M30));
         CriaLabel(str_concat_12 + "64", li_4 + 66, li_44 - li_116 + 3 * li_120, "-", 42, "Arial", f0_102(PERIOD_M30));
         CriaLabel(str_concat_12 + "70", li_4 + 90, li_44, "H1", 7, "Arial", f0_158(60));
         CriaLabel(str_concat_12 + "71", li_4 + 86, li_44 - li_116, "-", 42, "Arial", f0_72(PERIOD_H1));
         CriaLabel(str_concat_12 + "72", li_4 + 86, li_44 - li_116 + li_120, "-", 42, "Arial", f0_103(PERIOD_H1));
         CriaLabel(str_concat_12 + "73", li_4 + 86, li_44 - li_116 + li_120 * 2, "-", 42, "Arial", f0_90(PERIOD_H1));
         CriaLabel(str_concat_12 + "74", li_4 + 86, li_44 - li_116 + 3 * li_120, "-", 42, "Arial", f0_102(PERIOD_H1));
         CriaLabel(str_concat_12 + "80", li_4 + 110, li_44, "H4", 7, "Arial", f0_158(240));
         CriaLabel(str_concat_12 + "81", li_4 + 106, li_44 - li_116, "-", 42, "Arial", f0_72(PERIOD_H4));
         CriaLabel(str_concat_12 + "82", li_4 + 106, li_44 - li_116 + li_120, "-", 42, "Arial", f0_103(PERIOD_H4));
         CriaLabel(str_concat_12 + "83", li_4 + 106, li_44 - li_116 + li_120 * 2, "-", 42, "Arial", f0_90(PERIOD_H4));
         CriaLabel(str_concat_12 + "84", li_4 + 106, li_44 - li_116 + 3 * li_120, "-", 42, "Arial", f0_102(PERIOD_H4));
         CriaLabel(str_concat_12 + "90", li_4 + 130, li_44, "D1", 7, "Arial", f0_158(1440));
         CriaLabel(str_concat_12 + "91", li_4 + 126, li_44 - li_116, "-", 42, "Arial", f0_72(PERIOD_D1));
         CriaLabel(str_concat_12 + "92", li_4 + 126, li_44 - li_116 + li_120, "-", 42, "Arial", f0_103(PERIOD_D1));
         CriaLabel(str_concat_12 + "93", li_4 + 126, li_44 - li_116 + li_120 * 2, "-", 42, "Arial", f0_90(PERIOD_D1));
         CriaLabel(str_concat_12 + "94", li_4 + 126, li_44 - li_116 + 3 * li_120, "-", 42, "Arial", f0_102(PERIOD_D1));
         li_120 = 10;
         CriaLabel(str_concat_12 + "101", li_4 + 145, li_44 + li_120, "MA", 6, "Arial", SkyBlue);
         CriaLabel(str_concat_12 + "102", li_4 + 145, li_44 + li_120 * 2, "CCI", 6, "Arial", SkyBlue);
         CriaLabel(str_concat_12 + "103", li_4 + 145, li_44 + 3 * li_120, "RSI", 6, "Arial", SkyBlue);
         CriaLabel(str_concat_12 + "104", li_4 + 145, li_44 + li_120 * 4, "Sth", 6, "Arial", SkyBlue);
         ihigh_124 = iHigh(Symbol(), PERIOD_D1, 0);
         ilow_132 = iLow(Symbol(), PERIOD_D1, 0);
         iopen_140 = iOpen(Symbol(), PERIOD_D1, 0);
         iclose_148 = iClose(Symbol(), PERIOD_D1, 0);
         ld_156 = f0_139(ihigh_124 - ilow_132);
         ld_164 = ld_156 / 29.0;
         if (ld_164 != 0.0) {
            ld_172 = f0_139(ihigh_124 - iopen_140) / ld_164;
            ld_180 = f0_139(ihigh_124 - iclose_148) / ld_164;
            li_188 = 6908265;
            li_112 = li_188;
            for (li_92 = 0; li_92 < 30; li_92++) {
               if (ld_172 > ld_180) {
                  if (MathFloor(ld_180) <= li_92) li_112 = 25600;
                  if (MathFloor(ld_172) < li_92) li_112 = li_188;
               } else {
                  if (ld_172 < ld_180) {
                     if (MathFloor(ld_172) <= li_92) li_112 = 2237106;
                     if (MathFloor(ld_180) < li_92) li_112 = li_188;
                  }
               }
               CriaLabel(StringConcatenate(str_concat_12, "DR", li_92), li_4 + 145, li_8 + 10 + 3 * li_92, "-", 20, "Arial", li_112);
            }
            CriaLabel(StringConcatenate(str_concat_12, "DRCurr"), li_4 + 137, li_8 + 18 + 3.0 * MathFloor(ld_180), "4", 8, "Webdings", Gold);
         }
      }
      vgi_1484 = TRUE;
   }
}

// EDEA1FE21A3EDE39BF7E8D6E9831284D
int f0_158(int ai_0) {
   if (Period() == ai_0) return (16777215);
   return (15453831);
}

// 6A398A7CB1A89E7422220FC9AC47FAF8
int f0_72(int a_timeframe_0) {
   if (Dashboard_OnlyCurrentTF && a_timeframe_0 != Period()) return (6908265);
   double ima_4 = iMA(Symbol(), a_timeframe_0, Dashboard_MAPeriod, 0, Dashboard_MAMode, Dashboard_MAPrice, 0);
   double ima_12 = iMA(Symbol(), a_timeframe_0, Dashboard_MAPeriod, 0, Dashboard_MAMode, Dashboard_MAPrice, 1);
   if (ima_4 > ima_12) return (65280);
   return (255);
}

// 9BBE1B727E7454DAF1054B4380C412FB
int f0_103(int a_timeframe_0) {
   if (Dashboard_OnlyCurrentTF && a_timeframe_0 != Period()) return (6908265);
   double icci_4 = iCCI(Symbol(), a_timeframe_0, Dashboard_CCIPeriod, Dashboard_CCIPrice, 0);
   double icci_12 = iCCI(Symbol(), a_timeframe_0, Dashboard_CCIPeriod, Dashboard_CCIPrice, 1);
   if (icci_4 > 0.0) {
      if (icci_4 <= icci_12) return (2237106);
      return (65280);
   }
   if (icci_4 < icci_12) return (255);
   return (32768);
}

// 8924A78C0605254C6973A5E079E5C60C
int f0_90(int a_timeframe_0) {
   if (Dashboard_OnlyCurrentTF && a_timeframe_0 != Period()) return (6908265);
   double irsi_4 = iRSI(Symbol(), a_timeframe_0, Dashboard_RSIPeriod, Dashboard_RSIPrice, 0);
   if (irsi_4 >= 50.0) return (65280);
   return (255);
}

// 9B63D776DCDB7E5F9566C12936C962CB
int f0_102(int a_timeframe_0) {
   if (Dashboard_OnlyCurrentTF && a_timeframe_0 != Period()) return (6908265);
   double istochastic_4 = iStochastic(Symbol(), a_timeframe_0, Dashboard_StochKPeriod, Dashboard_StockDPeriod, Dashboard_StochSlowing, Dashboard_StochMode, Dashboard_StochPrice,
      MODE_MAIN, 0);
   double istochastic_12 = iStochastic(Symbol(), a_timeframe_0, Dashboard_StochKPeriod, Dashboard_StockDPeriod, Dashboard_StochSlowing, Dashboard_StochMode, Dashboard_StochPrice,
      MODE_SIGNAL, 0);
   if (istochastic_4 > istochastic_12) return (65280);
   return (255);
}

// 506D7272A84C5F087624880F1171C82D
void f0_55() {
   int li_4;
   double iclose_8;
   double iopen_16;
   double ihigh_24;
   double ilow_32;
   double iopen_40;
   double ihigh_48;
   double ilow_56;
   double ld_64;
   double ld_72;
   double ld_80;
   int timeframe_0 = 0;
   if (Period() == PERIOD_D1) timeframe_0 = 43200;
   else {
      if (Period() == PERIOD_H4) timeframe_0 = 10080;
      else
         if (Period() < PERIOD_H4) timeframe_0 = 1440;
   }
   if (timeframe_0 > 0) {
      li_4 = 1;
      if (TimeDayOfWeek(iTime(Symbol(), timeframe_0, li_4)) == 0) li_4++;
      iclose_8 = iClose(Symbol(), timeframe_0, li_4);
      iopen_16 = iOpen(Symbol(), timeframe_0, li_4);
      ihigh_24 = iHigh(Symbol(), timeframe_0, li_4);
      ilow_32 = iLow(Symbol(), timeframe_0, li_4);
      iopen_40 = iOpen(Symbol(), timeframe_0, 0);
      ihigh_48 = iHigh(Symbol(), timeframe_0, 0);
      ilow_56 = iLow(Symbol(), timeframe_0, 0);
      ld_64 = ihigh_48 - ilow_56;
      ld_72 = ihigh_24 - ilow_32;
      ld_80 = (ihigh_24 + ilow_32 + iclose_8) / 3.0;
      vgd_1496 = ld_80;
      vgd_1504 = 2.0 * ld_80 + (ihigh_24 - 2.0 * ilow_32);
      vgd_1512 = ld_80 + (ihigh_24 - ilow_32);
      vgd_1520 = 2.0 * ld_80 - ilow_32;
      vgd_1528 = 2.0 * ld_80 - ihigh_24;
      vgd_1536 = ld_80 - (ihigh_24 - ilow_32);
      vgd_1544 = 2.0 * ld_80 - (2.0 * ihigh_24 - ilow_32);
   }
}

// 05EC5F8CC81F86D68993F307785CD862
void ExibePivotPoints() {
   f0_55();
   int li_0 = 2;
   int li_4 = vgi_1552;
   string str_concat_8 = StringConcatenate("DrW_", vgs_1488);
   ShowSuportResistence(str_concat_8 + "R3Text", "R3", str_concat_8 + "R3 line", li_0, li_4, vgd_1504);
   ShowSuportResistence(str_concat_8 + "R2Text", "R2", str_concat_8 + "R2 line", li_0, li_4, vgd_1512);
   ShowSuportResistence(str_concat_8 + "R1Text", "R1", str_concat_8 + "R1 line", li_0, li_4, vgd_1520);
   li_4 = vgi_1556;
   ShowSuportResistence(str_concat_8 + "PText", "P", str_concat_8 + "P line", li_0, li_4, vgd_1496);
   li_4 = vgi_1560;
   ShowSuportResistence(str_concat_8 + "S1Text", "S1", str_concat_8 + "S1 line", li_0, li_4, vgd_1528);
   ShowSuportResistence(str_concat_8 + "S2Text", "S2", str_concat_8 + "S2 line", li_0, li_4, vgd_1536);
   ShowSuportResistence(str_concat_8 + "S3Text", "S3", str_concat_8 + "S3 line", li_0, li_4, vgd_1544);
}

// ECEC9869575AF9DCB685E4A3B133CFE8
void ShowSuportResistence(string a_name_0, string a_text_8, string a_name_16, int ai_24, color a_clr_28, double a_price_32) {
   if (ObjectFind(a_name_0) != 0) {
      ObjectCreate(a_name_0, OBJ_TEXT, 0, Time[0] + 60 * Period() * vgi_1572, a_price_32);
      ObjectSetText(a_name_0, a_text_8, 8, "Arial", CLR_NONE);
   } else ObjectMove(a_name_0, 0, Time[0] + 60 * Period() * vgi_1572, a_price_32);
   if (ObjectFind(a_name_16) != 0) {
      ObjectCreate(a_name_16, ai_24, 0, Time[1], a_price_32, Time[0], a_price_32);
      ObjectSet(a_name_16, OBJPROP_STYLE, STYLE_DASHDOTDOT);
      ObjectSet(a_name_16, OBJPROP_COLOR, a_clr_28);
      return;
   }
   ObjectMove(a_name_16, 0, Time[1], a_price_32);
   ObjectMove(a_name_16, 1, Time[0], a_price_32);
}

// E86AC8F15FE841E2A07F823AE236DB69
void f0_154() {
   int li_0 = 60 * Period() - (TimeCurrent() - Time[0]);
   string text_4 = "                           < ";
   if (li_0 < 0) text_4 = text_4 + "--:--:--";
   else text_4 = text_4 + TimeToStr(li_0, TIME_SECONDS);
   string str_concat_12 = StringConcatenate("DrW_", vg_NameNextBar, "Text");
   string str_concat_20 = StringConcatenate("DrW_", vg_NameNextBar, "Bg");
   if (ObjectFind(str_concat_12) != 0) ObjectCreate(str_concat_12, OBJ_TEXT, 0, Time[0], Bid);
   ObjectMove(str_concat_12, 0, Time[0], Bid);
   ObjectSetText(str_concat_12, text_4, 8, "Verdana", NextCandleTimeTextColor);
}

// 4986B4C5BB37CA1A703AB220CAF9CD65
void ExibeFooter() {
   string str_concat_0 = StringConcatenate("DrW_", "CopyRight");
   string str_concat_8 = StringConcatenate("TraderAgent", " ", "v2.3.3", " ", GetTypeLicence());
   string ls_16 = "More info: http://www.icefx.eu";
   string ls_24 = "Build " + "159";
   string name_32 = str_concat_0 + "0";
   ObjectDelete(name_32);
   CriaLabel(name_32, 4, 1, "±", 80, "IceFX", C'0x5A,0x5A,0x5A');
   ObjectSet(name_32, OBJPROP_CORNER, 3);
   name_32 = str_concat_0 + "1";
   ObjectDelete(name_32);
   CriaLabel(name_32, 18, 16, str_concat_8, 10, "Tahoma", Gold);
   ObjectSet(name_32, OBJPROP_CORNER, 3);
   name_32 = str_concat_0 + "2";
   ObjectDelete(name_32);
   CriaLabel(name_32, 4, 4, ls_16, 8, "Tahoma", Silver);
   ObjectSet(name_32, OBJPROP_CORNER, 3);
   name_32 = str_concat_0 + "3";
   ObjectDelete(name_32);
   CriaLabel(name_32, 4, 30, ls_24, 8, "Tahoma", Gray);
   ObjectSet(name_32, OBJPROP_CORNER, 3);
}

// 3689FAF537C7277424867A8C8C0E0163
void ExibeCopyRight() {
   string str_concat_0 = StringConcatenate("DrW_", "CopyRight");
   string name_8 = str_concat_0 + "clock";
   if (ObjectFind(name_8) < 0) {
      ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0);
      ObjectSet(name_8, OBJPROP_CORNER, 3);
      ObjectSet(name_8, OBJPROP_BACK, FALSE);
      ObjectSet(name_8, OBJPROP_XDISTANCE, 4);
      ObjectSet(name_8, OBJPROP_YDISTANCE, 15);
   }
   ObjectSetText(name_8, CharToStr(vg_count_1584 + 183), 10, "Wingdings", Gold);
   vg_count_1584++;
   if (vg_count_1584 > 11) vg_count_1584 = 0;
   if (ObjectFind(str_concat_0 + "0") == -1) ExibeFooter();
}

// 8A9AA0276E92E1E287ED3D315CA553B8
int f0_94() {
   vgia_1184[0] = vgia_1188[0];
   vgia_1184[1] = vgia_1188[1];
   vgia_1184[2] = vgia_1188[2];
   vgia_1184[3] = vgia_1188[3];
   IceLock_GetWindowSize(vgi_804, vgia_1188);
   vgi_1192 = vgia_1188[2] - vgia_1188[0];
   vgi_1196 = vgia_1188[3] - vgia_1188[1];
   vgi_1268 = GetPrimeiroValor(ControlPanelX < 0, vgi_1192 + ControlPanelX, ControlPanelX);
   vgi_1272 = GetPrimeiroValor(ControlPanelY < 0, vgi_1196 + ControlPanelY - vgi_1280, ControlPanelY);
   vgi_1308 = GetPrimeiroValor(OrderListPanelX < 0, vgi_1192 + OrderListPanelX, OrderListPanelX);
   vgi_1312 = GetPrimeiroValor(OrderListPanelY < 0, vgi_1196 + OrderListPanelY - vgi_1320, OrderListPanelY);
   vgi_1396 = GetPrimeiroValor(AccountPanelX < 0, vgi_1192 + AccountPanelX, AccountPanelX);
   vgi_1400 = GetPrimeiroValor(AccountPanelY < 0, vgi_1196 + AccountPanelY - vgi_1408, AccountPanelY);
   vgi_1432 = GetPrimeiroValor(ProfitPanelX < 0, vgi_1192 + ProfitPanelX, ProfitPanelX);
   vgi_1436 = GetPrimeiroValor(ProfitPanelY < 0, vgi_1196 + ProfitPanelY - vgi_1444, ProfitPanelY);
   vgi_1468 = GetPrimeiroValor(DashboardX < 0, vgi_1192 + DashboardX, DashboardX);
   vgi_1472 = GetPrimeiroValor(DashboardY < 0, vgi_1196 + DashboardY - vgi_1480, DashboardY);
   if (vgia_1188[0] != vgia_1184[0] || vgia_1188[1] != vgia_1184[1] || vgia_1188[2] != vgia_1184[2] || vgia_1188[3] != vgia_1184[3]) {
      f0_6();
      return (1);
   }
   return (0);
}

// 0A0AC84BAFDEEFE131C3CA141E3191DC
void f0_6() {
   ExibeControlPainel();
   ExibeInformacoesPainel();
   ExibeProfitPanel();
   f0_142(1);
   ExibeFooter();
   if (ShowOrderListPanel && vgi_1324) {
      f0_121();
      f0_83();
   }
}

// C5AA0DDDA68543E36FBE2BD55B806ECA
int f0_130() {
   int lia_0[2];
   string ls_20;
   int li_4 = IceLock_GetMouseState(vgi_804, lia_0);
   int li_8 = lia_0[0];
   int li_12 = lia_0[1];
   if (li_4 == 1) {
      for (int count_16 = 0; count_16 < ArrayRange(vgia_1252, 0); count_16++) {
         if (vgi_1204 && GetTickCount() - vgia_1200[0] > 2000 || vgia_1200[1] != li_8 || vgia_1200[2] != li_12) {
            if (ShowControlPanel && f0_162(li_8, li_12, vgi_1268, vgi_1272, vgi_1268 + vgi_1276, vgi_1272 + vgi_1280)) f0_170(li_8, li_12);
            else {
               if (ShowOrderListPanel && f0_162(li_8, li_12, vgi_1308, vgi_1312, vgi_1308 + vgi_1316, vgi_1312 + vgi_1320)) f0_124(li_8, li_12);
               else
                  if (vgi_1340 && f0_162(li_8, li_12, vgi_1344, vgi_1348, vgi_1344 + vgi_1352, vgi_1348 + vgi_1356)) f0_156(li_8, li_12);
            }
            vgia_1200[0] = GetTickCount();
            vgia_1200[1] = li_8;
            vgia_1200[2] = li_12;
            vgi_1204 = FALSE;
            return (count_16);
         }
      }
   } else {
      if (li_4 < 0) {
         if (!vgi_1236) {
            ls_20 = "";//IceLock_GetLastResponseText(vgi_804);
           ExibeMensagem("License problem!", ls_20, 2, 5000);
         }
      } else vgi_1204 = TRUE;
   }
   vgi_796 = li_4 > 0;
   return (-1);
}

// F1C2A50AB274EA5BB48B52676E8779BD
int f0_162(int ai_0, int ai_4, int ai_8, int ai_12, int ai_16, int ai_20) {
   return (ai_8 <= ai_0 && ai_16 >= ai_0 && ai_12 <= ai_4 && ai_20 >= ai_4);
}

// F5543B7F0A2E0E1532973CAA9215D94B
void f0_167(int ai_0) {
   int li_4 = f0_56(vg_NamGridParent, ai_0);
   if (li_4 == EMPTY_VALUE) {
      GerenciaStopLoass(ai_0);
      GerenciaTakeProfit((ai_0);
      GerenciaBreakEven(ai_0);
      if (f0_45(vg_NameGrid, ai_0)) ExibeLinhasGride(ai_0);
      if (PartialClosePos1 != 0.0 && PartialClosePercent1 > 0.0 && PartialClosePercent1 <= 100.0) f0_29(ai_0, 1, PartialClosePos1, PartialClosePercent1);
      if (PartialClosePos2 != 0.0 && PartialClosePercent2 > 0.0 && PartialClosePercent2 <= 100.0) f0_29(ai_0, 2, PartialClosePos2, PartialClosePercent2);
      if (PartialClosePos3 != 0.0 && PartialClosePercent3 > 0.0 && PartialClosePercent3 <= 100.0) f0_29(ai_0, 3, PartialClosePos3, PartialClosePercent3);
   }
}

// 8891ADA670F5B3992A8951FA0D442FC0
void f0_88(string as_0, double ad_8, string a_text_16, color a_clr_24) {
   int li_44;
   double ld_28 = 0;
   if (vgi_1196 > 0) ld_28 = 7.5 * ((WindowPriceMax() - WindowPriceMin()) / (1.0 * vgi_1196));
   string name_36 = as_0 + "_Text";
   if (ObjectFind(name_36) > -1 || ObjectCreate(name_36, OBJ_TEXT, 0, 0, 0)) {
      ObjectSet(name_36, OBJPROP_TIME1, Time[0] + 60 * (ControlLineOffset * Period()));
      ObjectSet(name_36, OBJPROP_PRICE1, ad_8 + ld_28);
      ObjectSetText(name_36, a_text_16, 8, "Arial", a_clr_24);
      name_36 = as_0 + "_BgText";
      if (ObjectFind(name_36) != 0) ObjectCreate(name_36, OBJ_TEXT, 0, 0, 0);
      ObjectSet(name_36, OBJPROP_TIME1, Time[0] + 60 * (ControlLineOffset * Period()));
      ObjectSet(name_36, OBJPROP_PRICE1, ad_8 + ld_28);
      li_44 = StringLen(a_text_16) + 2;
      a_text_16 = "";
      for (int count_48 = 0; count_48 < li_44; count_48++) a_text_16 = a_text_16 + "Ы";
      ObjectSetText(name_36, a_text_16, 8, "Terminal", ControlLineLabelColor);
   }
}

// 82D963C450BA8CDDE78C498C77E7F272
int f0_84(int ai_0) {
   return (ai_0 == 0 || ai_0 == 2 || ai_0 == 4);
}

// C1037ECE641795974231751B55767CD8
void GerenciaTicket(int a_ticket_0) {
   int cmd_4;
   double order_lots_8;
   double order_open_price_16;
   double ld_24;
   double ld_32;
   if (OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES)) {
      cmd_4 = OrderType();
      order_lots_8 = OrderLots();
      order_open_price_16 = OrderOpenPrice();
      ld_24 = 0;
      ld_32 = 0;
      if (StopLoss > 0.0) {
         ld_24 = GetPrimeiroValorDouble(f0_84(cmd_4), order_open_price_16 - f0_7(StopLoss), order_open_price_16 + f0_7(StopLoss));
         CreateHLineForTicket(vg_NameLineSL, ld_24, a_ticket_0, StopLossColor);
      }
      if (TakeProfit > 0.0) {
         ld_32 = GetPrimeiroValorDouble(f0_84(cmd_4), order_open_price_16 + f0_7(TakeProfit), order_open_price_16 - f0_7(TakeProfit));
         CreateHLineForTicket(vg_NameLineTP, ld_32, a_ticket_0, TakeProfitColor);
      }
      if (!StealthMode && ld_24 > 0.0 || ld_32 > 0.0) ModifyTicketOrder(a_ticket_0, 0, 0, ld_24, ld_32);
      f0_35(a_ticket_0);
   }
}

// 3980953FD047E9F2CEAC750BFDF7FD07
void f0_35(int a_ticket_0) {
   double ld_4;
   if (OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES)) {
      ld_4 = GetOrderOpenPrice(a_ticket_0);
      f0_40(a_ticket_0, 1, PartialClosePos1);
      f0_40(a_ticket_0, 2, PartialClosePos2);
      f0_40(a_ticket_0, 3, PartialClosePos3);
      if (BreakEvenAt > 0.0) f0_120(a_ticket_0, OrderType(), ld_4);
   }
}

// 685F792C37B8B836793CE6A2B866715A
void GerenciaStopLoass(int a_ticket_0) {
   int cmd_4;
   double ld_8;
   double ld_16;
   double order_stoploss_24;
   string ls_32;
   string ls_40;
   bool li_48;
   double ld_52;
   double ld_60;
   string ls_68;
   int color_76;
   if (OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES)) {
      cmd_4 = OrderType();
      ld_8 = GetLotsforTicket(a_ticket_0);
      ld_16 = GetOrderOpenPrice(a_ticket_0);
      order_stoploss_24 = f0_31(vg_NameLineSL, a_ticket_0);
      if (order_stoploss_24 == EMPTY_VALUE) {
         if (OrderStopLoss() > 0.0) {
            order_stoploss_24 = OrderStopLoss();
            CreateHLineForTicket(vg_NameLineSL, order_stoploss_24, a_ticket_0, StopLossColor);
         } else {
            if (ForceSetSLTPIfMissing) {
               order_stoploss_24 = GetPrimeiroValorDouble(f0_84(cmd_4), ld_16 - f0_7(StopLoss), ld_16 + f0_7(StopLoss));
               CreateHLineForTicket(vg_NameLineSL, order_stoploss_24, a_ticket_0, StopLossColor);
            }
         }
         f0_35(a_ticket_0);
      } else {
         if ((cmd_4 == OP_BUY && Bid <= order_stoploss_24) || (cmd_4 == OP_SELL && Ask >= order_stoploss_24)) {
            SetLog(StringConcatenate("Ticket ", a_ticket_0, ": Price reach the StopLoss line! Closing order! SL line: ", order_stoploss_24, ", Price: ", GetPrimeiroValorDouble(cmd_4 == OP_BUY,
               Bid, Ask)));
            CloseAllGrid(a_ticket_0);
         } else {
            ls_32 = "[SL] ";
            ls_40 = f0_151(vg_NameLineSL, a_ticket_0);
            if (TrailingStop > 0.0) {
               ls_32 = "[TSL=" + GetDoubleToStr(TrailingStop) + "] ";
               li_48 = TrailingTicket(a_ticket_0, TrailingStop, 0);
               if (li_48) order_stoploss_24 = f0_31(vg_NameLineSL, a_ticket_0);
            }
            if (!StealthMode && order_stoploss_24 != NormalizeDoubleDigits(OrderStopLoss())) ModifyTicketOrder(a_ticket_0, 0, 0, order_stoploss_24);
            if (ShowControlLineLabels) {
               ld_52 = f0_139(GetPrimeiroValorDouble(f0_84(cmd_4), order_stoploss_24 - ld_16, ld_16 - order_stoploss_24));
               ld_60 = f0_153(ld_52, ld_8);
               ls_68 = f0_136(ld_60, 2);
               color_76 = StopLossColor;
               if (ld_60 > 0.0) color_76 = TakeProfitColor;
               f0_88(ls_40, order_stoploss_24, StringConcatenate(ls_32, OrderTicket(), ": ", GetDoubleToStr(ld_52, 1), " pips (", ls_68, ")"), color_76);
            }
         }
      }
   }
}

// 89769B13ED4F492C312B67394076B751
void GerenciaTakeProfit((int a_ticket_0) {
   int cmd_4;
   double ld_8;
   double ld_16;
   double order_takeprofit_24;
   string ls_nsd_32;
   double ld_40;
   double ld_48;
   string ls_56;
   string ls_64;
   if (OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES)) {
      cmd_4 = OrderType();
      ld_8 = GetLotsforTicket(a_ticket_0);
      ld_16 = GetOrderOpenPrice(a_ticket_0);
      order_takeprofit_24 = f0_31(vg_NameLineTP, a_ticket_0);
      if (order_takeprofit_24 == EMPTY_VALUE) {
         if (OrderTakeProfit() > 0.0) {
            order_takeprofit_24 = OrderTakeProfit();
            CreateHLineForTicket(vg_NameLineTP, order_takeprofit_24, a_ticket_0, TakeProfitColor);
         } else {
            if (ForceSetSLTPIfMissing) {
               order_takeprofit_24 = GetPrimeiroValorDouble(f0_84(cmd_4), ld_16 + f0_7(TakeProfit), ld_16 - f0_7(TakeProfit));
               CreateHLineForTicket(vg_NameLineTP, order_takeprofit_24, a_ticket_0, TakeProfitColor);
            }
         }
      } else {
         if ((cmd_4 == OP_BUY && Bid >= order_takeprofit_24) || (cmd_4 == OP_SELL && Ask <= order_takeprofit_24)) {
            SetLog(StringConcatenate("Ticket ", a_ticket_0, ": Price reach the TakeProfit line! Closing order! TP line: ", order_takeprofit_24, ", Price: ", GetPrimeiroValorDouble(cmd_4 == OP_BUY,
               Bid, Ask)));
            CloseAllGrid(a_ticket_0);
         } else {
            if (!StealthMode && order_takeprofit_24 != NormalizeDoubleDigits(OrderTakeProfit())) ModifyTicketOrder(a_ticket_0, 0, 0, 0, order_takeprofit_24);
            if (ShowControlLineLabels) {
               ls_nsd_32 = "[TP] ";
               ld_40 = f0_139(MathAbs(ld_16 - order_takeprofit_24));
               ld_48 = f0_153(ld_40, ld_8);
               ls_56 = f0_136(ld_48, 2);
               ls_64 = f0_151(vg_NameLineTP, a_ticket_0);
               f0_88(ls_64, order_takeprofit_24, StringConcatenate("[TP] ", OrderTicket(), ": ", GetDoubleToStr(ld_40, 1), " pips (", ls_56, ")"), TakeProfitColor);
            }
         }
      }
   }
}

// B83E55AB5F40B64638ACCC1C1CC0F66F
void f0_120(int ai_0, int ai_4, double ad_8) {
   double ld_16 = GetPrimeiroValorDouble(f0_84(ai_4), ad_8 + f0_7(BreakEvenAt), ad_8 - f0_7(BreakEvenAt));
   CreateHLineForTicket(vg_NameBreakEven, ld_16, ai_0, BreakEvenColor);
}

// 3BE9355AC3F791222AD6D439E4AFF99A
void f0_40(int a_ticket_0, int ai_4, double ad_8) {
   if (!OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES) || OrderSymbol() != Symbol() || ad_8 == 0.0) return;
   int cmd_16 = OrderType();
   double order_lots_20 = OrderLots();
   double order_open_price_28 = OrderOpenPrice();
   double ld_36 = GetPrimeiroValorDouble(f0_84(cmd_16), order_open_price_28 + f0_7(ad_8), order_open_price_28 - f0_7(ad_8));
   CreateHLineForPartialClose(a_ticket_0, ai_4, ad_8, ld_36);
}

// 3F9D4D0323EF7F5AD257F632CD2A26CA
void CreateHLineForPartialClose(int a_ticket_0, int ai_4, double ad_8, double ad_16) {
   if (!OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES) || OrderSymbol() != Symbol()) return;
   int cmd_24 = OrderType();
   double stoplevel_28 = MarketInfo(Symbol(), MODE_STOPLEVEL);
   double ld_36 = Ask - Bid;
   if (cmd_24 > OP_SELL) {
      if (ad_8 != 0.0) CreateHLineForTicket(vgs_1044 + GetDoubleToStr(ai_4), ad_16, a_ticket_0, PartialCloseColor);
   } else {
      if (((cmd_24 == OP_BUY && ad_8 > 0.0) || (cmd_24 == OP_SELL && ad_8 < 0.0) && ad_16 > Bid + ld_36 + f0_7(1)) || ((cmd_24 == OP_SELL && ad_8 > 0.0) || (cmd_24 == OP_BUY &&
         ad_8 < 0.0) && ad_16 < Bid - ld_36 - f0_7(1))) CreateHLineForTicket(vgs_1044 + GetDoubleToStr(ai_4), ad_16, a_ticket_0, PartialCloseColor);
   }
}

// 2F1DB2AE07F19F39E12ED9F3C6736290
void f0_29(int a_ticket_0, int ai_4, double ad_8, double ad_16) {
   double ld_52;
   string ls_60;
   string name_68;
   if (!OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES) || OrderSymbol() != Symbol()) return;
   int cmd_24 = OrderType();
   double ld_28 = GetLotsforTicket(a_ticket_0);
   double ld_36 = GetOrderOpenPrice(a_ticket_0);
   double ld_44 = f0_31(vgs_1044 + GetDoubleToStr(ai_4), a_ticket_0);
   if (ld_44 != EMPTY_VALUE) {
      ld_52 = f0_139(MathAbs(ld_36 - ld_44));
      ls_60 = f0_136(f0_153(ld_52, ld_28), 2);
      name_68 = f0_151(vgs_1044 + GetDoubleToStr(ai_4), a_ticket_0);
      if (ShowControlLineLabels) f0_88(name_68, ld_44, StringConcatenate("[PC", ai_4, "] ", OrderTicket(), ": ", GetDoubleToStr(ld_52, 1), " pips (", ad_16, "%)"), PartialCloseColor);
      if (((cmd_24 == OP_BUY && ad_8 > 0.0) || (cmd_24 == OP_SELL && ad_8 < 0.0) && ld_44 <= Close[0]) || ((cmd_24 == OP_SELL && ad_8 > 0.0) || (cmd_24 == OP_BUY && ad_8 < 0.0) &&
         ld_44 >= Close[0])) {
         CloseOrderPartialNow(a_ticket_0, ad_16);
         ObjectDelete(name_68 + "_Text");
         ObjectDelete(name_68 + "_BgText");
         ObjectDelete(name_68);
      }
   }
}

// 453E13E7614D8CCF30123D2AD5C771DC
void GerenciaBreakEven(int a_ticket_0) {
   double ld_32;
   string ls_40;
   string name_48;
   if (!OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES) || OrderSymbol() != Symbol()) return;
   int cmd_4 = OrderType();
   double ld_8 = GetLotsforTicket(a_ticket_0);
   double ld_16 = GetOrderOpenPrice(a_ticket_0);
   double ld_24 = f0_31(vg_NameBreakEven, a_ticket_0);
   if (ld_24 != EMPTY_VALUE) {
      ld_32 = f0_139(MathAbs(ld_16 - ld_24));
      ls_40 = f0_136(f0_153(ld_32, ld_8), 2);
      name_48 = f0_151(vg_NameBreakEven, a_ticket_0);
      if (ShowControlLineLabels) f0_88(name_48, ld_24, StringConcatenate("[BE] ", OrderTicket(), ": ", GetDoubleToStr(ld_32, 1), " pips (", ls_40, ")"), BreakEvenColor);
      if ((cmd_4 == OP_BUY && ld_24 <= Close[0]) || (cmd_4 == OP_SELL && ld_24 >= Close[0])) {
         SetBreakeEven(a_ticket_0);
         ObjectDelete(name_48 + "_Text");
         ObjectDelete(name_48 + "_BgText");
         ObjectDelete(name_48);
      }
   }
}

// ADA7C40C36B61F2F558BD473F21B8B5B
void f0_116() {
   string name_8;
   string name_16;
   string ls_24;
   int li_0 = ObjectsTotal();
   for (int li_4 = li_0 - 1; li_4 >= 0; li_4--) {
      name_8 = ObjectName(li_4);
      if (ObjectFind(name_8) == 0) {
         if (UseTrendLines && ObjectType(name_8) == 2) OpenOrderByTrendLine(name_8);
         if (UseChannels && ObjectType(name_8) == 5) OpenOrderByChannel(name_8);
         if (UsePendingLines && ObjectType(name_8) == 1) f0_26(name_8);
      }
   }
   if (UsePendingLines) {
      li_0 = OrdersTotal();
      for (li_4 = li_0 - 1; li_4 >= 0; li_4--) {
         if (OrderSelect(li_4, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
               if (OrderType() > OP_SELL) {
                  name_16 = f0_151(vg_NamePendingPrice, OrderTicket());
                  ls_24 = name_16 + "_Text";
                  if (ObjectFind(name_16) == -1) {
                     VerifyTicket(OrderTicket(), "Delete pending order because there is no line on chart!");
                     OrderDelete(OrderTicket());
                  }
               }
            }
         }
      }
   }
}

// 6CB6B16E41BC868A64E6E67B270514C9
void OpenOrderByTrendLine(string a_name_0) {
   string text_48;
   double str2dbl_56;
   double str2dbl_64;
   int str2int_72;
   int str2int_76;
   int li_84;
   double ld_88;
   double ld_96;
   string ls_8 = ObjectDescription(a_name_0);
   double ld_16 = NormalizeDoubleDigits(ObjectGet(a_name_0, OBJPROP_PRICE1));
   double ld_24 = NormalizeDoubleDigits(ObjectGet(a_name_0, OBJPROP_PRICE2));
   double ld_32 = NormalizeDoubleDigits(ObjectGet(a_name_0, OBJPROP_TIME1));
   double ld_40 = NormalizeDoubleDigits(ObjectGet(a_name_0, OBJPROP_TIME2));
   if (ls_8 != "" && StringFind(ls_8, "!") == 0) {
      text_48 = ls_8;
      f0_89(text_48, "|");
      str2dbl_56 = StrToDouble(f0_89(text_48, "|"));
      str2dbl_64 = StrToDouble(f0_89(text_48, "|"));
      str2int_72 = StrToInteger(f0_89(text_48, "|"));
      str2int_76 = StrToInteger(f0_89(text_48, "|"));
      if (NormalizeDoubleDigits(str2dbl_56) != ld_16 || NormalizeDoubleDigits(str2dbl_64) != ld_24 || NormalizeDoubleDigits(str2int_72) != ld_32 || NormalizeDoubleDigits(str2int_76) != ld_40) {
         ObjectSetText(a_name_0, text_48);
         ObjectSet(a_name_0, OBJPROP_COLOR, Red);
         ls_8 = ObjectDescription(a_name_0);
         SetTraceLog(StringConcatenate("Reactivate trend line: ", a_name_0, " (", ls_8, ")"));
      }
   }
   int li_80 = -1;
   if (StringFind(ls_8, "!") != 0 && ObjectGet(a_name_0, OBJPROP_RAY) == 1.0 || (Time[0] >= ld_32 && Time[0] <= ld_40)) {
      li_84 = 0;
      if (OpenAfterCandleClose) li_84 = 1;
      ld_88 = ObjectGetValueByShift(a_name_0, li_84);
      if (StringFind(a_name_0, "Trendline", 0) == 0 || (TrueTLSupport && StringFind(a_name_0, "TrueTL", 0) == 0) && ld_88 > Open[li_84]) {
         if (Close[li_84] >= ld_88 && Open[li_84] < ld_88) {
            ld_96 = f0_27(ls_8, vgd_748);
            li_80 = 0;
            if (OppositeTrendLineOrder || StringFind(ls_8, "sell", 0) == 0) li_80 = 1;
         }
      } else {
         if (StringFind(a_name_0, "Trendline", 0) == 0 || (TrueTLSupport && StringFind(a_name_0, "TrueTL", 0) == 0) && ld_88 < Open[li_84]) {
            if (Close[li_84] <= ld_88 && Open[li_84] > ld_88) {
               ld_96 = f0_27(ls_8, vgd_748);
               li_80 = 1;
               if (OppositeTrendLineOrder || StringFind(ls_8, "buy", 0) == 0) li_80 = 0;
            }
         }
      }
      if (li_80 != -1) {
         SetLog(StringConcatenate("Open order for trend line! Name: ", a_name_0));
         if (OpenOrderNow(li_80, ld_96) > 0) {
            f0_172(vg_NameLastTrendOpen, TimeCurrent());
            if (DeleteTrendLinesAfterOpen) {
               SetTraceLog("Delete trend line: " + a_name_0);
               ObjectDelete(a_name_0);
            } else {
               SetTraceLog("Disable trend line: " + a_name_0);
               ObjectSetText(a_name_0, StringConcatenate("!Old", "|", ObjectGet(a_name_0, OBJPROP_PRICE1), "|", ObjectGet(a_name_0, OBJPROP_PRICE2), "|", ObjectGet(a_name_0, OBJPROP_TIME1),
                  "|", ObjectGet(a_name_0, OBJPROP_TIME2), "|", ls_8));
               ObjectSet(a_name_0, OBJPROP_COLOR, Gray);
            }
            if (TrendLinesOCOMode) f0_122();
         }
      }
   }
}

// 9C4D9879A9CC1EC0B794F0312287CE43
void OpenOrderByChannel(string a_name_0) {
   int li_68;
   double ld_72;
   double ld_80;
   double ld_88;
   string ls_8 = ObjectDescription(a_name_0);
   double ld_16 = NormalizeDoubleDigits(ObjectGet(a_name_0, OBJPROP_PRICE1));
   double ld_24 = NormalizeDoubleDigits(ObjectGet(a_name_0, OBJPROP_PRICE2));
   double ld_32 = NormalizeDoubleDigits(ObjectGet(a_name_0, OBJPROP_PRICE3));
   double ld_40 = NormalizeDoubleDigits(ObjectGet(a_name_0, OBJPROP_TIME1));
   double ld_48 = NormalizeDoubleDigits(ObjectGet(a_name_0, OBJPROP_TIME2));
   double ld_56 = NormalizeDoubleDigits(ObjectGet(a_name_0, OBJPROP_TIME3));
   int li_64 = -1;
   if (StringFind(ls_8, "!") != 0 && ObjectGet(a_name_0, OBJPROP_RAY) == 1.0 || (Time[0] >= ld_40 && Time[0] <= ld_48)) {
      li_68 = 0;
      if (OpenAfterCandleClose) li_68 = 1;
      if (ld_32 > ld_16) {
         ld_72 = ObjectGetValueByShift(a_name_0, li_68);
         ld_80 = ld_72 + (ld_32 - ld_16);
      } else {
         ld_80 = ObjectGetValueByShift(a_name_0, li_68);
         ld_72 = ld_80 - (ld_16 - ld_32);
      }
      if (Close[li_68] >= ld_80 && Open[li_68] < ld_80) {
         ld_88 = vgd_748;
         li_64 = 0;
         if (OppositeTrendLineOrder) li_64 = 1;
      } else {
         if (Close[li_68] <= ld_72 && Open[li_68] > ld_72) {
            ld_88 = vgd_748;
            li_64 = 1;
            if (OppositeTrendLineOrder) li_64 = 0;
         }
      }
      if (li_64 != -1) {
         SetLog(StringConcatenate("Open order for channel! Name: ", a_name_0));
         if (OpenOrderNow(li_64, ld_88) > 0) {
            SetTraceLog("Delete channel: " + a_name_0);
            ObjectDelete(a_name_0);
         }
      }
   }
}

// 2C5A855C6F830E8B269D08DDD9D53A1A
void f0_26(string a_name_0) {
   double ld_28;
   int ticket_36;
   string name_40;
   bool li_48;
   double ld_52;
   double ld_60;
   double ld_68;
   double ld_76;
   double ld_84;
   string ls_8 = GetApenasLetras(ObjectDescription(a_name_0));
   double price_16 = NormalizeDoubleDigits(ObjectGet(a_name_0, OBJPROP_PRICE1));
   int li_24 = -1;
   if (StringFind(a_name_0, "Horizontal Line", 0) == 0) {
      if (StringFind(ls_8, "buy") == 0) {
         if (price_16 > Close[0]) li_24 = 4;
         else li_24 = 2;
      } else {
         if (StringFind(ls_8, "sell") == 0) {
            if (price_16 > Close[0]) li_24 = 3;
            else li_24 = 5;
         }
      }
      if (li_24 != -1) {
         SetLog(StringConcatenate("Open pending (", f0_169(li_24), ") position by line: ", a_name_0));
         ld_28 = f0_27(ls_8, vgd_748);
         if (OpenOrder(li_24, ld_28, 0, 0, MagicNumber, 0, price_16)) {
            ticket_36 = vg_ticket_968;
            GerenciaTicket(ticket_36);
            name_40 = f0_151(vg_NamePendingPrice, ticket_36);
            if (ObjectFind(name_40) == -1) {
               ObjectCreate(name_40, OBJ_HLINE, 0, 0, price_16);
               ObjectSet(name_40, OBJPROP_COLOR, PendingLineColor);
               ObjectSet(name_40, OBJPROP_STYLE, STYLE_DASHDOT);
            }
            if (ShowControlLineLabels) f0_88(name_40, price_16, StringConcatenate("[", f0_169(li_24), "] ", OrderTicket(), ": ", GetDoubleToStr(ld_28, 2), " lots"), PendingLineColor);
            ObjectDelete(a_name_0);
         }
      }
   } else {
      if (StringFind(a_name_0, vgs_996, 0) == 0 && StringFind(a_name_0, vg_NamePendingPrice, 0) > 0) {
         li_48 = FALSE;
         price_16 = ObjectGet(a_name_0, OBJPROP_PRICE1);
         ticket_36 = f0_70(a_name_0);
         if (OrderSelect(ticket_36, SELECT_BY_TICKET)) {
            if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
               li_48 = TRUE;
               if (PendingOCOMode) {
                  SetLog(StringConcatenate("Delete all pending orders. Cause: PendingOCOMode is true and ticket ", ticket_36, " is opened. "));
                  RemoveOrdersPendents();
               }
            } else {
               if (NormalizeDoubleDigits(OrderOpenPrice()) != NormalizeDoubleDigits(price_16)) {
                  ld_52 = 0;
                  ld_60 = 0;
                  ld_68 = OrderOpenPrice() - price_16;
                  ld_76 = f0_31(vg_NameLineSL, ticket_36);
                  if (ld_76 != EMPTY_VALUE) ld_52 = ld_76 - ld_68;
                  ld_84 = f0_31(vg_NameLineTP, ticket_36);
                  if (ld_84 != EMPTY_VALUE) ld_60 = ld_84 - ld_68;
                  if (ModifyPendingOrderPrice(ticket_36, price_16, GetPrimeiroValorDouble(StealthMode, 0, ld_52), GetPrimeiroValorDouble(StealthMode, 0, ld_60))) {
                     if (OrderSelect(ticket_36, SELECT_BY_TICKET)) {
                        if (ld_52 > 0.0) CreateHLineForTicket(vg_NameLineSL, ld_52, ticket_36);
                        if (ld_60 > 0.0) CreateHLineForTicket(vg_NameLineTP, ld_60, ticket_36);
                        for (int li_92 = 1; li_92 <= 3; li_92++)
                           if (f0_31(vgs_1044 + GetDoubleToStr(li_92), ticket_36) != EMPTY_VALUE) CreateHLineForTicket(vgs_1044 + GetDoubleToStr(li_92), f0_31(vgs_1044 + GetDoubleToStr(li_92), ticket_36) - ld_68, ticket_36, PartialCloseColor);
                        if (f0_31(vg_NameBreakEven, ticket_36) != EMPTY_VALUE) CreateHLineForTicket(vg_NameBreakEven, f0_31(vg_NameBreakEven, ticket_36) - ld_68, ticket_36, BreakEvenColor);
                     }
                  }
               }
               if (ShowControlLineLabels) {
                  name_40 = f0_151(vg_NamePendingPrice, ticket_36);
                  f0_88(name_40, price_16, StringConcatenate("[", f0_169(OrderType()), "] ", OrderTicket(), ": ", GetDoubleToStr(OrderLots(), 2), " lots"), PendingLineColor);
               }
            }
         } else li_48 = TRUE;
         if (li_48) {
            ObjectDelete(a_name_0);
            name_40 = f0_151(vg_NamePendingPrice, ticket_36);
            ObjectDelete(name_40 + "_BgText");
            ObjectDelete(name_40 + "_Text");
         }
      }
   }
}

// B8657638CFA5247FE57D2D00F2E198B8
void f0_122() {
   string name_8;
   int objs_total_0 = ObjectsTotal();
   for (int li_4 = objs_total_0 - 1; li_4 >= 0; li_4--) {
      name_8 = ObjectName(li_4);
      if (ObjectType(name_8) != 2 || ObjectFind(name_8) != 0) continue;
      ObjectDelete(name_8);
   }
}

// 7B26EB163EEA6BBA01A1869096B0C7F1
void RemoveOrdersPendents() {
   int order_total_0 = OrdersTotal();
   for (int pos_4 = order_total_0 - 1; pos_4 >= 0; pos_4--) {
      if (OrderSelect(pos_4, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() > OP_SELL) OrderDelete(OrderTicket());
      }
   }
}

// A2EAB982495DA51539FEDFD4F431755F
void ExibeLinhasGride(int a_ticket_0) {
   if (!OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES) || OrderSymbol() != Symbol()) return;
   int cmd_4 = OrderType();
   double ld_8 = f0_96(a_ticket_0);
   if (GetLevelGrid(a_ticket_0) > 1) CreateHLineForTicket(vg_NameGridPrice, ld_8, a_ticket_0, LightSkyBlue, STYLE_DOT);
}

// 91F4903D720AB7A282618D4DEAA0D2D1
double f0_96(int ai_0) {
   double ld_4;
   int li_24;
   double ld_12 = 0;
   for (int pos_20 = OrdersTotal() - 1; pos_20 >= 0; pos_20--) {
      if (OrderSelect(pos_20, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
            if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
               li_24 = f0_56(vg_NamGridParent, OrderTicket());
               if (li_24 == ai_0 || OrderTicket() == ai_0) {
                  ld_4 += OrderOpenPrice() * OrderLots();
                  ld_12 += OrderLots();
               }
            }
         }
      }
   }
   if (ld_12 > 0.0) return (NormalizeDoubleDigits(ld_4 / ld_12));
   return (EMPTY_VALUE);
}

// 2C6D6D7A6D0F1902FDEAEAB1C37DD7FB
double f0_27(string as_0, double a_str2dbl_8) {
   double str2dbl_16 = a_str2dbl_8;
   string ls_24 = as_0;
   string ls_32 = f0_89(ls_24, "=");
   if (StringLen(ls_24) > 0) str2dbl_16 = StrToDouble(ls_24);
   return (GetNormalizeLot(str2dbl_16));
}

// 68CECFBE4049D002E8B8CE95B3832A6E
int f0_70(string as_0) {
   int str2int_8 = -1;
   string ls_12 = StringSubstr(as_0, StringLen(vgs_996));
   string ls_20 = StringSubstr(ls_12, 0, StringFind(ls_12, "_", 0));
   str2int_8 = StrToInteger(ls_20);
   return (str2int_8);
}

// 7CE58342490F2719632C99A1A5E38D1B
void CriaLabel(string a_name_0, int a_x_8, int a_y_12, string a_text_16, int a_fontsize_24, string a_fontname_28, color a_clr_36) {
   if (ObjectFind(a_name_0) < 0) ObjectCreate(a_name_0, OBJ_LABEL, 0, 0, 0);
   ObjectSet(a_name_0, OBJPROP_CORNER, vg_corner_1180);
   ObjectSet(a_name_0, OBJPROP_BACK, FALSE);
   ObjectSet(a_name_0, OBJPROP_XDISTANCE, a_x_8);
   ObjectSet(a_name_0, OBJPROP_YDISTANCE, a_y_12);
   ObjectSetText(a_name_0, a_text_16, a_fontsize_24, a_fontname_28, a_clr_36);
}

// 6BF191DB9F328C0F42640F1F596A2384
void LimpaLinhas() {
   string name_4;
   string ls_12;
   string ls_20;
   int str2int_28;
   for (int li_0 = ObjectsTotal() - 1; li_0 >= 0; li_0--) {
      name_4 = ObjectName(li_0);
      if (ObjectFind(name_4) == 0) {
         if (StringFind(name_4, vgs_996, 0) == 0) {
            ls_12 = StringSubstr(name_4, StringLen(vgs_996));
            ls_20 = StringSubstr(ls_12, 0, StringFind(ls_12, "_", 0));
            str2int_28 = StrToInteger(ls_20);
            if (str2int_28 > 0 && !OrderSelect(str2int_28, SELECT_BY_TICKET, MODE_TRADES) || OrderCloseTime() != 0) ObjectDelete(name_4);
         }
      }
   }
}

// 1135155E048F3DF4275620DA6DD845E6
string f0_10(int ai_0) {
   string lsa_4[6] = {"year", "month", "day", "h", "m", "s"};
   int lia_8[6] = {31536000, 2678400, 86400, 3600, 60, 1};
   if (ai_0 < 0) return ("-");
   string ls_ret_12 = "";
   int count_20 = 0;
   int li_24 = ai_0;
   int li_28 = 0;
   for (int index_32 = 0; index_32 < 6; index_32++) {
      li_28 = MathFloor(li_24 / lia_8[index_32]);
      if (li_28 > 0) {
         if (count_20 > 0) ls_ret_12 = ls_ret_12 + " ";
         ls_ret_12 = StringConcatenate(ls_ret_12, li_28, lsa_4[index_32]);
         count_20++;
         if (count_20 > 1) break;
         li_24 = MathMod(li_24, lia_8[index_32]);
      }
   }
   return (ls_ret_12);
}

// 61BCD96A2C1F8026527CBF2019D6E9A4
int StatusEA() {
   string ls_24;
   bool li_ret_0 = FALSE;
   AddComment("");
   AddComment("Starting " + StringConcatenate("TraderAgent", " ", "v2.3.3", " Build ", "159", " ", GetTypeLicence(), "..."));
   AddComment("Checking DLL calls............");
   if (!IsDllsAllowed()) {
      AddComment("ERROR", 1);
      AddComment("Set Parameter **AllowDLL Imports** ON in menu Tools -> Options -> ExpertAdvisors.");
      return (1);
   }
   AddComment("OK", 1);
   AddComment("Checking Expert enabled............");
   if (!IsExpertEnabled()) {
      AddComment("ERROR", 1);
      AddComment("Please enable the Expert Advisors.");
      return (1);
   }
   AddComment("OK", 1);
   string ls_4 = "2.3.1.60";//IceLock_GetVersion();
   AddComment("DLL version: " + ls_4);
   SetLog("Product version: " + "v2.3.3" + " Build " + "159");
   SetLog("IceLock DLL version: " + ls_4);
   AddComment("Checking passkey............");
   int str2int_12 = 0;
   string ls_16 = "";
   vgi_804 = WindowHandle(Symbol(), Period());
   ls_16 = "1 | Pro mode!";//IceLock_CheckLicense(vgi_804, PassKey, TerminalPath(), WindowExpertName(), "30b491b240062cd4e41874504960a075", "v2.3.3", 0);
   str2int_12 = StrToInteger(f0_89(ls_16, " | "));
   if (str2int_12 <= 0) {
      ls_24 = "unknown";//IceLock_GetComputerID();
      AddComment("ERROR", 1);
      AddComment("License error! " + ls_16);
      SetErrorLog("License error! " + ls_16);
      AddComment("Computer ID: " + ls_24);
      SetErrorLog("Computer ID: " + ls_24);
      Alert("TraderAgent", " ", "v2.3.3", " - License check error (", str2int_12, ")! ", ls_16);
      return (str2int_12);
   }
   if (str2int_12 == 1) AddComment("OK", 1);
   else {
      if (str2int_12 == 2) {
         AddComment("OK", 1);
         AddComment("Trial mode!");
         vgi_1596 = TRUE;
      }
   }
   SetInfoLog("Your computer ID: unknown"/* + IceLock_GetComputerID()*/);
   SetInfoLog("License check result (" + GetDoubleToStr(str2int_12) + "): " + ls_16);
   AddComment("Waiting for first tick............");
   vgi_1600 = TRUE;
   li_ret_0 = TRUE;
   return (li_ret_0);
}

// 5DDE2CC43817CF3BC77DE1C0C7978C13
void PrintComment() {
   vg_count_1592 = 0;
   ExibeComment();
}

// B70A9113C5772E6DFB45E474B46C9979
void AddComment(string pMessage, bool ai_8 = FALSE, int ai_12 = -1) {
   if (ai_12 == -1) {
      if (!ai_8) {
         ai_12 = vg_count_1592;
         vg_count_1592++;
      } else ai_12 = vg_count_1592 - 1;
   }
   if (ai_8) vg_ArrayComment[ai_12] = vg_ArrayComment[ai_12] + pMessage;
   else vg_ArrayComment[ai_12] = pMessage;
   ExibeComment();
}

// 2F7095AADF8745BE0F469991AD836EF1
void ExibeComment() {
   string vcoment = "";
   for (int index_8 = 0; index_8 < vg_count_1592; index_8++) {
      if (index_8 > 0) {
         vcoment = vcoment + "\n";
      }
      vcoment = vcoment + vg_ArrayComment[index_8];
   }
   Comment(vcoment);
}

// 0E40DB3B593F30DA392370025B26753A
void StopEA() {
   Print("Self-destruct initiated!");
   int li_0 = WindowHandle(Symbol(), 0);
   PostMessageA(li_0, WM_COMMAND, 33050, 0);
}

// 43FCCB9D3B9E6FC994AC54D13FB61D2F
void f0_47() {
   vg_bool_844 = (!IsOptimization()) && 1;
   vg_bool_852 = !IsTesting();
   vgi_848 = TRUE;
   vg_IpServer = "127.0.0.1";
   vg_bool_856 = IsTesting() || f0_22(vgs_udplovg_1132, -1, 0, 1) == 1.0;
   f0_2();
   GravaInformacoesLog();
}




// F21A94BE6FBDF8D56C501172DCEDA4CC
void f0_163() {
   ArrayInitialize(vgia_1188, 0);
   vgi_nsd_744 = 0;
   ArrayInitialize(vgia_1200, 0);
   vgi_1324 = FALSE;
   vgi_1296 = 0;
   vg_dttm_1328 = 0;
   f0_19();
   f0_33();
}

// A9AC747ECC57E99EEF4277C89F17F1C7
void f0_113() {
   vgi_804 = WindowHandle(Symbol(), Period());
   IceLock_StartTicker(vgi_804, TickTime);
}

// 29984943467A7EC2DB2B1FC0BE6394DE
void f0_23() {
   IceLock_StopTicker(vgi_804);
}


// 451B93CD5361E5070EDA031D26C5855B
void f0_49() {
   double ld_0;
   vgi_760++;
   vgi_756 = GetTickCount();
   f0_130();
   ExibeCopyRight();
   if (vg_bool_776) f0_142(0);
   if (IsTesting() && BackTestTime > 0)
      if (TimeCurrent() - vg_dttm_772 < BackTestTime) return;
   vg_dttm_772 = TimeCurrent();
   if (GetTickCount() - vgi_768 > vgi_816 || IsTesting()) {
      vg_bool_812 = GlobalVariableCheck("TADebug") && GlobalVariableGet("TADebug") == 1.0;
      if (GlobalVariableCheck("TASlowTime")) vgi_816 = MathMax(GlobalVariableGet("TASlowTime"), 500);
      if (vgi_796) f0_94();
      VerifyAutoCloseAll();
      ld_0 = vgd_748;
      vgd_748 = f0_53(Symbol(), RiskPercent, LOT, StopLoss);
      if (vgd_748 != ld_0) {
         SettextBtn(0, StringConcatenate("Buy ", GetDoubleToStr(vgd_748, 2)));
         SettextBtn(1, StringConcatenate("Sell ", GetDoubleToStr(vgd_748, 2)));
      }
      if (vg_bool_776) f0_142(1);
      if (UseTrendLines || UsePendingLines || UseChannels) f0_116();
      if ((vgi_796 && vg_bool_776) || TimeCurrent() - vg_dttm_800 > 30) {
         if (ShowPivotPoints) ExibePivotPoints();
         ExibeProfitPanel();
         ExibeInformacoesPainel();
         vg_dttm_800 = TimeCurrent();
      }
      f0_83();
      if (vgi_1340) f0_126();
      f0_110();
      if (ShowNextCandleTime) f0_154();
      if (ShowControlPanel) f0_144();
      vgi_768 = GetTickCount();
      vgi_764++;
      if (vg_bool_812) Comment("Full tick count: ", vgi_764, ", Last Full Work time: ", GetTickCount() - vgi_756, " ms  - Real tick:", vg_bool_776, ", HasFocus: ", vgi_796);
   }
   vgi_756 = GetTickCount() - vgi_756;
}

// BCAE19BFF0BBF16DE57434082605B5CF
string GetTypeLicence() {
   if (vgi_1596) return ("Trial");
   switch (2) {
   case 1:
      return ("");
   case 2:
      return ("Pro");
   case 3:
      return ("Ultra");
   }
   return ("");
}

// F787E1ED503D2D47A476A44E6CA26384
string f0_169(int ai_0) {
   switch (ai_0) {
   case 0:
      return ("Buy");
   case 1:
      return ("Sell");
   case 2:
      return ("Buylimit");
   case 3:
      return ("Selllimit");
   case 4:
      return ("Buystop");
   case 5:
      return ("Sellstop");
   }
   return ("Unknow");
}

// 435B996F3BB934BC9504AD03D905BC90
int OpenHedgePosition(int a_ticket_0 = -1) {
   double ld_4;
   int li_12;
   int li_16;
   if (a_ticket_0 == -1) a_ticket_0 = GetLastOpenTicket(-1, MagicNumber);
   if (a_ticket_0 != -1) {
      SetLog("Open hedge position for #" + a_ticket_0);
      if (OrderTicket() != a_ticket_0) OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES);
      ld_4 = GetLotsforTicket(a_ticket_0);
      li_12 = 1 - OrderType();
      li_16 = OpenOrderNow(li_12, ld_4);
      return (li_16);
   }
   return (-1);
}

// 89FF7E2FBE79EDBFF74ECA22412DA098
void OpenGridfoTicket(int a_ticket_0) {
   double order_lots_4;
   double cmd_12;
   double ticket_20;
   double ld_28;
   double order_lots_36;
   double ld_44;
   int li_52;
   double ld_56;
   double ld_64;
   int ticket_72;
   double ld_76;
   double ld_84;
   double ld_92;
   double ld_104;
   double ld_112;
   if (OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES) && GridStep > 0.0 && GridLotMultiplier > 0.0 && OrderCloseTime() == 0) {
      order_lots_4 = OrderLots();
      cmd_12 = OrderType();
      ticket_20 = ValidTicket(a_ticket_0);
      if (OrderSelect(ticket_20, SELECT_BY_TICKET, MODE_TRADES)) {
         ld_28 = NormalizeDoubleDigits(OrderOpenPrice());
         order_lots_36 = OrderLots();
         ld_44 = f0_56(vg_NameLevelGrid, ticket_20);
         li_52 = ld_44 + 1.0;
         if ((cmd_12 == 0.0 && NormalizeDoubleDigits(Ask) < NormalizeDoubleDigits(ld_28 - f0_7(GridStep))) || (cmd_12 == 1.0 && NormalizeDoubleDigits(Bid) > NormalizeDoubleDigits(ld_28 + f0_7(GridStep))) && li_52 < GridMaxOrderCount ||
            GridMaxOrderCount == 0) {
            ld_56 = f0_149(order_lots_4, li_52);
            if (ld_56 > 0.0) {
               SetLog(StringConcatenate("Open new grid order! Parent ticket: ", a_ticket_0, ", LOT: ", ld_56, ", Level: ", li_52, ", Price: ", Bid, ", Distance: ", MathAbs(Ask - ld_28)));
               ld_64 = GetOrderOpenPrice(a_ticket_0);
               if (OpenOrder(cmd_12, ld_56, 0, 0, MagicNumber)) {
                  ticket_72 = vg_ticket_968;
                  f0_172(vg_NamGridParent, a_ticket_0, ticket_72);
                  f0_172(vg_NameLevelGrid, li_52, ticket_72);
                  if (GridReCalculateSLTP) {
                     ld_76 = f0_96(a_ticket_0);
                     ld_84 = ld_76 - ld_64;
                     SetLog(StringConcatenate("Recalculate SL/TP/BE values! Old avg. price: ", ld_64, ", new avg. price: ", ld_76, ", Difference: ", ld_84));
                     if (ld_84 != 0.0) {
                        ld_92 = f0_31(vg_NameLineSL, a_ticket_0);
                        if (ld_92 > 0.0 && ld_92 != EMPTY_VALUE) CreateHLineForTicket(vg_NameLineSL, ld_92 + ld_84, a_ticket_0);
                        ld_92 = f0_31(vg_NameLineTP, a_ticket_0);
                        if (ld_92 > 0.0 && ld_92 != EMPTY_VALUE) CreateHLineForTicket(vg_NameLineTP, ld_92 + ld_84, a_ticket_0);
                        ld_92 = f0_31(vg_NameBreakEven, a_ticket_0);
                        if (ld_92 != EMPTY_VALUE) CreateHLineForTicket(vg_NameBreakEven, ld_92 + ld_84, a_ticket_0, BreakEvenColor);
                        for (int li_100 = 1; li_100 <= 3; li_100++) {
                           ld_92 = f0_31(vgs_1044 + GetDoubleToStr(li_100), a_ticket_0);
                           if (ld_92 != EMPTY_VALUE) CreateHLineForTicket(vgs_1044 + GetDoubleToStr(li_100), ld_92 + ld_84, a_ticket_0, PartialCloseColor);
                        }
                     }
                  }
               }
            } else SetLog(StringConcatenate("Invalid new grid order lot: ", ld_56));
         }
         if (!StealthMode) {
            if (OrderSelect(a_ticket_0, SELECT_BY_TICKET, MODE_TRADES)) {
               ld_104 = NormalizeDoubleDigits(OrderStopLoss());
               ld_112 = NormalizeDoubleDigits(OrderTakeProfit());
               for (int pos_120 = OrdersTotal() - 1; pos_120 >= 0; pos_120--) {
                  if (OrderSelect(pos_120, SELECT_BY_POS, MODE_TRADES)) {
                     if (OrderSymbol() == Symbol()) {
                        if (OrderMagicNumber() == MagicNumber) {
                           if (f0_56(vg_NamGridParent, OrderTicket()) == a_ticket_0)
                              if (NormalizeDoubleDigits(OrderStopLoss()) != ld_104 || NormalizeDoubleDigits(OrderTakeProfit()) != ld_112) ModifyTicketOrder(OrderTicket(), 0, 0, ld_104, ld_112);
                        }
                     }
                  }
               }
            }
         }
      }
   }
}


// C7B7E78A33FDB681AE876AC23EA003AB
int VerifyLicence(string as_0) {
   int lia_8[];
   int lia_12[5];
   int li_16;
   if (vgi_836 == FALSE) ValidLicence();
   if (vgi_836 != FALSE) {
      ArrayResize(lia_8, StringLen(as_0));
      f0_141(lia_8, ArraySize(lia_8) << 18, as_0);
      f0_105(lia_12, 131072, 2);
      f0_105(lia_12, 131074, f0_51(vgi_832));
      f0_105(lia_12, 262148, /*inet_addr(vg_IpServer)*/vg_IpServer);
      li_16 = 1;//sendto(vgi_836, lia_8, ArraySize(lia_8), 0, lia_12, ArraySize(lia_12) * 4);
      if (li_16 == -1) {
         Print("Server: UDP send() failed: error "/* + WSAGetLastError()*/);
       
         vgi_836 = FALSE;
      }
   }
   return (vgi_836);
}

// DF0D5A17B34CAF650F5CADD3F2327AD8
int ValidLicence() {
   int lia_4[100];
   int lia_12[1];
   int li_nsd_8 = 1;
   if (vgi_832 == 0) return (0);
   int li_0 = 0;//WSAStartup(514, lia_4);
   if (li_0 != 0) {
      Print("Server: WSAStartup() failed with error " + li_0);
      return (0);
   }
   vgi_836 = TRUE;//socket(2, 2, 17);
   if (vgi_836 == FALSE) {
      Print("Server: socket() failed with error "/* + WSAGetLastError()*/);
//      WSACleanup();
      return (0);
   }
   lia_12[0] = f0_51(1);
   li_0 = 1;//setsockopt(vgi_836, 65535, 4, lia_12, ArraySize(lia_12) * 4);
   if (li_0 == -1) Print("Server: setsockopt() failed with error "/* + WSAGetLastError()*/);
   return (vgi_836);
}


// F3F4879EA2CD57F6262AF6EBF1AA6BED
string GetPathLog() {
   if (vg_bool_852) return (StringConcatenate("logs\\", TimeToStr(TimeLocal(), TIME_DATE), " - ", WindowExpertName(), " [", Symbol(), "].log"));
   return (StringConcatenate("logs\\", WindowExpertName(), " [", Symbol(), "].log"));
}

// DF360FB723F3206D897C43B4EE63EC9B
void GravaInformacoesLog() {
   int li_0 = vgi_848;
   vgi_848 = FALSE;
   SetLog("###########################################################################", "SET   ", 8);
   SetLog("Expert:                        " + vg_InfoExecuteEA, "SET   ", 8);
   SetLog("Symbol:                        " + Symbol(), "SET   ", 8);
   SetLog("Period:                        " + GetStrPeriodo(), "SET   ", 8);
   SetLog("Account Company:               " + AccountCompany(), "SET   ", 8);
   SetLog("Account Currency:              " + AccountCurrency(), "SET   ", 8);
   SetLog("Account Leverage:              " + AccountLeverage(), "SET   ", 8);
   SetLog("Account Server:                " + AccountServer(), "SET   ", 8);
   SetLog("Expert Enabled:                " + GetStrBool(IsExpertEnabled()), "SET   ", 8);
   SetLog("Trade Allowed                  " + GetStrBool(IsTradeAllowed()), "SET   ", 8);
   SetLog("Dll Allowed                    " + GetStrBool(IsDllsAllowed()), "SET   ", 8);
   SetLog("Demo:                          " + GetStrBool(IsDemo()), "SET   ", 8);
   SetLog("Testing:                       " + GetStrBool(IsTesting()), "SET   ", 8);
   SetLog(" ", "SET   ", 8);
   SetLog("Digits:                        " + Digits, "SET   ", 8);
   SetLog("Spread:                        " + DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD), 1), "SET   ", 8);
   SetLog("Point:                         " + MarketInfo(Symbol(), MODE_POINT), "SET   ", 8);
   SetLog("Stop level:                    " + DoubleToStr(MarketInfo(Symbol(), MODE_STOPLEVEL), 1), "SET   ", 8);
   SetLog("Lot size:                      " + DoubleToStr(MarketInfo(Symbol(), MODE_LOTSIZE), 0), "SET   ", 8);
   SetLog("Minimum LOT:                   " + DoubleToStr(MarketInfo(Symbol(), MODE_MINLOT), 5), "SET   ", 8);
   SetLog("Maximum LOT:                   " + DoubleToStr(MarketInfo(Symbol(), MODE_MAXLOT), 0), "SET   ", 8);
   SetLog("Lot step:                      " + MarketInfo(Symbol(), MODE_LOTSTEP), "SET   ", 8);
   SetLog("Lot cost (init):               " + DoubleToStr(MarketInfo(Symbol(), MODE_MARGININIT), 2), "SET   ", 8);
   SetLog("Lot cost (req):                " + DoubleToStr(MarketInfo(Symbol(), MODE_MARGINREQUIRED), 2), "SET   ", 8);
   SetLog("Lot cost (maintenance):        " + DoubleToStr(MarketInfo(Symbol(), MODE_MARGINMAINTENANCE), 2), "SET   ", 8);
   SetLog("Lot cost (hedged):             " + DoubleToStr(MarketInfo(Symbol(), MODE_MARGINHEDGED), 2), "SET   ", 8);
   SetLog("Tick value:                    " + MarketInfo(Symbol(), MODE_TICKVALUE), "SET   ", 8);
   SetLog("Tick size:                     " + MarketInfo(Symbol(), MODE_TICKSIZE), "SET   ", 8);
   SetLog("###########################################################################", "SET   ", 8);
   SetLog("Log level:                     " + GetTipoLog(vgi_840), "SET   ", 8);
   vgi_848 = li_0;
}

// EB053A21ADF8A5FF57B4BBC45DE07971
string GetStrBool(bool ai_0) {
   if (ai_0) return ("True");
   return ("False");
}

// 9A6BBDE4218D042CE08249A57FE5AAAF
string GetStrTypeOrder(int ai_0) {
   switch (ai_0) {
   case 0:
      return ("BUY");
   case 1:
      return ("SELL");
   case 2:
      return ("BUYLIMIT");
   case 3:
      return ("SELLLIMIT");
   case 4:
      return ("BUYSTOP");
   case 5:
      return ("SELLSTOP");
   }
   return ("Unknow");
}

// C32C9AC1883956DF9E4F05F9C561E3D8
string GetStrPeriodo() {
   switch (Period()) {
   case PERIOD_M1:
      return ("M1");
   case PERIOD_M5:
      return ("M5");
   case PERIOD_M15:
      return ("M15");
   case PERIOD_M30:
      return ("M30");
   case PERIOD_H1:
      return ("H1");
   case PERIOD_H4:
      return ("H4");
   case PERIOD_D1:
      return ("D1");
   case PERIOD_W1:
      return ("W1");
   case PERIOD_MN1:
      return ("MN1");
   }
   return ("Invalid");
}

// 98E15D86F9578A03D816241A92703D41
string GetTipoLog(int ai_0) {
   switch (ai_0) {
   case 1:
      return ("ERROR  ");
   case 2:
      return ("WARNING");
   case 4:
      return ("SUCCESS");
   case 8:
      return ("INFO   ");
   case 16:
      return ("TRACE  ");
   }
   return ("DEBUG  ");
}

// CE0BE71E33226E4C1DB2BCEA5959F16B
void SetLog(string pMensagem, string as_8 = "NORMAL", int pTipolog = 8) {
   string name_20;
   string ls_28;
   int file_36;
   if (pTipolog <= vgi_840 && vg_bool_844) {
      name_20 = GetPathLog();
      if (name_20 != vg_name_860 && IsTesting()) {
         FileDelete(name_20);
         vg_name_860 = name_20;
      }
      ls_28 = "; ";
      file_36 = FileOpen(name_20, FILE_CSV|FILE_WRITE|FILE_READ, ';');
      FileSeek(file_36, 0, SEEK_END);
      FileWrite(file_36, TimeToStr(TimeLocal(), TIME_DATE), " " + TimeToStr(TimeLocal(), TIME_SECONDS), " " + as_8, " " + GetTipoLog(pTipolog), " " + pMensagem);
      FileClose(file_36);
      if (vgi_848) Print(pMensagem);
      if (vg_bool_856) {
         VerifyLicence(StringConcatenate("L", ls_28, vg_InfoExecuteEA, ls_28, TimeToStr(TimeLocal(), TIME_DATE), ls_28, TimeToStr(TimeLocal(), TIME_SECONDS), ls_28, as_8, ls_28,
            GetTipoLog(pTipolog), ls_28, pMensagem));
      }
   }
}



// 1E2D3E4519DB325889FC8F38EF6C766B
void SetErrorLog(string as_0, string as_8 = "NORMAL") {
   SetLog(as_0, as_8, 1);
}

// E23D486C78092A2B54111904104FC071
void SetErrorLogAlert(string as_0, string as_8 = "NORMAL") {
   SetLog(as_0, as_8, 1);
   Alert(as_0);
}

// A8AF7782502AD176154B856C82283D97
void SetWarningLog(string as_0, string as_8 = "NORMAL") {
   SetLog(as_0, as_8, 2);
}

// 84688D9507D6EDD699E41363EC5F400C
void SetTraceLog(string as_0, string as_8 = "NORMAL") {
   SetLog(as_0, as_8, 16);
}

// 78E76497B869281F4747A3FC3558A71B
void SetInfoLog(string as_0, string as_8 = "NORMAL") {
   SetLog(as_0, as_8, 4);
}

// 059080B1E7C854F6FFA0BD5AF5E562B5
void f0_2(string a_str_concat_0 = "") {
   if (a_str_concat_0 != "") vg_InfoExecuteEA = a_str_concat_0;
   else vg_InfoExecuteEA = StringConcatenate(WindowExpertName(), " [", Symbol(), "] - ", AccountNumber());
   string ls_8 = "; ";
   string ls_16 = "REAL";
   if (IsDemo()) ls_16 = "DEMO";
   if (IsTesting()) ls_16 = "TEST";
   if (vg_bool_844 && vg_bool_856) VerifyLicence(StringConcatenate("I", ls_8, vg_InfoExecuteEA, ls_8, TimeToStr(TimeLocal(), TIME_DATE), ls_8, TimeToStr(TimeLocal(), TIME_SECONDS), ls_8, ls_16));
}

// DA69CBAFF4D38B87377667EEC549DE5A
string GetError(int ai_0) {
   string ls_ret_4;
   switch (ai_0) {
   case 0:
   case 1:
      ls_ret_4 = "no error";
      break;
   case 2:
      ls_ret_4 = "common error";
      break;
   case 3:
      ls_ret_4 = "invalid trade parameters";
      break;
   case 4:
      ls_ret_4 = "trade server is busy";
      break;
   case 5:
      ls_ret_4 = "old version of the client terminal";
      break;
   case 6:
      ls_ret_4 = "no connection with trade server";
      break;
   case 7:
      ls_ret_4 = "not enough rights";
      break;
   case 8:
      ls_ret_4 = "too frequent requests";
      break;
   case 9:
      ls_ret_4 = "malfunctional trade operation (never returned error)";
      break;
   case 64:
      ls_ret_4 = "account disabled";
      break;
   case 65:
      ls_ret_4 = "invalid account";
      break;
   case 128:
      ls_ret_4 = "trade timeout";
      break;
   case 129:
      ls_ret_4 = "invalid price";
      break;
   case 130:
      ls_ret_4 = "invalid stops";
      break;
   case 131:
      ls_ret_4 = "invalid trade volume";
      break;
   case 132:
      ls_ret_4 = "market is closed";
      break;
   case 133:
      ls_ret_4 = "trade is disabled";
      break;
   case 134:
      ls_ret_4 = "not enough money";
      break;
   case 135:
      ls_ret_4 = "price changed";
      break;
   case 136:
      ls_ret_4 = "off quotes";
      break;
   case 137:
      ls_ret_4 = "broker is busy (never returned error)";
      break;
   case 138:
      ls_ret_4 = "requote";
      break;
   case 139:
      ls_ret_4 = "order is locked";
      break;
   case 140:
      ls_ret_4 = "long positions only allowed";
      break;
   case 141:
      ls_ret_4 = "too many requests";
      break;
   case 145:
      ls_ret_4 = "modification denied because order too close to market";
      break;
   case 146:
      ls_ret_4 = "trade context is busy";
      break;
   case 147:
      ls_ret_4 = "expirations are denied by broker";
      break;
   case 148:
      ls_ret_4 = "amount of open and pending orders has reached the limit";
      break;
   case 149:
      ls_ret_4 = "hedging is prohibited";
      break;
   case 150:
      ls_ret_4 = "prohibited by FIFO rules";
      break;
   case 4000:
      ls_ret_4 = "no error (never generated code)";
      break;
   case 4001:
      ls_ret_4 = "wrong function pointer";
      break;
   case 4002:
      ls_ret_4 = "array index is out of range";
      break;
   case 4003:
      ls_ret_4 = "no memory for function call stack";
      break;
   case 4004:
      ls_ret_4 = "recursive stack overflow";
      break;
   case 4005:
      ls_ret_4 = "not enough stack for parameter";
      break;
   case 4006:
      ls_ret_4 = "no memory for parameter string";
      break;
   case 4007:
      ls_ret_4 = "no memory for temp string";
      break;
   case 4008:
      ls_ret_4 = "not initialized string";
      break;
   case 4009:
      ls_ret_4 = "not initialized string in array";
      break;
   case 4010:
      ls_ret_4 = "no memory for array\' string";
      break;
   case 4011:
      ls_ret_4 = "too long string";
      break;
   case 4012:
      ls_ret_4 = "remainder from zero divide";
      break;
   case 4013:
      ls_ret_4 = "zero divide";
      break;
   case 4014:
      ls_ret_4 = "unknown command";
      break;
   case 4015:
      ls_ret_4 = "wrong jump (never generated error)";
      break;
   case 4016:
      ls_ret_4 = "not initialized array";
      break;
   case 4017:
      ls_ret_4 = "dll calls are not allowed";
      break;
   case 4018:
      ls_ret_4 = "cannot load library";
      break;
   case 4019:
      ls_ret_4 = "cannot call function";
      break;
   case 4020:
      ls_ret_4 = "expert function calls are not allowed";
      break;
   case 4021:
      ls_ret_4 = "not enough memory for temp string returned from function";
      break;
   case 4022:
      ls_ret_4 = "system is busy (never generated error)";
      break;
   case 4050:
      ls_ret_4 = "invalid function parameters count";
      break;
   case 4051:
      ls_ret_4 = "invalid function parameter value";
      break;
   case 4052:
      ls_ret_4 = "string function internal error";
      break;
   case 4053:
      ls_ret_4 = "some array error";
      break;
   case 4054:
      ls_ret_4 = "incorrect series array using";
      break;
   case 4055:
      ls_ret_4 = "custom indicator error";
      break;
   case 4056:
      ls_ret_4 = "arrays are incompatible";
      break;
   case 4057:
      ls_ret_4 = "global variables processing error";
      break;
   case 4058:
      ls_ret_4 = "global variable not found";
      break;
   case 4059:
      ls_ret_4 = "function is not allowed in testing mode";
      break;
   case 4060:
      ls_ret_4 = "function is not confirmed";
      break;
   case 4061:
      ls_ret_4 = "send mail error";
      break;
   case 4062:
      ls_ret_4 = "string parameter expected";
      break;
   case 4063:
      ls_ret_4 = "integer parameter expected";
      break;
   case 4064:
      ls_ret_4 = "double parameter expected";
      break;
   case 4065:
      ls_ret_4 = "array as parameter expected";
      break;
   case 4066:
      ls_ret_4 = "requested history data in update state";
      break;
   case 4099:
      ls_ret_4 = "end of file";
      break;
   case 4100:
      ls_ret_4 = "some file error";
      break;
   case 4101:
      ls_ret_4 = "wrong file name";
      break;
   case 4102:
      ls_ret_4 = "too many opened files";
      break;
   case 4103:
      ls_ret_4 = "cannot open file";
      break;
   case 4104:
      ls_ret_4 = "incompatible access to a file";
      break;
   case 4105:
      ls_ret_4 = "no order selected";
      break;
   case 4106:
      ls_ret_4 = "unknown symbol";
      break;
   case 4107:
      ls_ret_4 = "invalid price parameter for trade function";
      break;
   case 4108:
      ls_ret_4 = "invalid ticket";
      break;
   case 4109:
      ls_ret_4 = "trade is not allowed in the expert properties";
      break;
   case 4110:
      ls_ret_4 = "longs are not allowed in the expert properties";
      break;
   case 4111:
      ls_ret_4 = "shorts are not allowed in the expert properties";
      break;
   case 4200:
      ls_ret_4 = "object is already exist";
      break;
   case 4201:
      ls_ret_4 = "unknown object property";
      break;
   case 4202:
      ls_ret_4 = "object is not exist";
      break;
   case 4203:
      ls_ret_4 = "unknown object type";
      break;
   case 4204:
      ls_ret_4 = "no object name";
      break;
   case 4205:
      ls_ret_4 = "object coordinates error";
      break;
   case 4206:
      ls_ret_4 = "no specified subwindow";
      break;
   default:
      ls_ret_4 = "unknown error";
   }
   return (ls_ret_4);
}