//+------------------------------------------------------------------+
//|                                                     JobJobos.mq4 |
//|                                                             Ugar |
//|                                                     Ugar68@bk.ru |
//+------------------------------------------------------------------+
#property copyright "Ugar"
#property link      "Ugar68@bk.ru"
#property strict
#property version   "1.00"
//--- input parameters
extern int       SL=20;
extern int       TP=20;
extern int       Trailing=10;
extern bool      NowBarAfterProfit=true;
extern double    Lot=0.1;
extern int       Slippage=3;
extern int       Magic=120428;
//+------------------------------------------------------------------+
//Ïåðåìåííûå íà ãëîáàëüíîì óðîâíå
string _name;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   _name=WindowExpertName();//Èìÿ ñîâåòíèêà
   NowBar(0,true);//èíèöèàëèçàöèÿ ôóíêöèè íîâîãî áàðà
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//+------------------------------------------------------------------+
//Ïåðåìåííûå
   static double Heiken51,Heiken52;
   double Heiken151,Heiken152,Heiken301,Heiken302,Heiken601,Heiken602;
   double lot,sl=0,tp=0,op=0,oop,osl;
   int Signal=0,Spread,StopLevel,total,i,ticket,orders=0,LastHistOrder,cmd=0;
   static int Signal_;
   string SignalStr="íåò",SignalStr5,SignalStr15,SignalStr30,SignalStr60,alerts;
   bool OrderSendRun=false,nowbar;
   color arrow=Blue;
//+------------------------------------------------------------------+
//Ñïðåä, ìèíèìàëüíûé ñòîï è ïðîâåðêà êîððåêòíîñòè ñòîïîâ
//Ñïðåä
   Spread=(int)MarketInfo(Symbol(),MODE_SPREAD);
//Stoplevel
   StopLevel=(int)MathMax(Spread,MarketInfo(Symbol(),MODE_STOPLEVEL))+Spread+1;
//Ïðîâåðêà íà êîððåêòíîñòü SL
   if(SL<=StopLevel)
     {
      alerts=StringConcatenate("SL äîæåí áûòü áîëüøå StopLevel ",StopLevel);
      Alert(alerts);
     }
//Ïðîâåðêà íà êîððåêòíîñòü TP
   if(TP<=StopLevel)
     {
      alerts=StringConcatenate("TP äîæåí áûòü áîëüøå StopLevel ",StopLevel);
      Alert(alerts);
     }
//+------------------------------------------------------------------+
//Íîâûé áàð íà Ì5
   nowbar=NowBar(5,false);
//+------------------------------------------------------------------+
//Èíäèêàòîðû
//Íà M5 èíäèêàòîð âûçûâàåòñÿ îäèí ðàç çà áàð
   if(nowbar)
     {
      Heiken51=iCustom(NULL,5,"Heiken Ashi",2,1);
      Heiken52=iCustom(NULL,5,"Heiken Ashi",3,1);
     }
//èíäèêàòîð íà M15
   Heiken151=iCustom(NULL,15,"Heiken Ashi",2,0);
   Heiken152=iCustom(NULL,15,"Heiken Ashi",3,0);
//èíäèêàòîð íà M30
   Heiken301=iCustom(NULL,30,"Heiken Ashi",2,0);
   Heiken302=iCustom(NULL,30,"Heiken Ashi",3,0);
//èíäèêàòîð íà M60
   Heiken601=iCustom(NULL,60,"Heiken Ashi",2,0);
   Heiken602=iCustom(NULL,60,"Heiken Ashi",3,0);
//+------------------------------------------------------------------+
//Ñèãíàëû
   SignalStr5=signal(Heiken52,Heiken51);
   SignalStr15=signal(Heiken152,Heiken151);
   SignalStr30=signal(Heiken302,Heiken301);
   SignalStr60=signal(Heiken602,Heiken601);
//Îáùèé ñèãíàë
   if(Heiken51<Heiken52 && Heiken151<Heiken152 && Heiken301<Heiken302 && Heiken601<Heiken602)
     {
      Signal=1;
      SignalStr="Buy";
     }
//Îáùèé ñèãíàë
   if(Heiken51>Heiken52 && Heiken151>Heiken152 && Heiken301>Heiken302 && Heiken601>Heiken602)
     {
      Signal=-1;
      SignalStr="Sell";
     }
