extern int MAGIC_NO = 12345;
extern string Scalping = "Y";
extern double Lots = 0.1;
extern double TakeProfit = 10.0;
extern double StopLoss = 150.0;
extern string USBroker? = "N";

static int prevtime = 0;// вставить в глобальные переменные 
double g_ima_120;
double g_ima_128;
double g_ima_136;
double g_ima_144;
double g_iadx_152;
double g_iadx_160;
double g_iadx_168;
double g_iadx_176;
double g_iadx_184;
double g_iadx_192;
double g_iadx_200;
double g_iadx_208;
double g_ima_216;
double g_ima_224;
bool gi_232;
bool gi_236;
double gda_240[] = {1, 2, 3};
double gda_244[] = {1, 2, 3, 4, 5, 6, 0};
double gda_248[] = {1, 2, 3, 4, 5, 6, 7, 8};
double g_iadx_252;
double g_iadx_260;
double g_iadx_268;
double g_iadx_276;
double g_iadx_284;
double g_iadx_292;
double g_iadx_300;
double g_iadx_308;
extern bool gi_316=true;
bool gi_320;
double gd_unused_332;
double gd_unused_340;
double g_price_348;
double g_price_356;
int g_ticket_364;
int g_ticket_368;
int g_iopen_372 = 0;
double g_ima_376;
double g_ima_384;
int g_ord_total_392;
double gd_396;
double gd_404;
double gd_412;
double gd_420;
double gd_428;
double gd_436;
double gd_444;
double g_ihigh_452;
double g_ilow_460;
double g_iclose_468;
double g_price_476 = 0.0;
double g_price_484 = 0.0;
double g_point_500;
extern int MaxOrders = 3;
int g_count_512 = 0; //Number of orders

int init() {
   if (Point == 0.00001) g_point_500 = 0.0001;
   else {
      if (Point == 0.001) g_point_500 = 0.01;
      else g_point_500 = Point;
   }
   return (0);
}

int deinit() {
   return (0);
}

