//int gi_76 = 3536208;
extern string Created_by = "XXXXX";
extern string Company = "XXXXX";
extern string EA_for = "XXXXX";
extern string Projection = "XXXXX";
extern string Copyright = "XXXXX";
extern double Lots = 0.01;
extern double risk = 0.3;
extern double Slippage = 5;

extern int gi_84 = 25;
int gi_140 = 0;
bool gi_144 = FALSE;
extern int gi_96 = 26;
extern int gi_100 = 28;
extern int gi_104 = 26;
extern int gi_108 = 28;
extern int gi_112 = 26;
extern int gi_116 = 27;
extern int gi_120 = 26;
extern int gi_124 = 26;
extern int gi_128 = 26;
extern int gi_132 = 26;
extern int gi_136 = 26;
extern string Level8 = "Range/TP";
extern int gi_148 = 25;
extern string Level9 = "Range/TP";
extern int gi_152 = 1000;
extern int gi_156 = 1000;
extern string Level10 = "Range/TP";
extern int gi_160 = 1000;
extern int gi_164 = 1000;
extern string Level11 = "Range/TP";
extern int gi_168 = 1000;
extern int gi_172 = 1000;
//int Slippage = 3;
int gi_264 = 2;
int gi_268 = 0;
int gi_272 = 24;
int gi_276 = 111;
bool gi_280 = FALSE;
bool gi_284 = FALSE;
int gi_288 = 1;
bool gi_292 = FALSE;
extern int hari = 5;
extern string EndHour = "Friday";
extern int gi_212 = 24;
int gi_312 = D'01.01.2000 04:00';
int gi_316 = D'15.10.2018 05:00';
string gs_320 = "";
int    cnt, vSlippage, lotsize;
double ticket, number, vPoint;


int init()
{


      if (Digits == 2) 
		{
         vPoint = 0.1;
         vSlippage = 0.1;
      } 
		else 
		{


      if (Digits == 3) 
		{
         vPoint = 0.01;
         vSlippage = 0.01;
      } 
		else 
		{

      if (Digits == 4) 
		{
         vPoint = 0.001;
         vSlippage = 0.001;
      } 
		else 
		{
       if (Digits == 5) 
		{
         vPoint = 0.0001;
         vSlippage = 0.0001;
      } 
		else 
		{
         vPoint = Point;
         vSlippage = Slippage;
       }
     }
    }
   }
  
   if (Digits == 2 || Digits == 3 || Digits == 4 || Digits == 5) 


    return(0);
  }