//Îòîáðàæåíèå ïîêàçàíèé èíäèêàòîðîâ è ñèãíàëîâ
   alerts=StringConcatenate("Heiken Ashi íà",
                            "\n","M5   "+SignalStr5,
                            "\n","M15 ",SignalStr15,
                            "\n","M30 ",SignalStr30,
                            "\n","M60 ",SignalStr60,
                            "\n","Îáùèé ñèãíàë ",SignalStr);
   Comment(alerts);
//+------------------------------------------------------------------+
//ïðîâåðêà ñâÿçè
   if(!DCOk(30))return(0);
//+------------------------------------------------------------------+
//Ïðîâåðêà íàëè÷èÿ îòêðûòûõ îðäåðîâ è óïðàâëåíèå èìè
//ïîñëåäíèé íîìåð îðäåðà
   total=OrdersTotal()-1;
//öèêë ïåðåáîðà îðäåðîâ
   for(i=total; i>=0; i--)
     {
      //Âûáîð îðäåðà
      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         Print("Îðäåð íå âûáðàí, îøèáêà = ",GetLastError());
         return(0);
        }
      //Åñëè îðäåð ÷óæîãî ìàäæèêà èëè ñèìâîëà, ïðîïóñòèòü.
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic)continue;
      //Öåíà îòêðûòèÿ îðäåðà
      oop=OrderOpenPrice();
      //Ñòîï îðäåðà
      osl=OrderStopLoss();
      //Óïðàâëåíèå Buy îðäåðàìè
      if(OrderType()==OP_BUY)
        {
         //Åñòü îðäåð
         orders++;
         //Åñëè òðåéëèíã ðàçðåøîí
         if(Trailing>0)
           {
            //ñòîï äëÿ òðåéëèíãà
            sl=sltp(Trailing,Bid,-1);
            //Óñëîâèå äëÿ òðåéëèíãà
            if(sl>oop+0.5*Point && sl>osl+0.5*Point)
              {
               //Ìîäèôèêàöèÿ îðäåðà äëÿ òðåéëèíãà
               if(!OrderModify(OrderTicket(),NormalizeDouble(oop,Digits),
                  NormalizeDouble(sl,Digits),OrderTakeProfit(),0,Blue))
                 {
                  //Åñëè îðäåð íå ìîäèôèöèðîâàëñÿ, ïå÷àòü îøèáêè è âûõîä ïîñëå ïàóçû
                  Sleep(ErrorTime());
                 }
              }
           }
        }
      //Óïðàâëåíèå Sell îðäåðàìè
      if(OrderType()==OP_SELL)
        {
         //Åñòü îðäåð
         orders++;
         //Åñëè òðåéëèíã ðàçðåøîí
         if(Trailing>0)
           {
            //ñòîï äëÿ òðåéëèíãà
            sl=sltp(Trailing,Ask,1);
            //Óñëîâèå äëÿ òðåéëèíãà
            if(sl<oop-0.5*Point && sl<osl-0.5*Point)
              {
               //Ìîäèôèêàöèÿ îðäåðà äëÿ òðåéëèíãà
               if(!OrderModify(OrderTicket(),NormalizeDouble(oop,Digits),
                  NormalizeDouble(sl,Digits),OrderTakeProfit(),0,Red))
                 {
                  //Åñëè îðäåð íå ìîäèôèöèðîâàëñÿ, ïå÷àòü îøèáêè è âûõîä ïîñëå ïàóçû
                  Sleep(ErrorTime());
                 }
              }
           }
        }
     }
//+------------------------------------------------------------------+
//Åñëè åñòü îòêðûòûå îðäåðà èëè íåò ñèãíàëà, âûõîä
//Åñëè åñòü îòêðûòûå îðäåðà
   if(orders>0)
     {
      //Ñáðîñ ñèãíàëà îòêðûòèÿ
      Signal_=0;
      return(0);
     }
//Åñëè íåò ñèãíàëà, âûõîä
   if(Signal==0)return(0);
//+------------------------------------------------------------------+
//Ïîèñê ïîñëåäíåãî èñòîðè÷åñêîãî îðäåðà è ïðîâåðêà åãî ïðîôèòà
//Ëîò ïî óìîë÷àíèþ
   lot=Lot;
//Ïîèñê ïîñëåäíåãî èñòîðè÷åñêîãî îðäåðà
   LastHistOrder=LastHistotyOrder(Symbol(),Magic);
