//+------------------------------------------------------------------+
//|                                               TOP_EA_Current.mq4 |
//|                                                           mql_EA |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "mql_EA"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict


enum pair
  {
   BUY,
   SELL,
  };

input pair BuyOrSell = BUY;
input ENUM_TIMEFRAMES Time_Frame=PERIOD_CURRENT;
input double Lot_1=0.01;
input double Lot_2=0.01;
input double Lot_3=0.01;
input double Take_Profit_pips=50; // Take_Profit_Points
input double Stop_Loss_pips=50; // Stop_Loss_Points
input int Magic_Number=1;
input bool Use_Time_Filter=false;
input string Time_Start="15:010";
input string Time_End="22:30";
input string Comment_fot_Trade="EA";
//////
string indicator_settings_Setting="<===indicator_settings_Setting===>";

 //@josseey5050

double lorttter=0;
int numberr=0;
double looott=0;

int modder=0;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
datetime itimees=iTime(Symbol(),PERIOD_CURRENT,0);
long timmmer=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
//   if(itimees != iTime(Symbol(),Time_Frame,0))
     {
      // itimees=iTime(Symbol(),Time_Frame,0);


      check_clossing();
      //  Sleep(100);
      // RefreshRates();
      if(Hourfilter() == true && pos() == 0)
         check_to_open();
     }

  }
//+------------------------------------------------------------------+
//|  Function close                                                  |
//+------------------------------------------------------------------+
void oitiket(int order,double lottt,double tppp)
  {
   double lotsizee=lottt;
   if(order == 0)
     {
      double takp=0;
      double stla=0;

      // if(Take_Profit_pips != 0)
      takp=tppp;
      //  if(Stop_Loss_pips != 0)
      //  stla=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-(Stop_Loss_pips*Point());

      int buy01= OrderSend(Symbol(),OP_BUY,lotsizee,SymbolInfoDouble(Symbol(),SYMBOL_ASK),10000,stla,takp,"Normal",Magic_Number,5000,clrAliceBlue);

     }

//////

   if(order == 1)
     {
      double takp1=0;
      double stla1=0;

      //if(Take_Profit_pips != 0)
      takp1=tppp;
      // if(Stop_Loss_pips != 0)
      //  stla1=SymbolInfoDouble(Symbol(),SYMBOL_BID)+(Stop_Loss_pips*Point());

      int buy01= OrderSend(Symbol(),OP_SELL,lotsizee,SymbolInfoDouble(Symbol(),SYMBOL_BID),10000,stla1,takp1,"Normal",Magic_Number,5000,clrAliceBlue);
     }
  }
//+------------------------------------------------------------------+
//|  Function close                                                  |
//+------------------------------------------------------------------+
int pos()
  {
   int num=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol() == Symbol() && OrderMagicNumber()==Magic_Number)
           {
            num++;
           }
        }
     }
   return(num);
  }