int start() {
   int li_0;
   int li_4;
   int li_8;
   double ld_12;
   double ld_20;
   double ld_28;
   double ld_36;
   double ld_44;
   double ld_52;
   bool li_60;
   int li_68;
   int li_72;
   int li_76;
   int li_80;
   int li_84;
   int li_88;
   double ld_92;
   double ld_100;
   double ld_108;
   double ld_116;
   double ld_124;
   double ld_132;
   double ld_140;
   double ld_148;
   double ld_156;
   double ld_164;
   double ld_172;
   double ld_180;
   double ld_188;
   double ld_196;
   string ls_204;
   string ls_212;
   string ls_220;
   string ls_228;
   string ls_236;
   string ls_244;
   string ls_252;
   string ls_260;
   string ls_268;
   
   /*
   if (AccountNumber() != gi_76) {
      Comment("NOMOR AKUN TIDAK TERDAFTAR, HUBUNGI ADMIN 081911857815 !!!");
      return (0);
   }*/
   
   //if (AccountNumber() == gi_76) {
      //Comment("NOMOR AKUN TERDAFTAR");
      //if (gi_280 == TRUE) {
         for (int li_64 = OrdersTotal(); li_64 >= 0; li_64--) {
            OrderSelect(li_64, SELECT_BY_POS, MODE_TRADES);
            if (OrderSymbol() == Symbol() || gi_288 == 3 && OrderMagicNumber() == gi_276) {
               if (OrderType() == OP_BUY || OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
               if (OrderType() != OP_BUY && OrderType() != OP_SELL) OrderDelete(OrderTicket());
            //}
         //}
         return (0);
      }
      li_68 = 0;
      li_72 = 0;
      li_76 = 0;
      li_80 = 0;
      li_84 = 0;
      li_88 = 0;
      ld_92 = 0;
      ld_100 = 0;
      ld_108 = 0;
      ld_116 = 0;
      ld_124 = 0;
      ld_132 = 0;
      ld_140 = 0;
      ld_148 = 0;
      ld_156 = 0;
      ld_164 = 0;
      ld_172 = 0;
      ld_180 = 0;
      ld_188 = 0;
      ld_196 = 0;
      ls_204 = "";
      ls_212 = "";
      ls_220 = "";
      ls_228 = "";
      ls_236 = "";
      ls_244 = "";
      ls_252 = "";
      ls_260 = "";
      ls_268 = "";
      if (gi_292 == TRUE) li_4 = 100;
      else li_4 = 1;
      if (iMACD(NULL, 0, 14, 26, 9, PRICE_CLOSE, MODE_MAIN, 0) > iMACD(NULL, 0, 14, 26, 9, PRICE_CLOSE, MODE_MAIN, 1)) li_0 = 2;
      if (iMACD(NULL, 0, 14, 26, 9, PRICE_CLOSE, MODE_MAIN, 0) < iMACD(NULL, 0, 14, 26, 9, PRICE_CLOSE, MODE_MAIN, 1)) li_0 = 1;
      for (int li_276 = 0; li_276 < OrdersTotal(); li_276++) {
         OrderSelect(li_276, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol() == Symbol() || gi_288 == 3 && OrderMagicNumber() == gi_276) {
            if (OrderType() == OP_BUY && li_68 < OrderTicket()) {
               ld_92 = OrderLots();
               ld_108 = OrderOpenPrice();
               li_68 = OrderTicket();
               ld_132 = OrderTakeProfit();
            }
            if (OrderType() == OP_BUY) {
               if (OrderLots() < ld_188 || ld_188 == 0.0) {
                  ld_188 = OrderLots();
                  ld_172 = OrderOpenPrice() - gi_140 * vPoint;
               }
            }
            if (OrderType() == OP_SELL && li_72 < OrderTicket()) {
               ld_100 = OrderLots();
               ld_116 = OrderOpenPrice();
               li_72 = OrderTicket();
               ld_124 = OrderTakeProfit();
            }
            if (OrderType() == OP_SELL) {
               if (OrderLots() < ld_196 || ld_196 == 0.0) {
                  ld_196 = OrderLots();
                  ld_180 = OrderOpenPrice() + gi_140 * vPoint;
               }
            }
            if (OrderType() == OP_BUYLIMIT) {
               li_76 = OrderTicket();
               ld_156 = OrderLots();
            }
            if (OrderType() == OP_SELLLIMIT) {
               li_80 = OrderTicket();
               ld_164 = OrderLots();
            }
         }
      }
      if (li_68 == 0 && li_76 != 0) OrderDelete(li_76);
      if (li_68 == 0 && li_76 == 0) {
         if (TimeCurrent() >= gi_312 && TimeCurrent() <= gi_316) {
            ld_20 = Ask - gi_140 * vPoint;
            if (gi_140 <= 0) ld_20 = 0;
            ld_28 = Ask + gi_84 * vPoint;
            if ((gi_268 < gi_272 && TimeHour(TimeCurrent()) >= gi_268 && TimeHour(TimeCurrent()) < gi_272) || (gi_268 > gi_272 && TimeHour(TimeCurrent()) >= gi_268 || TimeHour(TimeCurrent()) < gi_272)) {
               if (DayOfWeek() != hari || Hour() < gi_212) {
                  if ((li_0 == 2 && li_72 == 0) || gi_284 == FALSE) {
                     if (AccountFreeMarginCheck(Symbol(), OP_BUY, Lots * li_4) >= 0.0) {
                        if (gi_288 != 2 && gi_288 != 3) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, ld_20, ld_28, "Magic = " + gi_276, gi_276, 0, CLR_NONE);
                        else {
                           li_8 = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "Magic = " + gi_276, gi_276, 0, CLR_NONE);
                           li_60 = OrderModify(li_8, OrderOpenPrice(), ld_20, ld_28, 0, CLR_NONE);
                           if (li_60 == FALSE) Print("Error modifying BUY order : ", GetLastError());
                        }
                     } else {
                        if (AccountFreeMarginCheck(Symbol(), OP_BUY, Lots) >= 0.0) ls_268 = "we recommend you to decrease your start lot or increase deposit";
                        else ls_220 = "BUY, " + DoubleToStr(Lots, 2) + " lots. ";
                     }
                  }
               }
            }
         } else ls_212 = gs_320;
      }
      if (li_72 == 0 && li_80 != 0) OrderDelete(li_80);
      if (li_72 == 0 && li_80 == 0) {
         if (TimeCurrent() >= gi_312 && TimeCurrent() <= gi_316) {
            ld_20 = Bid + gi_140 * vPoint;
            if (gi_140 <= 0) ld_20 = 0;
            ld_28 = Bid - gi_84 * vPoint;
            if ((gi_268 < gi_272 && TimeHour(TimeCurrent()) >= gi_268 && TimeHour(TimeCurrent()) < gi_272) || (gi_268 > gi_272 && TimeHour(TimeCurrent()) >= gi_268 || TimeHour(TimeCurrent()) < gi_272)) {
               if (DayOfWeek() != hari || Hour() < gi_212) {
                  if ((li_0 == 1 && li_68 == 0) || gi_284 == FALSE) {
                     if (AccountFreeMarginCheck(Symbol(), OP_SELL, Lots * li_4) >= 0.0) {
                        if (gi_288 != 2 && gi_288 != 3) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, ld_20, ld_28, "Magic = " + gi_276, gi_276, 0, CLR_NONE);
                        else {
                           li_8 = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "Magic = " + gi_276, gi_276, 0, CLR_NONE);
                           li_60 = OrderModify(li_8, OrderOpenPrice(), ld_20, ld_28, 0, CLR_NONE);
                           if (li_60 == FALSE) Print("Error modifying SELL order : ", GetLastError());
                        }
                     } else {
                        if (AccountFreeMarginCheck(Symbol(), OP_SELL, Lots) >= 0.0) ls_268 = "we recommend you to decrease your start lot or increase deposit";
                        else ls_228 = "SELL, " + DoubleToStr(Lots, 2) + " lots. ";
                     }
                  }
               }
            }
         } else ls_212 = gs_320;
      }
      if (li_68 != 0 && li_76 != 0) {
         if (AccountFreeMarginCheck(Symbol(), OP_BUY, ld_156) < 0.0) {
            ls_252 = "BUYLIMIT, " + DoubleToStr(ld_156, 2) + " lots. ";
            OrderDelete(li_76);
         }
      }
      if (li_68 != 0 && li_76 == 0) {
         if (AccountFreeMarginCheck(Symbol(), OP_BUY, 2.0 * ld_92) >= 0.0) {
            ld_52 = f0_1(NormalizeDouble(ld_92 / ld_188, 0));
            ld_44 = f0_0(NormalizeDouble(ld_92 / ld_188, 0));
            ld_12 = ld_108 - ld_52 * vPoint;
            if (gi_144 == FALSE) ld_20 = ld_12 - gi_140 * vPoint;
            else ld_20 = ld_172;
            if (gi_140 <= 0) ld_20 = 0;
            ld_28 = ld_12 + ld_44 * vPoint;
            ld_36 = NormalizeDouble(2.0 * ld_92, gi_264);
            OrderSend(Symbol(), OP_BUYLIMIT, ld_36, ld_12, Slippage, ld_20, ld_28, "Magic = " + gi_276, gi_276, 0, CLR_NONE);
         } else ls_236 = "BUYLIMIT, " + DoubleToStr(2.0 * ld_92, 2) + " lots. ";
      }
      if (li_72 != 0 && li_80 != 0) {
         if (AccountFreeMarginCheck(Symbol(), OP_SELL, ld_164) < 0.0) {
            ls_260 = "SELLLIMIT, " + DoubleToStr(ld_164, 2) + " lots. ";
            OrderDelete(li_80);
         }
      }
      if (li_72 != 0 && li_80 == 0) {
         if (AccountFreeMarginCheck(Symbol(), OP_SELL, 2.0 * ld_100) >= 0.0) {
            ld_52 = f0_1(NormalizeDouble(ld_100 / ld_196, 0));
            ld_44 = f0_0(NormalizeDouble(ld_100 / ld_196, 0));
            ld_12 = ld_116 + ld_52 * vPoint;
            if (gi_144 == FALSE) ld_20 = ld_12 + gi_140 * vPoint;
            else ld_20 = ld_180;
            if (gi_140 <= 0) ld_20 = 0;
            ld_28 = ld_12 - ld_44 * vPoint;
            ld_36 = NormalizeDouble(2.0 * ld_100, gi_264);
            OrderSend(Symbol(), OP_SELLLIMIT, ld_36, ld_12, Slippage, ld_20, ld_28, "Magic = " + gi_276, gi_276, 0, CLR_NONE);
         } else ls_244 = "SELLLIMIT, " + DoubleToStr(2.0 * ld_100, 2) + " lots. ";
      }
      for (li_276 = 0; li_276 < OrdersTotal(); li_276++) {
         OrderSelect(li_276, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol() == Symbol() || gi_288 == 3 && OrderType() == OP_BUY && li_68 != 0 && OrderMagicNumber() == gi_276) {
            if (gi_144 == FALSE) ld_20 = ld_108 - gi_140 * vPoint;
            else ld_20 = ld_172;
            if (gi_140 <= 0) ld_20 = 0;
            if (li_68 > OrderTicket()) ld_28 = ld_132;
            else ld_28 = OrderTakeProfit();
            if (ld_28 != OrderTakeProfit() || ld_20 != OrderStopLoss()) OrderModify(OrderTicket(), OrderOpenPrice(), ld_20, ld_28, 0, CLR_NONE);
         }
         if (OrderSymbol() == Symbol() || gi_288 == 3 && OrderType() == OP_SELL && li_72 != 0 && OrderMagicNumber() == gi_276) {
            if (gi_144 == FALSE) ld_20 = ld_116 + gi_140 * vPoint;
            else ld_20 = ld_180;
            if (gi_140 <= 0) ld_20 = 0;
            if (li_72 > OrderTicket()) ld_28 = ld_124;
            else ld_28 = OrderTakeProfit();
            if (ld_28 != OrderTakeProfit() || ld_20 != OrderStopLoss()) OrderModify(OrderTicket(), OrderOpenPrice(), ld_20, ld_28, 0, CLR_NONE);
         }
      }
      if (ls_220 != "" || ls_228 != "" || ls_236 != "" || ls_244 != "" || ls_252 != "" || ls_260 != "") ls_204 = "Not enough margin for opening orders: ";
      Comment(ls_212, 
         "\n", ls_204, ls_220, ls_228, ls_236, ls_244, ls_252, ls_260, 
      "\n", ls_268);
   }
   return (0);
}

int f0_1(double ad_0) {
   switch (ad_0) {
   case 1.0:
      return (gi_96);
   case 2.0:
      return (gi_104);
   case 4.0:
      return (gi_112);
   case 8.0:
      return (gi_120);
   case 16.0:
      return (gi_128);
   case 32.0:
      return (gi_136);
   case 64.0:
      return (gi_144);
   case 128.0:
      return (gi_152);
   case 256.0:
      return (gi_160);
   case 512.0:
      return (gi_168);
   }
   return (gi_168);
}

int f0_0(double ad_0) {
   switch (ad_0) {
   case 1.0:
      return (gi_100);
   case 2.0:
      return (gi_108);
   case 4.0:
      return (gi_116);
   case 8.0:
      return (gi_124);
   case 16.0:
      return (gi_132);
   case 32.0:
      return (gi_140);
   case 64.0:
      return (gi_148);
   case 128.0:
      return (gi_156);
   case 256.0:
      return (gi_164);
   case 512.0:
      return (gi_172);
   }
   return (gi_172);
}