//åñëè îðäåð íàéäåí
   if(LastHistOrder>=0)
     {
      //Âûáîð îðäåðà
      int res=OrderSelect(LastHistOrder,SELECT_BY_TICKET);
      //Åñëè ïðèáûëü îðäåðà îòðèöàòåëüíàÿ òî ëîò ïî ìàðòèíãåéëó
      if(OrderProfit()<0)lot=OrderLots()*2;
      //Åñëè ïðèáûëü >0, åñòü ñèãíàë, åñòü íîâûé áàð, íåò ñèãíàëà îòêðûòèÿ 
      //è ðåæèì NowBarAfterProfit ïðèñâîèòü ñèãíàëó îòêðûòèÿ ñèãíàë èíäèêàòîðà
      if(OrderProfit()>0 && Signal!=0 && nowbar && Signal_==0 && NowBarAfterProfit)
        {
         Signal_=Signal;
        }
      if(OrderProfit()<0)Signal_=Signal;
     }
//Åñëè èñòîðè÷åñêèé îðäåð íå íàéäåí èëè NowBarAfterProfit=false, èëè ïðîôèò <0
//ïðèñâîèòü ñèãíàëó îòêðûòèÿ ñèãíàë èíäèêàòîðà
   if(LastHistOrder<0 || !NowBarAfterProfit)Signal_=Signal;
//+------------------------------------------------------------------+
//ïðîâåðêà ñâÿçè
   if(!DCOk(30))return(0);
//+------------------------------------------------------------------+
//Îòêðûòèå îðäåðîâ
//Ïàðàìåòðû äëÿ Buy îðäåðîâ
   if(Signal_>0)
     {
      op=Ask;
      sl=sltp(SL,op,-1);
      tp=sltp(TP,op,1);
      cmd=OP_BUY;
      arrow=Blue;
      OrderSendRun=true;
     }
//Ïàðàìåòðû äëÿ Sell îðäåðîâ
   if(Signal_<0)
     {
      op=Bid;
      sl=sltp(SL,op,1);
      tp=sltp(TP,op,-1);
      cmd=OP_SELL;
      arrow=Red;
      OrderSendRun=true;
     }
//Îòêðûòèå îðäåðà
   if(OrderSendRun)
     {
      ticket=OrderSend(Symbol(),cmd,lot,NormalizeDouble(op,Digits),Slippage,
                       NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),_name,Magic,0,arrow);
      //Åñëè îðäåð íå îòêðûëñÿ, ïå÷àòü îøèáêè è âûõîä ïîñëå ïàóçû
      if(ticket<0)Sleep(ErrorTime());
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//Ôóíêöèÿ ñðàâíåíèÿ çíà÷åíèé èíäèêàòîðà. Âîçâðàùàåò "áåëûé" åñëè äëÿ Buy íàïðàâëåíèÿ
//"êðàñíûé" äëÿ Sell íàïðàâëåíèÿ
string signal(double fast,double slow)
  {
   string ret="íåò";
   if(fast>slow)ret="áåëûé";
   if(fast<slow)ret="êðàñíûé";
   return(ret);
  }
//+------------------------------------------------------------------+
//| Ôóíêöèÿ îò Ugar eMail:ugar68@bk.ru                               |
/*+------------------------------------------------------------------+
Ôóíêöèÿ íîâîãî áàðà. 
Âîçâðàùàåò true ïðè ïåðâîì âûçîâå ôóíêöèè ïîñëå ïîÿâëåíèÿ íîâîãî áàðà çàäàííîãî òàéì ôðåéìà, 
èíà÷å false.
timeframe - òàéìôðåéì
initialization true ñáðîñ ñòàòè÷åñêîé ïåðåìåííîé âðåìåíè, false ðàáîòà*/
bool NowBar(int timeframe,bool initialization)
  {
   bool ret=false;
   static datetime LastTime;
   datetime TimeOpenBar;
   if(initialization)LastTime=0;
   else
     {
      TimeOpenBar=iTime(NULL,timeframe,0);
      if(LastTime!=TimeOpenBar)ret=true;
      LastTime=TimeOpenBar;
     }
   return(ret);
  }