void pivotpoint() { //No scalping
   g_ima_136 = iMA(Symbol(), PERIOD_D1, 14, 0, MODE_EMA, PRICE_LOW, 1);
   g_ima_144 = iMA(Symbol(), PERIOD_D1, 14, 0, MODE_EMA, PRICE_LOW, 2);
   g_ima_120 = iMA(Symbol(), PERIOD_H1, 14, 0, MODE_EMA, PRICE_LOW, 1);
   g_ima_128 = iMA(Symbol(), PERIOD_H1, 14, 0, MODE_EMA, PRICE_LOW, 2);
   g_iadx_152 = iADX(NULL, PERIOD_D1, 2, PRICE_CLOSE, MODE_PLUSDI, 1);
   g_iadx_160 = iADX(NULL, PERIOD_D1, 2, PRICE_CLOSE, MODE_MINUSDI, 1);
   g_iadx_168 = iADX(NULL, PERIOD_H1, 2, PRICE_CLOSE, MODE_PLUSDI, 0);
   g_iadx_176 = iADX(NULL, PERIOD_H1, 2, PRICE_CLOSE, MODE_MINUSDI, 0);
   g_iadx_184 = iADX(NULL, PERIOD_H1, 2, PRICE_CLOSE, MODE_PLUSDI, 1);
   g_iadx_192 = iADX(NULL, PERIOD_H1, 2, PRICE_CLOSE, MODE_MINUSDI, 1);
   g_iadx_200 = iADX(NULL, PERIOD_H1, 2, PRICE_CLOSE, MODE_PLUSDI, 2);
   g_iadx_208 = iADX(NULL, PERIOD_H1, 2, PRICE_CLOSE, MODE_MINUSDI, 2);
   g_ima_216 = iMA(NULL, PERIOD_M15, 14, 0, MODE_EMA, PRICE_CLOSE, 0);
   g_ima_224 = iMA(NULL, PERIOD_M15, 14, 0, MODE_EMA, PRICE_CLOSE, 1);
   g_ima_376 = iMA(NULL, PERIOD_M15, 100, 0, MODE_EMA, PRICE_CLOSE, 1);
   g_ima_384 = iMA(NULL, PERIOD_M15, 100, 0, MODE_EMA, PRICE_CLOSE, 14);
   g_ihigh_452 = iHigh(Symbol(), PERIOD_D1, 1);
   g_ilow_460 = iLow(Symbol(), PERIOD_D1, 1);
   g_iclose_468 = iClose(Symbol(), PERIOD_D1, 1);
   gd_396 = (g_ihigh_452 + g_ilow_460 + g_iclose_468) / 3.0;
   gd_428 = 2.0 * gd_396 - g_ihigh_452;
   gd_404 = 2.0 * gd_396 - g_ilow_460;
   gd_436 = gd_396 - (gd_404 - gd_428);
   gd_444 = g_ilow_460 - 2.0 * (g_ihigh_452 - gd_396);
   gd_412 = gd_396 + (gd_404 - gd_428);
   gd_420 = g_ihigh_452 + 2.0 * (gd_396 - g_ilow_460);
   if (iClose(Symbol(), PERIOD_D1, 1) > g_ima_136 && iClose(Symbol(), PERIOD_H1, 1) > g_ima_120 && g_iadx_152 > g_iadx_160 && g_iadx_168 > g_iadx_176) gi_232 = TRUE;
   else
      if (iClose(Symbol(), PERIOD_D1, 1) < g_ima_136 && iClose(Symbol(), PERIOD_H1, 1) < g_ima_120 && g_iadx_152 < g_iadx_160 && g_iadx_168 < g_iadx_176) gi_236 = TRUE;
   
   int l_ord_total_0 = OrdersTotal();
   if (gi_232 == TRUE || Close[1] > g_ima_224 && Close[0] > g_ima_216 && g_ima_376 > g_ima_384) {
      if (g_count_512 < MaxOrders) {
         g_price_348 = Ask - StopLoss * g_point_500;
         g_price_356 = Ask + TakeProfit * g_point_500;
         g_price_484 = Ask + TakeProfit * g_point_500;
         if (USBroker? == "N" || USBroker? == "n") {
            g_ticket_364 = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, g_price_348, g_price_356, "Cash Engine", MAGIC_NO, 0, Green);
            g_count_512++;
            gi_232 = FALSE;
            gi_316 = TRUE;
         } else {
            if (USBroker? == "Y" || USBroker? == "y") {
               g_ticket_364 = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, "Cash Engine", MAGIC_NO, 0, Green);
               g_count_512++;
               gi_232 = FALSE;
               gi_316 = TRUE;
            }
         }
      }
   } else {
      if (gi_236 == TRUE || Close[1] < g_ima_224 && Close[0] < g_ima_216 && g_ima_376 < g_ima_384) {
         if (g_count_512 < MaxOrders) {
            g_price_348 = Bid + StopLoss * g_point_500;
            g_price_356 = Bid - TakeProfit * g_point_500;
            g_price_484 = Bid - TakeProfit * g_point_500;
            if (USBroker? == "N" || USBroker? == "n") {
               g_ticket_364 = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, g_price_348, g_price_356, "Cash Engine", MAGIC_NO, 0, Red);
               g_count_512++;
               gi_236 = FALSE;
               gi_320 = TRUE;
            } else {
               if (USBroker? == "Y" || USBroker? == "y") {
                  g_ticket_364 = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, "Cash Engine", MAGIC_NO, 0, Red);
                  g_count_512++;
                  gi_236 = FALSE;
                  gi_320 = TRUE;
               }
            }
         }
      }
   }
   g_ord_total_392 = OrdersTotal();
   if (Bid <= g_price_348 && gi_316 == TRUE || Bid >= g_price_356 && gi_316 == TRUE) {
      for (int li_4 = 1; li_4 <= g_ord_total_392; li_4++) {
         OrderSelect(li_4 - 1, SELECT_BY_POS);
         if (OrderMagicNumber() == MAGIC_NO && OrderSymbol() == Symbol() && OrderType() == OP_BUY) {
            if (USBroker? == "N" || USBroker? == "n") continue;
            if (USBroker? == "Y" || USBroker? == "y") {
               OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, "Cash Engine", MAGIC_NO, 0, Red);
               g_count_512 = 0;
            }
         }
      }
      gi_316 = FALSE;
      g_price_348 = 0;
      g_price_356 = 0;
   }
   if (Ask >= g_price_348 && gi_320 == TRUE || Ask <= g_price_356 && gi_320 == TRUE) {
      for (int li_8 = 1; li_8 <= g_ord_total_392; li_8++) {
         OrderSelect(li_8 - 1, SELECT_BY_POS);
         if (OrderMagicNumber() == MAGIC_NO && OrderSymbol() == Symbol() && OrderType() == OP_SELL) {
            if (USBroker? == "N" || USBroker? == "n") continue;
            if (USBroker? == "Y" || USBroker? == "y") {
               OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, "Cash Engine", MAGIC_NO, 0, Green);
               g_count_512 = 0;
            }
         }
      }
      gi_320 = FALSE;
      g_price_348 = 0;
      g_price_356 = 0;
   }
}
/*
void eurobroker() { //Scalping
   for (int li_0 = 1; li_0 <= 8; li_0++) {
      gda_248[li_0] = iMA(NULL, PERIOD_M15, 14, 0, MODE_EMA, PRICE_CLOSE, li_0);
      if (li_0 <= 6) gda_244[li_0] = iMA(NULL, PERIOD_M30, 14, 0, MODE_EMA, PRICE_CLOSE, li_0);
      if (li_0 <= 3) gda_240[li_0] = iMA(NULL, PERIOD_H1, 14, 0, MODE_EMA, PRICE_CLOSE, li_0);
   }
   g_ima_216 = iMA(NULL, PERIOD_M15, 14, 0, MODE_EMA, PRICE_CLOSE, 0);
   g_ima_224 = iMA(NULL, PERIOD_M15, 14, 0, MODE_EMA, PRICE_CLOSE, 1);
   g_ima_376 = iMA(NULL, PERIOD_M15, 100, 0, MODE_EMA, PRICE_CLOSE, 1);
   g_ima_384 = iMA(NULL, PERIOD_M15, 100, 0, MODE_EMA, PRICE_CLOSE, 14);
   g_iadx_252 = iADX(NULL, PERIOD_H1, 2, PRICE_CLOSE, MODE_PLUSDI, 0);
   g_iadx_260 = iADX(NULL, PERIOD_H1, 2, PRICE_CLOSE, MODE_MINUSDI, 0);
   g_iadx_268 = iADX(NULL, PERIOD_M30, 2, PRICE_CLOSE, MODE_PLUSDI, 0);
   g_iadx_276 = iADX(NULL, PERIOD_M30, 2, PRICE_CLOSE, MODE_MINUSDI, 0);
   g_iadx_284 = iADX(NULL, PERIOD_M15, 2, PRICE_CLOSE, MODE_PLUSDI, 1);
   g_iadx_292 = iADX(NULL, PERIOD_M15, 2, PRICE_CLOSE, MODE_MINUSDI, 1);
   g_iadx_300 = iADX(NULL, PERIOD_M15, 2, PRICE_CLOSE, MODE_PLUSDI, 2);
   g_iadx_308 = iADX(NULL, PERIOD_M15, 2, PRICE_CLOSE, MODE_MINUSDI, 2);
   int l_ord_total_4 = OrdersTotal();
   if (Close[1] > g_ima_224 && Close[0] > g_ima_216 || Close[1] > g_ima_224 && Close[0] > g_ima_216) {
      if (g_count_512 < 1 && g_iopen_372 != iOpen(Symbol(), PERIOD_M15, 0)) {
         g_price_476 = Ask - StopLoss * g_point_500;
         g_price_484 = Ask + TakeProfit * g_point_500;
         if (USBroker? == "N" || USBroker? == "n") {
            g_ticket_364 = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, g_price_476, g_price_484, "Cash Engine", MAGIC_NO, 0, Green);
            gd_unused_332 = gda_248[1];
            gi_316 = TRUE;
            g_iopen_372 = iOpen(Symbol(), PERIOD_M15, 0);
            g_count_512++;
         } else {
            if (USBroker? == "Y" || USBroker? == "y") {
               g_ticket_364 = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, "Cash Engine", MAGIC_NO, 0, Green);
               gd_unused_332 = gda_248[1];
               gi_316 = TRUE;
               g_iopen_372 = iOpen(Symbol(), PERIOD_M15, 0);
               g_count_512++;
            }
         }
      }
   }
   if (Close[1] < g_ima_224 && Close[0] < g_ima_216 || Close[1] < g_ima_224 && Close[0] < g_ima_216) {
      if (g_count_512 < 1 && g_iopen_372 != iOpen(Symbol(), PERIOD_M15, 0)) {
         g_price_476 = Bid + StopLoss * g_point_500;
         g_price_484 = Bid - TakeProfit * g_point_500;
         if (USBroker? == "N" || USBroker? == "n") {
            g_ticket_368 = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, g_price_476, g_price_484, "Cash Engine", MAGIC_NO, 0, Red);
            gd_unused_340 = gda_248[1];
            gi_320 = TRUE;
            g_iopen_372 = iOpen(Symbol(), PERIOD_M15, 0);
            g_count_512++;
         } else {
            if (USBroker? == "Y" || USBroker? == "y") {
               g_ticket_368 = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, "Cash Engine", MAGIC_NO, 0, Red);
               gd_unused_340 = gda_248[1];
               gi_320 = TRUE;
               g_iopen_372 = iOpen(Symbol(), PERIOD_M15, 0);
               g_count_512++;
            }
         }
      }
   }
   g_ord_total_392 = OrdersTotal();
   if (Bid <= g_price_476 || Bid >= g_price_484 && gi_316 == TRUE) {
      for (int li_8 = 1; li_8 <= g_ord_total_392; li_8++) {
         OrderSelect(li_8 - 1, SELECT_BY_POS);
         if (OrderMagicNumber() == MAGIC_NO && OrderSymbol() == Symbol() && OrderType() == OP_BUY) {
            if (USBroker? == "N" || USBroker? == "n") {
               OrderClose(OrderTicket(), OrderLots(), Bid, 3, Green);
               g_count_512 = 0;
            } else {
               if (USBroker? == "Y" || USBroker? == "y") {
                  OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, "Cash Engine", MAGIC_NO, 0, Red);
                  g_count_512 = 0;
               }
            }
         }
      }
      gi_316 = FALSE;
      g_price_476 = 0;
      g_price_484 = 0;
   }
   if (Ask >= g_price_476 || Ask <= g_price_484 && gi_320 == TRUE) {
      for (int li_12 = 1; li_12 <= g_ord_total_392; li_12++) {
         OrderSelect(li_12 - 1, SELECT_BY_POS);
         if (OrderMagicNumber() == MAGIC_NO && OrderSymbol() == Symbol() && OrderType() == OP_SELL) {
            if (USBroker? == "N" || USBroker? == "n") {
               OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
               g_count_512 = 0;
            } else {
               if (USBroker? == "Y" || USBroker? == "y") {
                  OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, "Cash Engine", MAGIC_NO, 0, Green);
                  g_count_512 = 0;
               }
            }
         }
      }
      gi_320 = FALSE;
      g_price_476 = 0;
      g_price_484 = 0;
   }
}
*/
int start() {
 //  if (Scalping == "n" || Scalping == "N") pivotpoint();
 //  else
 //     if (Scalping == "y" || Scalping == "Y") eurobroker();
  // return (0);

if(Time[0] == prevtime) return(0);//ждем появления нового бара
prevtime = Time[0];//если появился новый бар, начинаем работу

 //Scalping
   for (int li_0 = 1; li_0 <= 8; li_0++) {
      gda_248[li_0] = iMA(NULL, PERIOD_M15, 14, 0, MODE_EMA, PRICE_CLOSE, li_0);
      if (li_0 <= 6) gda_244[li_0] = iMA(NULL, PERIOD_M30, 14, 0, MODE_EMA, PRICE_CLOSE, li_0);
      if (li_0 <= 3) gda_240[li_0] = iMA(NULL, PERIOD_H1, 14, 0, MODE_EMA, PRICE_CLOSE, li_0);
   }
   g_ima_216 = iMA(NULL, PERIOD_M15, 14, 0, MODE_EMA, PRICE_CLOSE, 0);
   g_ima_224 = iMA(NULL, PERIOD_M15, 14, 0, MODE_EMA, PRICE_CLOSE, 1);
   g_ima_376 = iMA(NULL, PERIOD_M15, 100, 0, MODE_EMA, PRICE_CLOSE, 1);
   g_ima_384 = iMA(NULL, PERIOD_M15, 100, 0, MODE_EMA, PRICE_CLOSE, 14);
   g_iadx_252 = iADX(NULL, PERIOD_H1, 2, PRICE_CLOSE, MODE_PLUSDI, 0);
   g_iadx_260 = iADX(NULL, PERIOD_H1, 2, PRICE_CLOSE, MODE_MINUSDI, 0);
   g_iadx_268 = iADX(NULL, PERIOD_M30, 2, PRICE_CLOSE, MODE_PLUSDI, 0);
   g_iadx_276 = iADX(NULL, PERIOD_M30, 2, PRICE_CLOSE, MODE_MINUSDI, 0);
   g_iadx_284 = iADX(NULL, PERIOD_M15, 2, PRICE_CLOSE, MODE_PLUSDI, 1);
   g_iadx_292 = iADX(NULL, PERIOD_M15, 2, PRICE_CLOSE, MODE_MINUSDI, 1);
   g_iadx_300 = iADX(NULL, PERIOD_M15, 2, PRICE_CLOSE, MODE_PLUSDI, 2);
   g_iadx_308 = iADX(NULL, PERIOD_M15, 2, PRICE_CLOSE, MODE_MINUSDI, 2);
   int l_ord_total_4 = OrdersTotal();
   if (Close[1] > g_ima_224 && Close[0] > g_ima_216 || Close[1] > g_ima_224 && Close[0] > g_ima_216) {
      if (g_count_512 < 50 && g_iopen_372 != iOpen(Symbol(), PERIOD_M15, 0)) {
         g_price_476 = Ask - StopLoss * g_point_500;
         g_price_484 = Ask + TakeProfit * g_point_500;
         if (USBroker? == "N" || USBroker? == "n") {
            g_ticket_364 = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, g_price_476, g_price_484, "Cash Engine", MAGIC_NO, 0, Green);
            gd_unused_332 = gda_248[1];
            gi_316 = TRUE;
            g_iopen_372 = iOpen(Symbol(), PERIOD_M15, 0);
            g_count_512=0;
            //g_count_512++;
         } else {
            if (USBroker? == "Y" || USBroker? == "y") {
               g_ticket_364 = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, "Cash Engine", MAGIC_NO, 0, Green);
               gd_unused_332 = gda_248[1];
               gi_316 = TRUE;
               g_iopen_372 = iOpen(Symbol(), PERIOD_M15, 0);
               g_count_512=0;
              // g_count_512++;
            }
         }
      }
   }
   if (Close[1] < g_ima_224 && Close[0] < g_ima_216 || Close[1] < g_ima_224 && Close[0] < g_ima_216) {
      if (g_count_512 < 50 && g_iopen_372 != iOpen(Symbol(), PERIOD_M15, 0)) {
         g_price_476 = NormalizeDouble(Bid + (StopLoss * g_point_500),Digits);
         g_price_484 = NormalizeDouble(Bid - (TakeProfit * g_point_500),Digits);
         if (USBroker? == "N" || USBroker? == "n") {
            g_ticket_368 = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, g_price_476, g_price_484, "Cash Engine", MAGIC_NO, 0, Red);
            gd_unused_340 = gda_248[1];
            gi_320 = TRUE;
            g_iopen_372 = iOpen(Symbol(), PERIOD_M15, 0);
            g_count_512=0;
            // g_count_512++;
         } else {
            if (USBroker? == "Y" || USBroker? == "y") {
               g_ticket_368 = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, "Cash Engine", MAGIC_NO, 0, Red);
               gd_unused_340 = gda_248[1];
               gi_320 = TRUE;
               g_iopen_372 = iOpen(Symbol(), PERIOD_M15, 0);
               //g_count_512++;
               g_count_512=0;
            }
         }
      }
   }
  /* g_ord_total_392 = OrdersTotal();
   if (Bid <= g_price_476 || Bid >= g_price_484 && gi_316 == TRUE) {
      for (int li_8 = 1; li_8 <= g_ord_total_392; li_8++) {
         OrderSelect(li_8 - 1, SELECT_BY_POS);
         if (OrderMagicNumber() == MAGIC_NO && OrderSymbol() == Symbol() && OrderType() == OP_BUY) {
            if (USBroker? == "N" || USBroker? == "n") {
               OrderClose(OrderTicket(), OrderLots(), Bid, 3, Green);
               g_count_512 = 0;
            } else {
               if (USBroker? == "Y" || USBroker? == "y") {
                  OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, "Cash Engine", MAGIC_NO, 0, Red);
                  g_count_512 = 0;
               }
            }
         }
      }
      gi_316 = FALSE;
      g_price_476 = 0;
      g_price_484 = 0;
   }
   if (Ask >= g_price_476 || Ask <= g_price_484 && gi_320 == TRUE) {
      for (int li_12 = 1; li_12 <= g_ord_total_392; li_12++) {
         OrderSelect(li_12 - 1, SELECT_BY_POS);
         if (OrderMagicNumber() == MAGIC_NO && OrderSymbol() == Symbol() && OrderType() == OP_SELL) {
            if (USBroker? == "N" || USBroker? == "n") {
               OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
               g_count_512 = 0;
            } else {
               if (USBroker? == "Y" || USBroker? == "y") {
                  OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, "Cash Engine", MAGIC_NO, 0, Green);
                  g_count_512 = 0;
               }
            }
         }
      }
      gi_320 = FALSE;
      g_price_476 = 0;
      g_price_484 = 0;
   }
*/

}