//+------------------------------------------------------------------+
//|  Function close                                                  |
//+------------------------------------------------------------------+
void close(int modgder)
  {

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol() == Symbol() && OrderMagicNumber()==Magic_Number && iBarShift(Symbol(),Time_Frame,(datetime)OrderOpenTime()) > 0)
           {
            if(modgder == 0)
              {
               if(OrderType() == OP_BUY )
                  bool yccb =OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),500,clrGreen);
              }
            else
               if(modgder == 1)
                 {
                  if(OrderType() == OP_SELL)
                     bool yccb =OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),500,clrGreen);
                 }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void check_to_open()
  {
   string signal_open=check_indi();
   if(signal_open == "buy")
     {
      double indicator_tp1=iCustom(Symbol(),Time_Frame,"TOP_Ultimate_Breakout__1",BuyOrSell,7,0);
      double indicator_tp2=iCustom(Symbol(),Time_Frame,"TOP_Ultimate_Breakout__1",BuyOrSell,9,0);

      oitiket(0,Lot_1,indicator_tp1);
      oitiket(0,Lot_2,indicator_tp2);
      oitiket(0,Lot_3,0);
     }

   if(signal_open == "sell")
     {
      double indicator_tp1=iCustom(Symbol(),Time_Frame,"TOP_Ultimate_Breakout__1",BuyOrSell,8,0);
      double indicator_tp2=iCustom(Symbol(),Time_Frame,"TOP_Ultimate_Breakout__1",BuyOrSell,10,0);

      oitiket(1,Lot_1,indicator_tp1);
      oitiket(1,Lot_2,indicator_tp2);
      oitiket(1,Lot_3,0);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string check_indi()
  {


   double indicator_11a=iCustom(Symbol(),Time_Frame,"TOP_Ultimate_Breakout__1",BuyOrSell,6,0);
   double indicator_11b=iCustom(Symbol(),Time_Frame,"TOP_Ultimate_Breakout__1",BuyOrSell,6,1);


   if(BuyOrSell == BUY)
     {
      if(indicator_11a == 1 && indicator_11b != 1)
         return("buy");
     }
   else
      if(BuyOrSell == SELL)
        {
         if(indicator_11a == -1 && indicator_11b != -1)
            return("sell");
        }

   return("no");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string podkkkds()
  {
   int num=0;
   int ibafer=0;
   int forcheck=0;
   double last_lot=0;
   numberr=0;
   looott=0;
   for(int i = 0 ; i < OrdersTotal() ; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol() == Symbol() && OrderMagicNumber()==Magic_Number)
           {
            num++;
            forcheck=iBarShift(Symbol(),Time_Frame,(datetime)OrderOpenTime());
            last_lot=OrderLots();
            break;
           }
        }
     }

//

   numberr=num;
   looott=last_lot;
   if(num == 0)
      return("ok");

   if(num > 0 && forcheck > 0)
      return("ok");

   return("no");

  }
//+------------------------------------------------------------------+
//|   spread filter                                                  |
//+------------------------------------------------------------------+
bool Hourfilter()
  {
   if(Use_Time_Filter==false)
      return(true);

   if(Use_Time_Filter==true)
     {
      int houro=10;
      int hourr12=10;

      datetime ttttt=StrToTime(Time_Start);
      datetime ttttt11=StrToTime(Time_End);
      int cccc=TimeHour(ttttt);
      int xxxx=TimeMinute(ttttt);
      //
      int cccc1=TimeHour(ttttt11);
      int xxxx1=TimeMinute(ttttt11);
      //
      if(Hour() == cccc && Minute() >= xxxx)
         houro=0;

      if(Hour() > cccc)
         houro=0;

      if(Hour() == cccc1 && Minute() <= xxxx1)
         hourr12=0;


      if(Hour() < cccc1)
         hourr12=0;

      if(houro == 0 && hourr12 == 0)
         return(true);
     }

   return(false);
  }
//+------------------------------------------------------------------+
//|   spread filter                                                  |
//+------------------------------------------------------------------+
int pos_order()
  {
   lorttter=0;
   int num=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol() == Symbol() && OrderMagicNumber()==Magic_Number)
           {
            if(OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP)
              {
               num++;
               lorttter=OrderLots();
               break;
              }
           }
        }
     }
   return(num);
  }
//+------------------------------------------------------------------+
//|   spread filter                                                  |
//+------------------------------------------------------------------+
void check_clossing()
  {

   double indicator_exit=iCustom(Symbol(),Time_Frame,"TOP_Ultimate_Breakout__1",BuyOrSell,1,0);
   double iloow=iLow(Symbol(),Time_Frame,0);
   double ihigge=iHigh(Symbol(),Time_Frame,0);

   if(BuyOrSell == BUY)
     {
      if(SymbolInfoDouble(Symbol(),SYMBOL_BID) <= indicator_exit)
         close(0);
     }
   else
      if(BuyOrSell == SELL)
        {
         if(SymbolInfoDouble(Symbol(),SYMBOL_ASK) >= indicator_exit)
            close(1);
        }
  }
//+------------------------------------------------------------------+
//|   spread filter                                                  |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