//+------------------------------------------------------------------+
//|Ôóíêöèÿ îò Ugar eMail:ugar68@bk.ru                                |
//+------------------------------------------------------------------+
//Ôóíêöèÿ ïå÷àòàåò îøèáêó èñïîëíåíèÿ ïðèêàçà è âîçâðàùàåò âðåìÿ çàäåðæêè íà ïîâòîíîå èñïîëíåíèå
// ñëó÷àå áåñïîëåçíîãî ïîâòîðà ïîïûòîê âîçâðàùàåò 60000.
int ErrorTime()
  {
   int err=GetLastError();
   int sec= 0,s,c;
   switch(err)
     {
      case    0: sec=0;
      break;
      case    1:
        {
         Print("Îøèáêà: 1 - ïîïûòêà èçìåíèòü óæå óñòàíîâëåííûå çíà÷åíèÿ òàêèìè æå çíà÷åíèÿìè");
         sec=0;
         break;
        }
      case    2:
        {
         Print("Îøèáêà: 2 - Îáùàÿ îøèáêà. Ïðåêðàòèòü âñå ïîïûòêè òîðãîâûõ îïåðàöèé äî âûÿñíåíèÿ îáñòîÿòåëüñòâ.");
         sec=60000;
         break;
        }
      case    3:
        {
         Print("Îøèáêà: 3 - Â òîðãîâóþ ôóíêöèþ ïåðåäàíû íåïðàâèëüíûå ïàðàìåòðû. Íåîáõîäèìî èçìåíèòü ëîãèêó ïðîãðàììû.");
         sec=60000;
         break;
        }
      case    4:
        {
         Print("Îøèáêà: 4 - Òîðãîâûé ñåðâåð çàíÿò. Ìîæíî ïîâòîðèòü ïîïûòêó ÷åðåç äîñòàòî÷íî áîëüøîé ïðîìåæóòîê âðåìåíè");
         sec=60000;
         break;
        }
      case    5:
        {
         Print("Îøèáêà: 5 - Ñòàðàÿ âåðñèÿ êëèåíòñêîãî òåðìèíàëà.");
         sec=60000;
         break;
        }
      case    6:
        {
         Print("Îøèáêà: 6 - Íåò ñâÿçè ñ òîðãîâûì ñåðâåðîì.");
         for(c=0;c<36000;c++)
           {
            if(IsConnected())
              {
               sec=0;
               break;
              }
            Sleep(100);
           }
         if(c==36000)
           {
            sec=5000;
           }
         break;
        }
      case    8:
        {
         Print("Îøèáêà: 8 - Ñëèøêîì ÷àñòûå çàïðîñû. ");
         sec=60000;
         break;
        }
      case   64:
        {
         Print("Îøèáêà: 64 - Ñ÷åò çàáëîêèðîâàí.");
         sec=60000;
         break;
        }
      case   65:
        {
         Print("Îøèáêà: 65 - Íåïðàâèëüíûé íîìåð ñ÷åòà. ");
         sec=60000;
         break;
        }
      case  128:
        {
         Print("Îøèáêà: 128 - Èñòåê ñðîê îæèäàíèÿ ñîâåðøåíèÿ ñäåëêè.");
         sec=60000;
         break;
        }
      case  129:
        {
         Print("Îøèáêà: 129 - Íåïðàâèëüíàÿ öåíà bid èëè ask, âîçìîæíî, íåíîðìàëèçîâàííàÿ öåíà.");
         sec=5000;
         break;
        }
      case  130:
        {
         Print("Îøèáêà: 130 - Ñëèøêîì áëèçêèå ñòîïû èëè íåïðàâèëüíî ðàññ÷èòàííûå èëè íåíîðìàëèçîâàííûå öåíû â ñòîïàõ ");
         sec=5000;
         break;
        }
      case  131:
        {
         Print("Îøèáêà: 131 - Íåïðàâèëüíûé îáúåì, îøèáêà â ãðàíóëÿöèè îáúåìà.");
         sec=60000;
         break;
        }
      case  132:
        {
         Print("Îøèáêà: 132 - Ðûíîê çàêðûò.");
         sec=60000;
         break;
        }
      case  133:
        {
         Print("Îøèáêà: 133 - Òîðãîâëÿ çàïðåùåíà. ");
         sec=60000;
         break;
        }
      case  134:
        {
         Print("Îøèáêà: 134 - Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè.");
         sec=60000;
         break;
        }
      case  135:
        {
         Print("Îøèáêà: 135 - Öåíà èçìåíèëàñü.");
         sec=0;
         break;
        }
      case  136:
        {
         Print("Îøèáêà: 136 - Íåò öåí. Áðîêåð ïî êàêîé-òî ïðè÷èíå (íàïðèìåð, â íà÷àëå ñåññèè öåí íåò, íåïîäòâåðæäåííûå öåíû, áûñòðûé ðûíîê) íå äàë öåí èëè îòêàçàë.");
         sec=5000;
         break;
        }
      case  138:
        {
         Print("Îøèáêà: 138 - Çàïðîøåííàÿ öåíà óñòàðåëà, ëèáî ïåðåïóòàíû bid è ask.");
         sec=0;
         break;
        }
      case  139:
        {
         Print("Îøèáêà: 139 - Îðäåð çàáëîêèðîâàí è óæå îáðàáàòûâàåòñÿ.");
         sec=0;
         break;
        }
      case  140:
        {
         Print("Îøèáêà: 140 - Ðàçðåøåíà òîëüêî ïîêóïêà.");
         sec=0;
         break;
        }
      case  141:
        {
         Print("Îøèáêà: 141 - Ñëèøêîì ìíîãî çàïðîñîâ.");
         sec=3000;
         break;
        }
      case  142:
        {
         Print("Îøèáêà: 142 - Îðäåð ïîñòàâëåí â î÷åðåäü. Ýòî íå îøèáêà, à îäèí èç êîäîâ âçàèìîäåéñòâèÿ ìåæäó êëèåíòñêèì òåðìèíàëîì è òîðãîâûì ñåðâåðîì. ");
         sec=0;
         break;
        }
      case  143:
        {
         Print("Îøèáêà: 143 - Îðäåð ïðèíÿò äèëåðîì ê èñïîëíåíèþ. Îäèí èç êîäîâ âçàèìîäåéñòâèÿ ìåæäó êëèåíòñêèì òåðìèíàëîì è òîðãîâûì ñåðâåðîì.");
         sec=0;
         break;
        }
      case  144:
        {
         Print("Îøèáêà: 144 - Îðäåð àííóëèðîâàí ñàìèì êëèåíòîì ïðè ðó÷íîì ïîäòâåðæäåíèè ñäåëêè. ");
         sec=30000;
         break;
        }
      case  145:
        {
         Print("Îøèáêà: 145 - Ìîäèôèêàöèÿ çàïðåùåíà, òàê êàê îðäåð ñëèøêîì áëèçîê ê ðûíêó è çàáëîêèðîâàí èç-çà âîçìîæíîãî ñêîðîãî èñïîëíåíèÿ.");
         sec=15000;
         break;
        }
      case  146:
        {
         Print("Îøèáêà: 146 - Ïîäñèñòåìà òîðãîâëè çàíÿòà.");
         for(s=0;s<36000;s++)
           {
            if(!IsTradeContextBusy())
              {
               sec=0;
               break;
              }
            Sleep(100);
           }
         if(s==36000)
           {
            sec=60000;
           }
         break;
        }
      case  147:
        {
         Print("Îøèáêà: 147 - Èñïîëüçîâàíèå äàòû èñòå÷åíèÿ îðäåðà çàïðåùåíî áðîêåðîì.");
         sec=60000;
         break;
        }
      case  148:
        {
         Print("Îøèáêà: 148 - Êîëè÷åñòâî îòêðûòûõ è îòëîæåííûõ îðäåðîâ äîñòèãëî ïðåäåëà, óñòàíîâëåííîãî áðîêåðîì.");
         sec=60000;
         break;
        }
      case  149:
        {
         Print("Îøèáêà: 149 - Ïîïûòêà îòêðûòü ïðîòèâîïîëîæíóþ ïîçèöèþ ê óæå ñóùåñòâóþùåé â ñëó÷àå, åñëè õåäæèðîâàíèå çàïðåùåíî.");
         sec=60000;
         break;
        }
      case  150:
        {
         Print("Îøèáêà: 150 - Ïîïûòêà çàêðûòü ïîçèöèþ ïî èíñòðóìåíòó â ïðîòèâîðå÷èè ñ ïðàâèëîì FIFO. Ñíà÷àëà íåîáõîäèìî çàêðûòü áîëåå ðàííèå ñóùåñòâóþùèå ïîçèöèè ");
         sec=60000;
         break;
        }
      default: Print("Íåèçâåñòíàÿ îøèáêà");
      break;
     }
   return(sec);
  }
