/*
   Generated by EX4-TO-MQ4 decompiler V4.0.225.1g []
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/
#property copyright "ForexMobil"
#property link      ""

string gs_76 = "ForexMobil";
int g_magic_84 = 1234;
bool gi_88 = FALSE;
bool gi_92 = FALSE;
bool gi_96 = FALSE;
bool gi_100 = FALSE;
string gs_unused_104 = "Money Management";
double gd_112 = 0.1;
bool gi_120 = TRUE;
extern double risk = 1.0;
extern double minlot = 0.01;
extern double maxlot = 100.0;
int gi_148 = 2;
bool gi_152 = FALSE;
int gi_156 = 0;
double gd_160 = 2.0;
double gd_168 = 50.0;
bool gi_176 = FALSE;
int gi_180 = 0;
double gd_184 = 20.0;
double gd_192 = 1.0;
string gs_unused_200 = "Profit Management";
bool gi_208 = FALSE;
double gd_212 = 0.1;
double gd_220 = 100.0;
bool gi_228 = FALSE;
double gd_232 = 10.0;
double gd_240 = 10000.0;
bool gi_248 = FALSE;
double gd_252 = 5.0;
string gs_unused_260 = "Order Management";
bool gi_268 = TRUE;
bool gi_272 = TRUE;
bool gi_276 = FALSE;
bool gi_280 = FALSE;
bool gi_284 = FALSE;
int gi_288 = 20;
bool gi_292 = TRUE;
bool gi_296 = TRUE;
int gi_300 = 0;
bool gi_304 = FALSE;
bool gi_308 = FALSE;
bool gi_312 = TRUE;
int gi_316 = 100;
int gi_320 = 1;
bool gi_324 = FALSE;
bool gi_328 = FALSE;
extern double stoploss = 6.0;
extern double takeprofit = 0.0;
double gd_348 = 5.0;
double gd_unused_356 = 0.25;
double gd_364 = 20.0;
double gd_372 = 0.5;
extern double trailingstart = 6.0;
extern double trailingstop = 6.0;
double gd_396 = 0.0;
extern double trailingstep = 1.0;
double gd_412 = 0.0;
double gd_420 = 0.0;
int gi_428 = 1;
double gd_432 = 0.0;
double gd_440 = 0.0;
string gs_unused_448 = "Advanced Order Management";
bool gi_456 = FALSE;
bool gi_460 = FALSE;
bool gi_464 = FALSE;
bool gi_468 = TRUE;
bool gi_472 = FALSE;
double gd_476 = 0.0;
double gd_484 = 0.0;
bool gi_492 = FALSE;
bool gi_496 = TRUE;
int gi_500 = 0;
int gi_504 = 0;
bool gi_508 = FALSE;
int gi_512 = 4;
int gi_516 = 60;
double gd_520 = 0.0;
int gi_528 = 0;
double gd_532 = 0.0;
int gi_540 = 15;
bool gi_544 = FALSE;
int g_timeframe_548 = PERIOD_H1;
int g_period_552 = 14;
double gd_556 = 0.0;
double gd_564 = 0.0;
double gd_572 = 0.0;
double gd_580 = 0.0;
double gd_588 = 0.0;
double gd_596 = 0.0;
bool gi_604 = FALSE;
int g_timeframe_608 = 0;
int gi_612 = 7;
bool gi_616 = FALSE;
int g_timeframe_620 = 0;
int gi_624 = 15;
int gi_628 = 3;
int gi_632 = 0;
string gs_unused_636 = "Entry Logics";
double gd_644 = 0.0;
double gd_652 = 1.0;
bool gi_660 = TRUE;
extern int movements1 = 5;
extern double seconds1 = 3.0;
bool gi_676 = TRUE;
extern int movements2 = 5;
extern double seconds2 = 3.0;
int gi_692 = 1;
string gs_unused_696 = "Time Filter";
bool gi_704 = FALSE;
int gi_708 = 2;
int gi_712 = 1;
bool gi_716 = FALSE;
int gi_720 = 12;
int gi_724 = 0;
bool gi_728 = FALSE;
int gi_732 = 7;
int gi_736 = 0;
int gi_740 = 21;
int gi_744 = 0;
bool gi_748 = TRUE;
bool gi_752 = FALSE;
int gi_756 = 12;
int gi_760 = 0;
bool gi_764 = FALSE;
int gi_768 = 120;
int gi_772 = 14;
int gi_776 = 30;
int gi_780 = 120;
string gs_unused_784 = "Time Outs and Targets";
bool gi_792 = FALSE;
int gi_796 = 30;
int gi_800 = 7;
int gi_804 = 70;
int gi_808 = 5;
int gi_812 = 95;
int gi_816 = 4;
int gi_820 = 120;
int gi_824 = 2;
int gi_828 = 150;
int gi_832 = -5;
int gi_836 = 180;
int gi_840 = -8;
int gi_844 = 210;
int gi_848 = -15;
int g_str2time_852;
int g_str2time_856;
int g_str2time_860;
int g_str2time_864;
int g_datetime_868;
int g_str2time_872;
int g_datetime_876;
int gi_880;
int gi_884;
int gi_888;
int gi_892;
int gi_896;
int gi_900;
int gi_904;
int g_datetime_908;
int gi_912;
int gi_916;
int g_pos_920;
int g_bars_924 = -1;
int g_count_928;
int g_count_932;
int g_count_936;
int gi_940 = 100;
int gi_944;
int gi_948;
int gi_952;
int g_count_956;
bool gi_960;
int gi_964 = 0;
bool gi_968;
int gi_972;
int gi_976;
int gi_980;
int gi_984;
int gi_988;
int g_count_992;
int gi_996;
int gi_1000;
int gi_1004;
int gi_1008;
int gi_1012;
int gi_1016;
int gi_1020;
int gi_1024;
int gi_1028;
int gi_1032;
int gi_1036;
string gs_1040;
string gs_1048;
string gs_1056;
string gs_1064;
string gs_1072;
string gs_1080;
string gs_1088;
string gs_1096;
string gs_1104;
string gs_1112;
double g_price_1120;
double g_price_1128;
double gd_1136;
double gd_1144;
double g_ord_lots_1152;
double g_ord_profit_1160;
double gd_1168;
double gda_1176[14];
double gda_1180[14];
double gd_1184;
double gd_1192;
double gd_1200;
double gd_1208;
double g_ord_open_price_1216;
double g_ord_open_price_1224;
double gd_1232;
double gd_1240;
double gd_1248;
double gd_1256 = 0.0;
double gd_1264;
bool gi_1272 = FALSE;
bool gi_1276 = TRUE;
bool gi_1280 = TRUE;
double gd_1284;
double gd_1292;
double gd_1300;
double gd_1308;
int g_count_1316;
int g_count_1320;
int g_datetime_1324;
int g_datetime_1328;
bool gi_1332;
bool gi_1336;
double gd_1340;
double gd_1348;

int init() {
   if (gi_704) {
      gda_1180[13] = D'28.03.2012 09:00';
      gda_1176[13] = D'31.10.2012 10:00';
      gda_1180[12] = D'29.03.2011 09:00';
      gda_1176[12] = D'25.10.2011 10:00';
      gda_1180[11] = D'30.03.2010 12:00';
      gda_1176[11] = D'26.10.2010 13:00';
      gda_1180[10] = D'29.03.2009 12:00';
      gda_1176[10] = D'25.10.2009 13:00';
      gda_1180[9] = D'30.03.2008 12:00';
      gda_1176[9] = D'26.10.2008 13:00';
      gda_1180[8] = D'25.03.2007 12:00';
      gda_1176[8] = D'28.10.2007 13:00';
      gda_1180[7] = D'26.03.2006 11:00';
      gda_1176[7] = D'29.10.2006 12:00';
      gda_1180[6] = D'27.03.2005 11:00';
      gda_1176[6] = D'30.10.2005 12:00';
      gda_1180[5] = D'28.03.2004 11:00';
      gda_1176[5] = D'31.10.2004 12:00';
      gda_1180[4] = D'30.03.2003 11:00';
      gda_1176[4] = D'26.10.2003 12:00';
      gda_1180[3] = D'31.03.2002 11:00';
      gda_1176[3] = D'27.10.2002 12:00';
      gda_1180[2] = D'25.03.2001 11:00';
      gda_1176[2] = D'28.10.2001 12:00';
      gda_1180[1] = D'26.03.2000 09:00';
      gda_1176[1] = D'29.10.2000 10:00';
      gda_1180[0] = 922586400;
      gda_1176[0] = 941338800;
   }
   if (gi_208) {
      gd_1200 = AccountBalance() * gd_212 / 100.0;
      gd_1208 = (-1.0 * AccountBalance()) * gd_220 / 100.0;
   }
   if (Digits == 3 || Digits == 5) {
      gd_1284 = 10.0 * Point;
      gd_1300 = 10;
      if (gd_644 == 0.0) {
         gd_1308 = Digits - 1;
         gd_1292 = gd_1284;
      }
      if (gd_644 == 1.0) {
         gd_1308 = Digits;
         gd_1292 = Point;
      }
   } else {
      gd_1284 = Point;
      gd_1300 = 1;
      if (gd_644 == 0.0 || gd_644 == 1.0) {
         gd_1308 = Digits;
         gd_1292 = gd_1284;
      }
   }
   if (gd_476 > 0.0) {
      stoploss = gd_476;
      takeprofit = gd_476;
   }
   if (gi_120) {
      if (minlot >= 1.0) gi_952 = 100000;
      if (minlot < 1.0) gi_952 = 10000;
      if (minlot < 0.1) gi_952 = 1000;
   }
   return (0);
}

int start() {
   double l_iatr_0;
   double l_ihigh_8;
   double l_ilow_16;
   int l_pos_24;
   int l_pos_28;
   int li_32;
   bool li_36 = TRUE;
   if (gi_472)
      if (gi_880 == Time[0]) li_36 = FALSE;
   gi_1016 = count(OP_BUY);
   gi_1020 = count(OP_SELL);
   gi_1012 = gi_1016 + gi_1020;
   if (gi_1272) {
      gi_1024 = count(OP_BUYSTOP);
      gi_1028 = count(OP_SELLSTOP);
      gi_1032 = count(OP_BUYLIMIT);
      gi_1036 = count(OP_SELLLIMIT);
   }
   if (gi_1272) {
      if (gi_1012 + gi_1024 + gi_1028 + gi_1032 + gi_1036 > 0) {
         close(3);
         xdelete(6);
      }
   }
   if (gi_1272)
      if (gi_1012 + gi_1024 + gi_1028 + gi_1032 + gi_1036 == 0) gi_1272 = FALSE;
   if (gi_1272) return (0);
   if (gd_412 > 0.0 && li_36) movebreakeven(gd_412, gd_420);
   if (trailingstop > 0.0 && li_36) movetrailingstop(trailingstart, trailingstop);
   if (gd_484 > 0.0 && li_36) movetrailingstop(gd_484, gd_484);
   if (gd_396 > 0.0 && li_36) movetrailingprofit(trailingstart, gd_396);
   if (gi_208 || gi_248 || gi_964 == TRUE) {
      gi_944 = 0;
      gi_948 = 0;
   }
   if (gi_228) {
      gd_1240 = 0;
      gd_1248 = 0;
   }
   g_ord_open_price_1216 = 0;
   g_ord_open_price_1224 = 0;
   if (OrdersTotal() > 0) {
      for (g_pos_920 = 0; g_pos_920 <= OrdersTotal(); g_pos_920++) {
         OrderSelect(g_pos_920, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84 && OrderCloseTime() == 0) {
            if (OrderType() == OP_BUY) {
               g_datetime_868 = OrderOpenTime();
               if (gi_176) g_ord_open_price_1216 = OrderOpenPrice();
               if (gi_208 || gi_248 || gi_964 == TRUE) gi_944 = gi_944 + OrderProfit();
               if (gi_228) gd_1240 = gd_1240 + (OrderClosePrice() - OrderOpenPrice()) / gd_1284 - MarketInfo(Symbol(), MODE_SPREAD);
            }
            if (OrderType() == OP_SELL) {
               g_datetime_876 = OrderOpenTime();
               if (gi_176) g_ord_open_price_1224 = OrderOpenPrice();
               if (gi_208 || gi_248 || gi_964 == TRUE) gi_948 = gi_948 + OrderProfit();
               if (gi_228) gd_1248 = gd_1248 + (OrderOpenPrice() - OrderClosePrice()) / gd_1284 - MarketInfo(Symbol(), MODE_SPREAD);
            }
         }
      }
   }
   if (gi_208 || gi_248 || gi_964 == TRUE) gd_1192 = gi_944 + gi_948;
   if (gi_228) gd_1184 = gd_1240 + gd_1248;
   if (gi_208) {
      if ((gi_120 && gd_1192 >= AccountBalance() * gd_212 / 100.0) || (gi_120 == FALSE && gd_1192 >= gd_1200) || (gi_120 && gd_1192 <= (-1.0 * AccountBalance()) * gd_220 / 100.0) ||
         (gi_120 == FALSE && gd_1192 <= gd_1208)) gi_1272 = TRUE;
   }
   if (gi_228)
      if (gd_1184 >= gd_232 || gd_1184 <= (-1.0 * gd_240)) gi_1272 = TRUE;
   if (gi_248)
      if (gd_1192 >= gd_252) gi_1272 = TRUE;
   if (gi_1272) return (0);
   bool li_40 = TRUE;
   if (gi_508 && OrdersHistoryTotal() > 0) {
      g_count_956 = 0;
      gi_960 = FALSE;
      for (g_pos_920 = OrdersHistoryTotal() - 1; g_pos_920 >= 0; g_pos_920--) {
         OrderSelect(g_pos_920, SELECT_BY_POS, MODE_HISTORY);
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84) {
            if (OrderProfit() >= 0.0) gi_960 = TRUE;
            if (OrderProfit() < 0.0 && gi_960 == FALSE) g_count_956++;
         }
      }
      for (g_pos_920 = 0; g_pos_920 < OrdersHistoryTotal(); g_pos_920++) {
         OrderSelect(g_pos_920, SELECT_BY_POS, MODE_HISTORY);
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84)
            if (g_count_956 >= gi_512) g_datetime_908 = OrderCloseTime();
      }
      if (TimeCurrent() - g_datetime_908 < 60 * gi_516) li_40 = FALSE;
   }
   if (gi_320 == 1) {
      if (g_datetime_868 < Time[0]) g_count_932 = 0;
      else g_count_932 = 1;
      if (g_datetime_876 < Time[0]) g_count_936 = 0;
      else g_count_936 = 1;
   }
   if (gi_320 != 1 && g_bars_924 != Bars) {
      g_count_932 = 0;
      g_count_936 = 0;
      g_bars_924 = Bars;
   }
   if (li_36 || gi_692 == 0) {
      if (gi_544) l_iatr_0 = iATR(NULL, g_timeframe_548, g_period_552, gi_692);
      if (gi_604) {
         l_ihigh_8 = iHigh(NULL, g_timeframe_608, iHighest(NULL, 0, MODE_HIGH, gi_612, 1));
         l_ilow_16 = iLow(NULL, g_timeframe_608, iLowest(NULL, 0, MODE_LOW, gi_612, 1));
      }
      if (gi_616) {
         l_pos_24 = 0;
         for (g_pos_920 = 0; g_pos_920 <= 100; g_pos_920++) {
            if (l_pos_24 == 0) {
               if (iCustom(NULL, g_timeframe_620, "Slope Direction Line", gi_624, gi_628, gi_632, 2, g_pos_920) > iCustom(NULL, g_timeframe_620, "Slope Direction Line", gi_624, gi_628, gi_632, 2, g_pos_920 +
                  1) && iCustom(NULL, g_timeframe_620, "Slope Direction Line", gi_624, gi_628, gi_632, 2, g_pos_920 + 1) < iCustom(NULL, g_timeframe_620, "Slope Direction Line", gi_624, gi_628, gi_632, 2, g_pos_920 + 2)) l_pos_24 = g_pos_920;
            }
         }
         l_pos_28 = 0;
         for (g_pos_920 = 0; g_pos_920 <= 100; g_pos_920++) {
            if (l_pos_28 == 0) {
               if (iCustom(NULL, g_timeframe_620, "Slope Direction Line", gi_624, gi_628, gi_632, 2, g_pos_920) < iCustom(NULL, g_timeframe_620, "Slope Direction Line", gi_624, gi_628, gi_632, 2, g_pos_920 +
                  1) && iCustom(NULL, g_timeframe_620, "Slope Direction Line", gi_624, gi_628, gi_632, 2, g_pos_920 + 1) > iCustom(NULL, g_timeframe_620, "Slope Direction Line", gi_624, gi_628, gi_632, 2, g_pos_920 + 2)) l_pos_28 = g_pos_920;
            }
         }
      }
      if (gi_1012 == 0) {
         if (gd_1340 <= NormalizeDouble(Ask, gd_1308) - gd_652 * gd_1292) {
            g_count_1316++;
            gd_1340 = NormalizeDouble(Ask, gd_1308);
            if (gi_1332 == FALSE) {
               g_datetime_1324 = TimeCurrent();
               gi_1332 = TRUE;
            }
         } else {
            gd_1340 = 0;
            g_count_1316 = 0;
            gi_1332 = FALSE;
            g_datetime_1324 = 0;
         }
         if (gd_1348 >= NormalizeDouble(Ask, gd_1308) + gd_652 * gd_1292) {
            g_count_1320++;
            gd_1348 = NormalizeDouble(Ask, gd_1308);
            if (gi_1336 == FALSE) {
               g_datetime_1328 = TimeCurrent();
               gi_1336 = TRUE;
            }
         } else {
            gd_1348 = 0;
            g_count_1320 = 0;
            gi_1336 = FALSE;
            g_datetime_1328 = 0;
         }
         if (gd_1340 == 0.0) gd_1340 = NormalizeDouble(Ask, gd_1308);
         if (gd_1348 == 0.0) gd_1348 = NormalizeDouble(Ask, gd_1308);
      }
      li_32 = 0;
      if (gi_660 && g_count_1316 == movements1 || g_count_1320 == movements2 && g_count_1316 >= g_count_1320 && TimeCurrent() - g_datetime_1324 <= seconds1) li_32 = 1;
      if (gi_676 && g_count_1316 == movements1 || g_count_1320 == movements2 && g_count_1316 < g_count_1320 && TimeCurrent() - g_datetime_1328 <= seconds2) li_32 = 2;
      if (li_32 != 0) {
         gd_1340 = 0;
         gd_1348 = 0;
         g_count_1316 = 0;
         g_count_1320 = 0;
         gi_1332 = FALSE;
         gi_1336 = FALSE;
         g_datetime_1324 = 0;
         g_datetime_1328 = 0;
      }
      if (gi_544) {
         if (li_32 != 0 && gd_520 != 0.0) stoploss = l_iatr_0 / gd_1284 * gd_520 + gi_528;
         if (li_32 != 0 && gd_532 != 0.0) takeprofit = l_iatr_0 / gd_1284 * gd_532 + gi_528;
         if (li_32 != 0 && gd_556 != 0.0) trailingstart = l_iatr_0 / gd_1284 * gd_556;
         if (li_32 != 0 && gd_564 != 0.0) trailingstop = l_iatr_0 / gd_1284 * gd_564;
         if (li_32 != 0 && gd_572 != 0.0) gd_412 = l_iatr_0 / gd_1284 * gd_572;
         if (li_32 != 0 && gd_580 != 0.0) gd_420 = l_iatr_0 / gd_1284 * gd_580;
         if (li_32 != 0 && gd_588 != 0.0) gd_184 = l_iatr_0 / gd_1284 * gd_588;
         if (li_32 != 0 && gd_596 != 0.0) gi_288 = l_iatr_0 / gd_1284 * gd_596;
      }
      if (gi_604) {
         if (li_32 == 1 && gd_520 != 0.0) stoploss = (Ask - l_ilow_16) / gd_1284 * gd_520 + gi_528;
         if (li_32 == 1 && gd_532 != 0.0) takeprofit = (l_ihigh_8 - Bid) / gd_1284 * gd_532;
         if (li_32 == 2 && gd_520 != 0.0) stoploss = (l_ihigh_8 - Bid) / gd_1284 * gd_520 + gi_528;
         if (li_32 == 2 && gd_532 != 0.0) takeprofit = (Ask - l_ilow_16) / gd_1284 * gd_532;
      }
      if (gi_616) {
         if (li_32 == 1 && gd_520 != 0.0) stoploss = (Ask - Low[l_pos_24]) / gd_1284 * gd_520 + gi_528;
         if (li_32 == 1 && gd_532 != 0.0) takeprofit = (High[l_pos_28] - Bid) / gd_1284 * gd_532;
         if (li_32 == 2 && gd_520 != 0.0) stoploss = (High[l_pos_28] - Bid) / gd_1284 * gd_520 + gi_528;
         if (li_32 == 2 && gd_532 != 0.0) takeprofit = (Ask - Low[l_pos_24]) / gd_1284 * gd_532;
      }
      if (gi_544 || gi_604 || gi_616) {
         if (stoploss < gi_540) stoploss = gi_540;
         if (takeprofit < gi_540) takeprofit = gi_540;
      }
   }
   bool li_44 = TRUE;
   if (gi_704)
      if (checktime()) li_44 = FALSE;
   bool li_48 = FALSE;
   bool li_52 = FALSE;
   bool li_56 = TRUE;
   if (gi_464)
      if (iVolume(NULL, 0, 0) > 1.0) li_56 = FALSE;
   bool li_60 = TRUE;
   bool li_64 = TRUE;
   if (gi_176) {
      if (gi_1016 > 0) li_60 = FALSE;
      if (gi_1020 > 0) li_64 = FALSE;
      if (gi_1016 > 0) {
         if ((gi_180 == 0 && Ask <= g_ord_open_price_1216 - gd_184 * gd_1284 * MathPow(gd_192, gi_1016)) || (gi_180 == 1 && Ask >= g_ord_open_price_1216 + gd_184 * gd_1284 * MathPow(gd_192, gi_1016)) &&
            gi_468 || (gi_468 == FALSE && li_56)) li_48 = TRUE;
      }
      if (gi_1020 > 0) {
         if ((gi_180 == 0 && Bid >= g_ord_open_price_1224 + gd_184 * gd_1284 * MathPow(gd_192, gi_1020)) || (gi_180 == 1 && Bid <= g_ord_open_price_1224 - gd_184 * gd_1284 * MathPow(gd_192, gi_1020)) &&
            gi_468 || (gi_468 == FALSE && li_56)) li_52 = TRUE;
      }
   }
   bool li_68 = TRUE;
   bool li_72 = TRUE;
   if (gi_460) {
      if (gi_1020 > 0) li_68 = FALSE;
      if (gi_1016 > 0) li_72 = FALSE;
   }
   if (li_32 == 1 && li_60 && li_56 && li_68 && gi_1276 && li_44 && li_40) {
      if (gi_312) li_52 = TRUE;
      else li_48 = TRUE;
      if (gi_456) {
         gi_1276 = FALSE;
         gi_1280 = TRUE;
      }
   }
   if (li_32 == 2 && li_64 && li_56 && li_72 && gi_1280 && li_44 && li_40) {
      if (gi_312) li_48 = TRUE;
      else li_52 = TRUE;
      if (gi_456) {
         gi_1276 = TRUE;
         gi_1280 = FALSE;
      }
   }
   if (li_52) {
      if (gi_296) {
         if (gi_304) partialclose(0, 2);
         else close(0);
      }
   }
   if (li_48) {
      if (gi_296) {
         if (gi_304) partialclose(1, 2);
         else close(1);
      }
   }
   if (gi_328 || gi_324) {
      hideclose(0);
      hideclose(1);
   }
   if (gi_792 && li_36) {
      closetime(0);
      closetime(1);
   }
   if (gi_284) {
      if (gi_1020 > 0) {
         xdelete(OP_BUYSTOP);
         xdelete(OP_BUYLIMIT);
      }
      if (gi_1016 > 0) {
         xdelete(OP_SELLSTOP);
         xdelete(OP_SELLLIMIT);
      }
   }
   if (gi_308) {
      partialclose(0, 1);
      partialclose(1, 1);
   }
   if (gi_308) {
      partialclose2(0, 1);
      partialclose2(1, 1);
   }
   if (gi_964 == TRUE && gd_1192 >= (-1.0 * gd_1256)) {
      close(0);
      close(1);
   }
   gi_964 = FALSE;
   if (gi_152 && (!gi_176)) {
      gd_1264 = 0;
      gd_1256 = 0;
      if (OrdersHistoryTotal() > 0) {
         for (g_pos_920 = 0; g_pos_920 <= OrdersHistoryTotal(); g_pos_920++) {
            OrderSelect(g_pos_920, SELECT_BY_POS, MODE_HISTORY);
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84) {
               g_ord_profit_1160 = OrderProfit();
               g_ord_lots_1152 = OrderLots();
            }
         }
      }
      gd_1168 = 0;
      if (g_ord_profit_1160 < 0.0) {
         gi_968 = FALSE;
         if (OrdersHistoryTotal() > 0) {
            for (g_pos_920 = OrdersHistoryTotal(); g_pos_920 >= 0; g_pos_920--) {
               OrderSelect(g_pos_920, SELECT_BY_POS, MODE_HISTORY);
               if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84) {
                  if (OrderProfit() > 0.0) gi_968 = TRUE;
                  if (gi_968 == FALSE) gd_1264 += OrderProfit();
               }
            }
         }
         gd_1168 = g_ord_lots_1152 * gd_160;
         if (gi_156 == 1) gi_964 = TRUE;
         gd_1256 = NormalizeDouble(gd_1264 / 100.0 * gd_168, 2);
      } else gd_1168 = gd_112;
   }
   if (gd_440 != 0.0)
      if (Ask - Bid > gd_440 * gd_1300 * gd_1284) return (0);
   if (gi_316 < 100)
      if (gi_1012 >= gi_316) return (0);
   if (gi_120)
      if (gi_152 == FALSE || (gi_152 && (!gi_176) && g_ord_profit_1160 >= 0.0) || (gi_152 && gi_176)) gd_112 = lotsoptimized();
   gd_1136 = gd_112;
   gd_1144 = gd_112;
   if (gi_152) {
      if (gi_176) {
         gd_1136 = gd_112 * MathPow(gd_160, gi_1016);
         gd_1144 = gd_112 * MathPow(gd_160, gi_1020);
      } else {
         gd_1136 = gd_1168;
         gd_1144 = gd_1168;
      }
   }
   if (li_48 && g_count_932 < gi_320 && (!gi_100)) {
      if (gi_292) {
         xdelete(OP_SELLSTOP);
         xdelete(OP_SELLLIMIT);
      }
      gi_996 = 0;
      g_count_992 = 0;
      gi_1008 = 0;
      if (gi_276 || gi_280)
         if (gi_428 > 0) gi_1008 = TimeCurrent() + 60 * gi_428 - 5;
      if (!gi_268) {
         if (gi_272 && gi_964 == FALSE) {
            while (gi_996 <= 0 && g_count_992 < gi_940) {
               while (!IsTradeAllowed()) Sleep(5000);
               RefreshRates();
               gi_996 = open(OP_BUY, gd_1136, Ask, stoploss, takeprofit, gi_1008, Blue);
               if (gi_996 < 0) {
                  if (gi_88) Print("Error opening BUY order! ", errordescription(GetLastError()));
                  g_count_992++;
               }
            }
         }
         if (gi_272 && gi_964 == TRUE) {
            while (gi_996 <= 0 && g_count_992 < gi_940) {
               while (!IsTradeAllowed()) Sleep(5000);
               RefreshRates();
               gi_996 = open(OP_BUY, gd_1136, Ask, stoploss, 0, gi_1008, Blue);
               if (gi_996 < 0) {
                  if (gi_88) Print("Error opening BUY order! ", errordescription(GetLastError()));
                  g_count_992++;
               }
            }
         }
         if (gi_276) {
            if (gi_884 != Time[0]) {
               RefreshRates();
               gi_996 = open(OP_BUYSTOP, gd_1136, Ask + gi_288 * gd_1284, stoploss, takeprofit, gi_1008, Blue);
               gi_884 = Time[0];
               g_count_932++;
            }
         }
         if (gi_280) {
            if (gi_888 != Time[0]) {
               RefreshRates();
               gi_996 = open(OP_BUYLIMIT, gd_1136, Bid - gi_288 * gd_1284, stoploss, takeprofit, gi_1008, Blue);
               gi_888 = Time[0];
               g_count_932++;
            }
         }
         if (gi_492) {
            if (gi_900 != Time[0]) {
               if (gi_496) xdelete(OP_BUYSTOP);
               RefreshRates();
               gi_996 = open(OP_SELLSTOP, gd_1136, Bid - stoploss * gd_1284, gi_500, gi_504, gi_1008, Red);
               gi_900 = Time[0];
            }
         }
      }
      if (gi_268) {
         if (gi_272) {
            while (gi_996 <= 0 && g_count_992 < gi_940) {
               while (!IsTradeAllowed()) Sleep(5000);
               RefreshRates();
               gi_996 = open(OP_BUY, gd_1136, Ask, 0, 0, gi_1008, Blue);
               if (gi_996 < 0) {
                  if (gi_88) Print("Error opening BUY order! ", errordescription(GetLastError()));
                  g_count_992++;
               }
            }
         }
         if (gi_276) {
            if (gi_884 != Time[0]) {
               RefreshRates();
               gi_996 = open(OP_BUYSTOP, gd_1136, Ask + gi_288 * gd_1284, 0, 0, gi_1008, Blue);
               gi_884 = Time[0];
               g_count_932++;
            }
         }
         if (gi_280) {
            if (gi_888 != Time[0]) {
               RefreshRates();
               gi_996 = open(OP_BUYLIMIT, gd_1136, Bid - gi_288 * gd_1284, 0, 0, gi_1008, Blue);
               gi_888 = Time[0];
               g_count_932++;
            }
         }
         if (gi_492) {
            if (gi_900 != Time[0]) {
               if (gi_496) xdelete(OP_BUYSTOP);
               RefreshRates();
               gi_996 = open(OP_SELLSTOP, gd_1136, Bid - stoploss * gd_1284, 0, 0, gi_1008, Red);
               gi_900 = Time[0];
            }
         }
      }
      if (gi_272) {
         if (gi_996 <= 0) {
            if (gi_88) Print("Error Occured : " + errordescription(GetLastError()));
         } else g_count_932++;
      }
      if (gi_92) {
         if (gi_912 != Time[0]) {
            RefreshRates();
            RefreshRates();
            SendMail("[Long Trade]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits));
            gi_912 = Time[0];
         }
      }
   }
   if (li_52 && g_count_936 < gi_320 && (!gi_96)) {
      if (gi_292) {
         xdelete(OP_BUYSTOP);
         xdelete(OP_BUYLIMIT);
      }
      gi_996 = 0;
      g_count_992 = 0;
      gi_1008 = 0;
      if (gi_276 || gi_280)
         if (gi_428 > 0) gi_1008 = TimeCurrent() + 60 * gi_428 - 5;
      if (!gi_268) {
         if (gi_272 && gi_964 == FALSE) {
            while (gi_996 <= 0 && g_count_992 < gi_940) {
               while (!IsTradeAllowed()) Sleep(5000);
               RefreshRates();
               gi_996 = open(OP_SELL, gd_1144, Bid, stoploss, takeprofit, gi_1008, Red);
               if (gi_996 < 0) {
                  if (gi_88) Print("Error opening BUY order! ", errordescription(GetLastError()));
                  g_count_992++;
               }
            }
         }
         if (gi_272 && gi_964 == TRUE) {
            while (gi_996 <= 0 && g_count_992 < gi_940) {
               while (!IsTradeAllowed()) Sleep(5000);
               RefreshRates();
               gi_996 = open(OP_SELL, gd_1144, Bid, stoploss, 0, gi_1008, Red);
               if (gi_996 < 0) {
                  if (gi_88) Print("Error opening BUY order! ", errordescription(GetLastError()));
                  g_count_992++;
               }
            }
         }
         if (gi_276) {
            if (gi_892 != Time[0]) {
               RefreshRates();
               gi_996 = open(OP_SELLSTOP, gd_1144, Bid - gi_288 * gd_1284, stoploss, takeprofit, gi_1008, Red);
               gi_892 = Time[0];
               g_count_936++;
            }
         }
         if (gi_280) {
            if (gi_896 != Time[0]) {
               RefreshRates();
               gi_996 = open(OP_SELLLIMIT, gd_1144, Ask + gi_288 * gd_1284, stoploss, takeprofit, gi_1008, Red);
               gi_896 = Time[0];
               g_count_936++;
            }
         }
         if (gi_492) {
            if (gi_904 != Time[0]) {
               if (gi_496) xdelete(OP_SELLSTOP);
               RefreshRates();
               gi_996 = open(OP_BUYSTOP, gd_1136, Ask + stoploss * gd_1284, gi_500, gi_504, gi_1008, Red);
               gi_904 = Time[0];
            }
         }
      }
      if (gi_268) {
         if (gi_272) {
            while (gi_996 <= 0 && g_count_992 < gi_940) {
               while (!IsTradeAllowed()) Sleep(5000);
               RefreshRates();
               gi_996 = open(OP_SELL, gd_1144, Bid, 0, 0, gi_1008, Red);
               if (gi_996 < 0) {
                  if (gi_88) Print("Error opening BUY order! ", errordescription(GetLastError()));
                  g_count_992++;
               }
            }
         }
         if (gi_276) {
            if (gi_892 != Time[0]) {
               RefreshRates();
               gi_996 = open(OP_SELLSTOP, gd_1144, Bid - gi_288 * gd_1284, 0, 0, gi_1008, Red);
               gi_892 = Time[0];
               g_count_936++;
            }
         }
         if (gi_280) {
            if (gi_896 != Time[0]) {
               RefreshRates();
               gi_996 = open(OP_SELLLIMIT, gd_1144, Ask + gi_288 * gd_1284, 0, 0, gi_1008, Red);
               gi_896 = Time[0];
               g_count_936++;
            }
         }
         if (gi_492) {
            if (gi_904 != Time[0]) {
               if (gi_496) xdelete(OP_SELLSTOP);
               RefreshRates();
               gi_996 = open(OP_BUYSTOP, gd_1136, Ask + stoploss * gd_1284, 0, 0, gi_1008, Red);
               gi_904 = Time[0];
            }
         }
      }
      if (gi_272) {
         if (gi_996 <= 0) {
            if (gi_88) Print("Error Occured : " + errordescription(GetLastError()));
         } else g_count_936++;
      }
      if (gi_92) {
         if (gi_916 != Time[0]) {
            RefreshRates();
            RefreshRates();
            SendMail("[Short Trade]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits));
            gi_916 = Time[0];
         }
      }
   }
   if (gi_268) ecnmodify(stoploss, takeprofit);
   if (gi_472) gi_880 = Time[0];
   return (0);
}

int open(int a_cmd_0, double ad_4, double ad_12, double ad_20, double ad_28, int a_datetime_36, color a_color_40) {
   int l_ticket_44 = 0;
   if (ad_4 < minlot) ad_4 = minlot;
   if (ad_4 > maxlot) ad_4 = maxlot;
   if (a_cmd_0 == OP_BUY || a_cmd_0 == OP_BUYSTOP || a_cmd_0 == OP_BUYLIMIT) {
      if (gi_324 == FALSE && ad_20 > 0.0) g_price_1120 = ad_12 - ad_20 * gd_1284;
      else g_price_1120 = 0;
      if (gi_328 == FALSE && ad_28 > 0.0) g_price_1128 = ad_12 + ad_28 * gd_1284;
      else g_price_1128 = 0;
   }
   if (a_cmd_0 == OP_SELL || a_cmd_0 == OP_SELLSTOP || a_cmd_0 == OP_SELLLIMIT) {
      if (gi_324 == FALSE && ad_20 > 0.0) g_price_1120 = ad_12 + ad_20 * gd_1284;
      else g_price_1120 = 0;
      if (gi_328 == FALSE && ad_28 > 0.0) g_price_1128 = ad_12 - ad_28 * gd_1284;
      else g_price_1128 = 0;
   }
   l_ticket_44 = OrderSend(Symbol(), a_cmd_0, NormalizeDouble(ad_4, gi_148), NormalizeDouble(ad_12, Digits), gd_432 * gd_1300, g_price_1120, g_price_1128, gs_76 + " " +
      DoubleToStr(g_magic_84, 0), g_magic_84, a_datetime_36, a_color_40);
   return (l_ticket_44);
}

double lotsoptimized() {
   double ld_ret_0;
   if (stoploss > 0.0) ld_ret_0 = AccountBalance() * (risk / 100.0) / (stoploss * gd_1284 / MarketInfo(Symbol(), MODE_TICKSIZE) * MarketInfo(Symbol(), MODE_TICKVALUE));
   else ld_ret_0 = NormalizeDouble(AccountBalance() / gi_952 * minlot * risk, gi_148);
   return (ld_ret_0);
}

bool checktime() {
   if (TimeCurrent() < gda_1176[TimeYear(TimeCurrent()) - 1999] && TimeCurrent() > gda_1180[TimeYear(TimeCurrent()) - 1999]) gi_1000 = gi_708;
   else gi_1000 = gi_712;
   string ls_0 = Year() + "." + Month() + "." + Day();
   if (gi_716) {
      gi_988 = gi_720 + gi_1000;
      if (gi_988 > 23) gi_988 -= 24;
      if (gi_988 < 10) gs_1104 = "0" + gi_988;
      if (gi_988 > 9) gs_1104 = gi_988;
      if (gi_724 < 10) gs_1112 = "0" + gi_724;
      if (gi_724 > 9) gs_1112 = gi_724;
      g_str2time_864 = StrToTime(ls_0 + " " + gs_1104 + ":" + gs_1112);
   }
   if (gi_728) {
      gi_972 = gi_732 + gi_1000;
      if (gi_972 > 23) gi_972 -= 24;
      if (gi_972 < 10) gs_1040 = "0" + gi_972;
      if (gi_972 > 9) gs_1040 = gi_972;
      if (gi_736 < 10) gs_1056 = "0" + gi_736;
      if (gi_736 > 9) gs_1056 = gi_736;
      g_str2time_852 = StrToTime(ls_0 + " " + gs_1040 + ":" + gs_1056);
      gi_980 = gi_740 + gi_1000;
      if (gi_980 > 23) gi_980 -= 24;
      if (gi_980 < 10) gs_1064 = "0" + gi_980;
      if (gi_980 > 9) gs_1064 = gi_980;
      if (gi_744 < 10) gs_1072 = "0" + gi_744;
      if (gi_744 > 9) gs_1072 = gi_744;
      g_str2time_856 = StrToTime(ls_0 + " " + gs_1064 + ":" + gs_1072);
   }
   if (gi_752) {
      gi_984 = gi_756 + gi_1000;
      if (gi_984 > 23) gi_984 -= 24;
      if (gi_984 < 10) gs_1088 = "0" + gi_984;
      if (gi_984 > 9) gs_1088 = gi_984;
      if (gi_760 < 10) gs_1096 = "0" + gi_760;
      if (gi_760 > 9) gs_1096 = gi_760;
      g_str2time_860 = StrToTime(ls_0 + " " + gs_1088 + ":" + gs_1096);
   }
   if (gi_764) {
      gi_976 = gi_772 + gi_1000;
      if (gi_976 > 23) gi_976 -= 24;
      if (gi_976 < 10) gs_1048 = "0" + gi_976;
      if (gi_976 > 9) gs_1048 = gi_976;
      if (gi_776 < 10) gs_1080 = "0" + gi_776;
      if (gi_776 > 9) gs_1080 = gi_776;
      g_str2time_872 = StrToTime(ls_0 + " " + gs_1048 + ":" + gs_1080);
   }
   if (gi_728)
      if ((gi_972 <= gi_980 && TimeCurrent() < g_str2time_852 || TimeCurrent() > g_str2time_856) || (gi_972 > gi_980 && TimeCurrent() < g_str2time_852 && TimeCurrent() > g_str2time_856)) return (TRUE);
   if (gi_748 == FALSE)
      if (DayOfWeek() == 0) return (TRUE);
   if (gi_752)
      if (DayOfWeek() == 5 && TimeCurrent() > g_str2time_860) return (TRUE);
   if (gi_716)
      if (DayOfWeek() == 1 && TimeCurrent() < g_str2time_864) return (TRUE);
   if (gi_764)
      if (TimeCurrent() > g_str2time_872 - 60 * gi_768 && TimeCurrent() < g_str2time_872 + 60 * gi_780) return (TRUE);
   return (FALSE);
}

int count(int a_cmd_0) {
   g_count_928 = 0;
   if (OrdersTotal() > 0) {
      for (g_pos_920 = OrdersTotal(); g_pos_920 >= 0; g_pos_920--) {
         OrderSelect(g_pos_920, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol() == Symbol() && OrderType() == a_cmd_0 && OrderMagicNumber() == g_magic_84) g_count_928++;
      }
      return (g_count_928);
   }
   return (0);
}

void close(int ai_0) {
   if (OrdersTotal() > 0) {
      for (g_pos_920 = OrdersTotal() - 1; g_pos_920 >= 0; g_pos_920--) {
         OrderSelect(g_pos_920, SELECT_BY_POS, MODE_TRADES);
         if (ai_0 == 0 && OrderType() == OP_BUY) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84 && gi_300 == 0 || (gi_300 > 0 && OrderProfit() / (10.0 * OrderLots()) < (-1 * gi_300))) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), gd_432 * gd_1300);
            }
         }
         if (ai_0 == 1 && OrderType() == OP_SELL) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84 && gi_300 == 0 || (gi_300 > 0 && OrderProfit() / (10.0 * OrderLots()) < (-1 * gi_300))) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), gd_432 * gd_1300);
            }
         }
         if (ai_0 == 3) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84 && OrderType() == OP_BUY) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), gd_432 * gd_1300);
            }
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84 && OrderType() == OP_SELL) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), gd_432 * gd_1300);
            }
         }
      }
   }
}

void partialclose(int ai_0, int ai_4) {
   if (OrdersTotal() > 0) {
      for (g_pos_920 = OrdersTotal() - 1; g_pos_920 >= 0; g_pos_920--) {
         OrderSelect(g_pos_920, SELECT_BY_POS, MODE_TRADES);
         if (ai_0 == 0 && OrderType() == OP_BUY) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84 && OrderLots() >= gd_112 && (ai_4 == 1 && OrderProfit() >= 10.0 * (gd_348 * OrderLots())) || ai_4 == 2) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots() / 2.0, NormalizeDouble(Bid, Digits), gd_432 * gd_1300);
            }
         }
         if (ai_0 == 1 && OrderType() == OP_SELL) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84 && OrderLots() >= gd_112 && (ai_4 == 1 && OrderProfit() >= 10.0 * (gd_348 * OrderLots())) || ai_4 == 2) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots() / 2.0, NormalizeDouble(Ask, Digits), gd_432 * gd_1300);
            }
         }
         if (ai_0 == 3) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84 && OrderType() == OP_BUY && OrderLots() >= gd_112 && (ai_4 == 1 && OrderProfit() >= 10.0 * (gd_348 * OrderLots())) ||
               ai_4 == 2) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots() / 2.0, NormalizeDouble(Bid, Digits), gd_432 * gd_1300);
            }
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84 && OrderType() == OP_SELL && OrderLots() >= gd_112 && (ai_4 == 1 && OrderProfit() >= 10.0 * (gd_348 * OrderLots())) ||
               ai_4 == 2) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots() / 2.0, NormalizeDouble(Ask, Digits), gd_432 * gd_1300);
            }
         }
      }
   }
}

void partialclose2(int ai_0, int ai_4) {
   if (OrdersTotal() > 0) {
      for (g_pos_920 = OrdersTotal() - 1; g_pos_920 >= 0; g_pos_920--) {
         OrderSelect(g_pos_920, SELECT_BY_POS, MODE_TRADES);
         if (ai_0 == 0 && OrderType() == OP_BUY) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84 && OrderLots() < gd_112 && (ai_4 == 1 && OrderProfit() >= 10.0 * (gd_364 * OrderLots())) || ai_4 == 2) {
               RefreshRates();
               OrderClose(OrderTicket(), NormalizeDouble(OrderLots() * gd_372, gi_148), NormalizeDouble(Bid, Digits), gd_432 * gd_1300);
            }
         }
         if (ai_0 == 1 && OrderType() == OP_SELL) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84 && OrderLots() < gd_112 && (ai_4 == 1 && OrderProfit() >= 10.0 * (gd_364 * OrderLots())) || ai_4 == 2) {
               RefreshRates();
               OrderClose(OrderTicket(), NormalizeDouble(OrderLots() * gd_372, gi_148), NormalizeDouble(Ask, Digits), gd_432 * gd_1300);
            }
         }
         if (ai_0 == 3) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84 && OrderType() == OP_BUY && OrderLots() < gd_112 && (ai_4 == 1 && OrderProfit() >= 10.0 * (gd_364 * OrderLots())) ||
               ai_4 == 2) {
               RefreshRates();
               OrderClose(OrderTicket(), NormalizeDouble(OrderLots() * gd_372, gi_148), NormalizeDouble(Bid, Digits), gd_432 * gd_1300);
            }
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84 && OrderType() == OP_SELL && OrderLots() < gd_112 && (ai_4 == 1 && OrderProfit() >= 10.0 * (gd_364 * OrderLots())) ||
               ai_4 == 2) {
               RefreshRates();
               OrderClose(OrderTicket(), NormalizeDouble(OrderLots() * gd_372, gi_148), NormalizeDouble(Ask, Digits), gd_432 * gd_1300);
            }
         }
      }
   }
}

void hideclose(int ai_0) {
   if (OrdersTotal() > 0) {
      for (g_pos_920 = OrdersTotal() - 1; g_pos_920 >= 0; g_pos_920--) {
         OrderSelect(g_pos_920, SELECT_BY_POS, MODE_TRADES);
         if (ai_0 == 0 && OrderType() == OP_BUY) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84 && (gi_324 && stoploss > 0.0 && NormalizeDouble(OrderClosePrice() - OrderOpenPrice(), Digits) <= (-1.0 * stoploss) * gd_1284 - MarketInfo(Symbol(), MODE_SPREAD) * gd_1284) ||
               (gi_328 && takeprofit > 0.0 && NormalizeDouble(OrderClosePrice() - OrderOpenPrice(), Digits) >= takeprofit * gd_1284)) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Bid, gd_432 * gd_1300);
            }
         }
         if (ai_0 == 1 && OrderType() == OP_SELL) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84 && (gi_324 && stoploss > 0.0 && NormalizeDouble(OrderOpenPrice() - OrderClosePrice(), Digits) <= (-1.0 * stoploss) * gd_1284 - MarketInfo(Symbol(), MODE_SPREAD) * gd_1284) ||
               (gi_328 && takeprofit > 0.0 && NormalizeDouble(OrderOpenPrice() - OrderClosePrice(), Digits) >= takeprofit * gd_1284)) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Ask, gd_432 * gd_1300);
            }
         }
      }
   }
}

void closetime(int ai_0) {
   gd_1232 = 0;
   gi_1004 = 0;
   if (OrdersTotal() > 0) {
      for (g_pos_920 = OrdersTotal(); g_pos_920 >= 0; g_pos_920--) {
         OrderSelect(g_pos_920, SELECT_BY_POS, MODE_TRADES);
         if (ai_0 == 0 && OrderType() == OP_BUY) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84) {
               gd_1232 = NormalizeDouble(OrderClosePrice() - OrderOpenPrice(), Digits);
               gi_1004 = TimeCurrent() - OrderOpenTime();
               if ((gd_1232 >= gi_800 * gd_1284 && gi_1004 > 60 * gi_796 && gi_1004 < 60 * gi_804) || (gd_1232 >= gi_808 * gd_1284 && gi_1004 > 60 * gi_804 && gi_1004 < 60 * gi_812) ||
                  (gd_1232 >= gi_816 * gd_1284 && gi_1004 > 60 * gi_812 && gi_1004 < 60 * gi_820) || (gd_1232 >= gi_824 * gd_1284 && gi_1004 > 60 * gi_820 && gi_1004 < 60 * gi_828) ||
                  (gd_1232 >= gi_832 * gd_1284 && gi_1004 > 60 * gi_828 && gi_1004 < 60 * gi_836) || (gd_1232 >= gi_840 * gd_1284 && gi_1004 > 60 * gi_836 && gi_1004 < 60 * gi_844) ||
                  (gd_1232 >= gi_848 * gd_1284 && gi_1004 > 60 * gi_844)) {
                  RefreshRates();
                  OrderClose(OrderTicket(), OrderLots(), Bid, gd_432 * gd_1300);
               }
            }
         }
         if (ai_0 == 1 && OrderType() == OP_SELL) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84) {
               gd_1232 = NormalizeDouble(OrderClosePrice() - OrderOpenPrice(), Digits);
               gi_1004 = TimeCurrent() - OrderOpenTime();
               if ((gd_1232 >= gi_800 * gd_1284 && gi_1004 > 60 * gi_796 && gi_1004 < 60 * gi_804) || (gd_1232 >= gi_808 * gd_1284 && gi_1004 > 60 * gi_804 && gi_1004 < 60 * gi_812) ||
                  (gd_1232 >= gi_816 * gd_1284 && gi_1004 > 60 * gi_812 && gi_1004 < 60 * gi_820) || (gd_1232 >= gi_824 * gd_1284 && gi_1004 > 60 * gi_820 && gi_1004 < 60 * gi_828) ||
                  (gd_1232 >= gi_832 * gd_1284 && gi_1004 > 60 * gi_828 && gi_1004 < 60 * gi_836) || (gd_1232 >= gi_840 * gd_1284 && gi_1004 > 60 * gi_836 && gi_1004 < 60 * gi_844) ||
                  (gd_1232 >= gi_848 * gd_1284 && gi_1004 > 60 * gi_844)) {
                  RefreshRates();
                  OrderClose(OrderTicket(), OrderLots(), Ask, gd_432 * gd_1300);
               }
            }
         }
      }
   }
}

void xdelete(int a_cmd_0) {
   if (OrdersTotal() > 0) {
      for (g_pos_920 = OrdersTotal(); g_pos_920 >= 0; g_pos_920--) {
         OrderSelect(g_pos_920, SELECT_BY_POS, MODE_TRADES);
         if (a_cmd_0 != 6)
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84 && OrderType() == a_cmd_0) OrderDelete(OrderTicket());
         if (a_cmd_0 == 6)
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84 && OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP || OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT) OrderDelete(OrderTicket());
      }
   }
}

void movebreakeven(double ad_0, double ad_8) {
   RefreshRates();
   if (OrdersTotal() > 0) {
      for (g_pos_920 = OrdersTotal(); g_pos_920 >= 0; g_pos_920--) {
         OrderSelect(g_pos_920, SELECT_BY_POS, MODE_TRADES);
         if (OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84) {
            if (OrderType() == OP_BUY) {
               if (NormalizeDouble(Bid - OrderOpenPrice(), Digits) < NormalizeDouble(ad_0 * gd_1284, Digits)) continue;
               if (!((NormalizeDouble(OrderStopLoss() - OrderOpenPrice(), Digits) < NormalizeDouble(ad_8 * gd_1284, Digits) || OrderStopLoss() == 0.0))) continue;
               OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() + ad_8 * gd_1284, Digits), OrderTakeProfit(), 0, Blue);
            } else {
               if (NormalizeDouble(OrderOpenPrice() - Ask, Digits) < NormalizeDouble(ad_0 * gd_1284, Digits)) continue;
               if (!(NormalizeDouble(OrderOpenPrice() - OrderStopLoss(), Digits) < NormalizeDouble(ad_8 * gd_1284, Digits) || OrderStopLoss() == 0.0)) continue;
               OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() - ad_8 * gd_1284, Digits), OrderTakeProfit(), 0, Red);
               return;
            }
         }
      }
   }
}

void movetrailingstop(double ad_0, double ad_8) {
   RefreshRates();
   if (OrdersTotal() > 0) {
      for (g_pos_920 = OrdersTotal(); g_pos_920 >= 0; g_pos_920--) {
         OrderSelect(g_pos_920, SELECT_BY_POS, MODE_TRADES);
         if (OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84) {
            if (OrderType() == OP_BUY) {
               if (!((NormalizeDouble(Ask, Digits) > NormalizeDouble(OrderOpenPrice() + ad_0 * gd_1284, Digits) && NormalizeDouble(OrderStopLoss(), Digits) < NormalizeDouble(Bid - (ad_8 +
                  trailingstep) * gd_1284, Digits)))) continue;
               OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid - ad_8 * gd_1284, Digits), OrderTakeProfit(), 0, Blue);
            } else {
               if (!(NormalizeDouble(Bid, Digits) < NormalizeDouble(OrderOpenPrice() - ad_0 * gd_1284, Digits) && NormalizeDouble(OrderStopLoss(), Digits) > NormalizeDouble(Ask +
                  (ad_8 + trailingstep) * gd_1284, Digits) || OrderStopLoss() == 0.0)) continue;
               OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask + ad_8 * gd_1284, Digits), OrderTakeProfit(), 0, Red);
               return;
            }
         }
      }
   }
}

void movetrailingprofit(double ad_0, double ad_8) {
   RefreshRates();
   for (g_pos_920 = OrdersTotal(); g_pos_920 >= 0; g_pos_920--) {
      if (OrderSelect(g_pos_920, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84) {
            if (OrderType() == OP_BUY) {
               if (NormalizeDouble(Bid - OrderOpenPrice(), Digits) <= NormalizeDouble((-1.0 * ad_0) * gd_1284, Digits))
                  if (NormalizeDouble(OrderTakeProfit(), Digits) > NormalizeDouble(Bid + (ad_8 + trailingstep) * gd_1284, Digits) || NormalizeDouble(OrderTakeProfit(), Digits) == 0.0) OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble(Bid + ad_8 * gd_1284, Digits), 0, Blue);
            }
            if (OrderType() == OP_SELL) {
               if (NormalizeDouble(OrderOpenPrice() - Ask, Digits) <= NormalizeDouble((-1.0 * ad_0) * gd_1284, Digits))
                  if (NormalizeDouble(OrderTakeProfit(), Digits) < NormalizeDouble(Ask - (ad_8 + trailingstep) * gd_1284, Digits)) OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble(Ask - ad_8 * gd_1284, Digits), 0, Red);
            }
         }
      }
   }
}

void ecnmodify(double ad_0, double ad_8) {
   for (g_pos_920 = OrdersTotal(); g_pos_920 >= 0; g_pos_920--) {
      OrderSelect(g_pos_920, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_84) {
         if (OrderType() == OP_BUY) {
            if (OrderStopLoss() == 0.0 && ad_0 > 0.0 && ad_8 == 0.0) {
               RefreshRates();
               OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask - ad_0 * gd_1284, Digits), OrderTakeProfit(), 0, Red);
            }
            if (OrderTakeProfit() == 0.0 && ad_0 == 0.0 && ad_8 > 0.0) {
               RefreshRates();
               OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble(Ask + ad_8 * gd_1284, Digits), 0, Red);
            }
            if (OrderTakeProfit() == 0.0 && OrderStopLoss() == 0.0 && ad_0 > 0.0 && ad_8 > 0.0) {
               RefreshRates();
               OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask - ad_0 * gd_1284, Digits), NormalizeDouble(Ask + ad_8 * gd_1284, Digits), 0, Red);
            }
         }
         if (OrderType() == OP_SELL) {
            if (OrderStopLoss() == 0.0 && ad_0 > 0.0 && ad_8 == 0.0) {
               RefreshRates();
               OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid + ad_0 * gd_1284, Digits), OrderTakeProfit(), 0, Red);
            }
            if (OrderTakeProfit() == 0.0 && ad_0 == 0.0 && ad_8 > 0.0) {
               RefreshRates();
               OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble(Bid - ad_8 * gd_1284, Digits), 0, Red);
            }
            if (OrderTakeProfit() == 0.0 && OrderStopLoss() == 0.0 && ad_0 > 0.0 && ad_8 > 0.0) {
               RefreshRates();
               OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid + ad_0 * gd_1284, Digits), NormalizeDouble(Bid - ad_8 * gd_1284, Digits), 0, Red);
            }
         }
      }
   }
}

string errordescription(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";
      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";
      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 4000:
      ls_ret_4 = "no error";
      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";
      break;
   case 4110:
      ls_ret_4 = "longs are not allowed";
      break;
   case 4111:
      ls_ret_4 = "shorts are not allowed";
      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);
}