//+------------------------------------------------------------------+
//|Ôóíêöèÿ îò Ugar eMail:ugar68@bk.ru                                |
//+------------------------------------------------------------------+
/*Ôóíêöèÿ ïðîâåðÿåò ôîçìîæíîñòü âûïîëíåíèÿ ïðèêàçîâ âîçâðàùàåò true åñëè âñ¸ â ïîðÿäêå 
åñëè ÷òî òî íå â ïîðÿäêå ïèøåò ïðè÷èíó è âûäåðæèâàåò ïàóçó â 0.1 ñåêóíäû è ïîâòîðÿåò ïðîâåðêè
Åñëè â òå÷åíèè çàäàííîãî êîëè÷åñòâà ñåêóíä sec ñèòóàöèÿ íå íîðìàëèçîâàëàñü âîçâðâùàåò false
*/
bool DCOk(int sec)
  {
   bool ok=true,conn=true,trade=true;
   int s=sec*10;
   if(IsTesting() || IsOptimization())return(ok);
   for(int n=0;n<s;n++)
     {
      ok=true;
      conn=true;
      trade=true;
      if(!IsConnected())
        {
         //Print("Íåò ñâÿçè ñ ñåðâåðîì");
         ok=false;
         conn=false;
         Sleep(100);
         continue;
        }
      if(!IsTradeAllowed())
        {
         //Print("Òîðãîâûé ïîòîê çàíÿò èëè ñîâåòíèêó çàïðåùåíà òîðãîâëÿ");
         ok=false;
         trade=false;
         Sleep(100);
         continue;
        }
     }
   if(!conn)Print("Íåò ñâÿçè ñ ñåðâåðîì");
   if(!trade)Print("Òîðãîâûé ïîòîê çàíÿò èëè ñîâåòíèêó çàïðåùåíà òîðãîâëÿ");
   if(ok)RefreshRates();
   return(ok);
  }
//+------------------------------------------------------------------+
//|Ôóíêöèÿ îò Ugar eMail:ugar68@bk.ru                                |
//+------------------------------------------------------------------+
//Ôóíêöèÿ íàõîäèò ïîñëåäíèé èñòîðè÷åñêèé îðäåð è âîçâðàùàåò åãî òèêåò. Åñëè íå íàõîäèò 
//èñòîðè÷åñêèõ îðäåðîâ âîçâðàùàåò -1
/*
symb - ñèìâîë, All- âñå ñèìâîëû
mag - ìàäæèê íîìåð, -1 -ëþáîé
*/
int LastHistotyOrder(string symb,int mag)
  {
   datetime opentime=0;
   int ticket=-1;
   int hist=OrdersHistoryTotal();
   for(int p=hist-1; p>=0; p--)
     {
      if(!OrderSelect(p,SELECT_BY_POS,MODE_HISTORY))
        {
         Print("Îðäåð íå âûáðàí, îøèáêà = ",GetLastError());
        }
      if(symb!="All" && OrderSymbol()!=Symbol())continue;
      if(mag>=0 && OrderMagicNumber()!=mag)continue;
      if(opentime<OrderCloseTime())
        {
         opentime=OrderCloseTime();
         ticket=OrderTicket();
        }
     }
   return(ticket);
  }
//+------------------------------------------------------------------+
//|Ôóíêöèÿ îò Ugar eMail:ugar68@bk.ru                                |
//+------------------------------------------------------------------+
/*Ïðîñòîé ñòîïëîññ òåéêïðîôèò â ïóíêòàõ
po - ðàññòîÿíèå äî óðîâíÿ çàêðûòèÿ â ïóíêòàõ, åñëè =0 áåç óðîâíÿ
pr - öåíà îòêðûòèÿ
direct - íàïðàâëåíèå óðîâíÿ. 1 - ââåðõ, -1 âíèç, 0- íåò
*/
double sltp(int po,double pr,int direct)
  {
   if(po==0 || direct==0)return(0);
   double step=MarketInfo(Symbol(),17);
   if(direct==1)return(MathRound((pr+po*Point)/step)*step);
   if(direct==-1)return(MathRound((pr-po*Point)/step)*step);
   return(0);
  }
//+------------------------------------------------------------------+
             
            
            
Comments