//+------------------------------------------------------------------+
//|                                                 iK_ex_LinReg.mq4 |
//|                                                      Ivan Katsko |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Ivan Katsko"
#property link      "ICQ:372739628"
//--------------------------------------------------------------- 1 --
#define NONE 0
extern string S3="Öåëü ïðè ïðîáîå îòí. øèðèíû êàíàëà";
extern double t0=2.618;
extern string S4="Èñïîëüçîâàòü äëÿ ðàñ÷¸òà Close,\n åñëè false - High/Low";
extern int StartT=5;
extern int FinishT=23;
extern int useCl=1;
extern int Rev=1;
extern datetime StartDateTime = D'01.01.2010';  //Íà÷àëî ðàáîòû
extern datetime FinishDateTime = D'31.12.2010'; //Êîíåö ðàáîòû
extern double Lots   = 1;            // Æåñòêî çàäàííîå êîëè÷. ëîòîâ ("0" - ñîâåòíèê âûáèðàåò ñàì)
extern double Prots  = 0.07;         // Ïðîöåíò ñâîáîäíûõ ñðåäñòâ
extern int SlipPage     = 3;         // Ïðîñêàëüçûâàíèå êîòèðîêîê - â ïóíêòàõ
 
bool 
     useClose,
     LookInd=true,
     Msg=true,
     New_Bar=false,                  // Ôëàã íîâîãî áàðà 
     Cls=false,                      // Êðèòåðèé äëÿ çàêðûòèÿ
     Work=true,                      // Ýêñïåðò áóäåò ðàáîòàòü.
     First=false,                    // Ðàçðåøèòü ïåðâóþ ñäåëêó
     Second=false,                   // Ðàçðåøèòü âòîðóþ ñäåëêó
     Reverse=false,                  // Êðèòåðèé îòêðûòèÿ îáðàòíîãî îðäåðà
     Opn_B=false,                    // Êðèòåðèé äëÿ îòêðûòèÿ  Buy
     Opn_S=false;                    // Êðèòåðèé äëÿ îòêðûòèÿ  Sell
string Symb,                         // Íàçâàíèå ôèíàíñ. èíñòðóìåíòà
       StartTime,
       FinishTime,
       FinTim;
       
int StPos;
static datetime New_Time;
double dirOpen       = NONE,         // Íàïðàâëåíèå òåêóùåå : ">0" - êóïèòü; "<0" - ïðîäàòü
       Up, Dn,                       // íàïðàâëåíèå ââåðõ/âíèç
       Profit,
       RevUp, RevDn, RevTP, RevSL;
       
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   Fun_New_Bar();                      // Îïðåäåëåíèå íà÷àëà íîâîãî áàðà
//----
   int
      Total,                           // Êîëè÷åñòâî îðäåðîâ â îêíå 
      Tip=-1,                          // Òèï âûáðàí. îðäåðà (B=0,S=1)
      Ticket;                          // Íîìåð îðäåðà
   double
      Lot,                             // Êîëè÷. ëîòîâ â âûáðàííîì îðäåðå
      Lts,                             // Êîëè÷. ëîòîâ â îòêðûâàåìîì îðäåðå
      Min_Lot,                         // Ìèíèìàëüíîå êîëè÷åñòâî ëîòîâ
      Step,                            // Øàã èçìåíåíèÿ ðàçìåðà ëîòà
      Free,                            // Òåêóùèå ñâîáîäíûå ñðåäñòâà
      One_Lot,                         // Ñòîèìîñòü îäíîãî ëîòà
      SL,                              // SL âûáðàííîãî îðäåðà 
      TP;                              // TP âûáðàííîãî îðäåðà
   bool
      Ans  =false;                     // Îòâåò ñåðâåðà ïîñëå çàêðûòèÿ
      
   Cls  =false;                        // Êðèòåðèé äëÿ çàêðûòèÿ
   
//------------------- Îäèí  ðàç çà ïåðèîä --
   if (New_Bar)                        // Îäèí ðàç çà ïåðèîä âûïîëíÿåòñÿ ñëåäóþùåå
     {
      // Ïðåäâàðèò.îáðàáîòêà
      if(TimeCurrent()<StartDateTime)            // Âðåìÿ ñòàðòà íå íàñòóïèëî
        { 
        Alert("Âðåìÿ ñòàðòà íå íàñòóïèëî. Ýêñïåðò íå ðàáîòàåò.",": ",Symb,", ",Period());
        return;                                  // Âûõîä èç start()
        }            
      if (TimeCurrent()>=FinishDateTime)         //Âðåìÿ ôèíèøà íàñòóïèëî
        { 
        Alert("Âðåìÿ ôèíèøà íàñòóïèëî. Ýêñïåðò íå ðàáîòàåò.",": ",Symb,", ",Period());
        return;                                  // Âûõîä èç start()
        }            
      if(Work==false)                            // Êðèòè÷åñêàÿ îøèáêà
        {
         Alert("Êðèòè÷åñêàÿ îøèáêà. Ýêñïåðò íå ðàáîòàåò.",": ",Symb,", ",Period());
         return;                                 // Âûõîä èç start()
        }
     }
   
//----------------------- Ó÷¸ò îðäåðîâ
   Symb=Symbol();                               // Íàçâàíèå ôèí.èíñòð.
   Total=0;                                     // Êîëè÷åñòâî îðäåðîâ
   for(int i=1; i<=OrdersTotal(); i++)          // Öèêë ïåðåáîðà îðäåð
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Åñëè åñòü ñëåäóþùèé
        {                                       // Àíàëèç îðäåðîâ:
         if (OrderSymbol()!=Symb)continue;      // Íå íàø ôèí. èíñòðóì
         if (OrderType()>1)                     // Ïîïàëñÿ îòëîæåííûé
           {
            Alert("Îáíàðóæåí îòëîæåííûé îðäåð. Ýêñïåðò íå ðàáîòàåò.",": ",Symb,", ",Period());
            return;                             // Âûõîä èç start()
           }
         Total++;                               // Ñ÷¸ò÷èê ðûíî÷í. îðä
         if (Total>1)                           // Íå áîëåå îäíîãî îðä
           {
            Alert("Íåñêîëüêî ðûíî÷íûõ îðäåðîâ. Ýêñïåðò íå ðàáîòàåò.",": ",Symb,", ",Period());
            return;                             // Âûõîä èç start()
           }
         Ticket =OrderTicket();                 // Íîìåð âûáðàíí. îðä.
         Tip    =OrderType();                   // Òèï âûáðàííîãî îðä.
         SL     =OrderStopLoss();               // SL âûáðàííîãî îðä.
         TP     =OrderTakeProfit();             // TP âûáðàííîãî îðä.
         Profit =OrderProfit();                 // Profit âûáðàííîãî îðä.
         Lot    =OrderLots();                   // Êîëè÷åñòâî ëîòîâ
        }
     }
   if(Total==0 && StartTime!="00:00" 
      && (TimeCurrent()<StrToTime(TimeToStr(CurTime(), TIME_DATE)+" "+StartTime) 
         || TimeCurrent()>StrToTime(TimeToStr(CurTime(), TIME_DATE)+" "+FinishTime)))
     return;                                  // Âûõîä èç start()
   if(Total==0 && !First && TimeCurrent()==StrToTime(TimeToStr(CurTime(), TIME_DATE)+" "+StartTime))
       {
       First=true;
       Second=false;
       }
   if(TimeCurrent()==StrToTime(TimeToStr(CurTime(), TIME_DATE)+" "+FinishTime))
     {
     Second=false;
     LookInd=true;
     }
     
   if(!LookInd) return;
   
   if(Total==0)                                 // Åñëè íåò îòêðûòûõ îðäåðîâ
     {
     Cls=false;                                 // Åù¸ íå÷åãî çàêðûâàòü
     ObjectDelete("New_Open");                  // Îäàëÿåì ëèíèè
     ObjectDelete("New_SL"); 
     }
   if(Total==0 && LookInd && TimeCurrent()==StrToTime(TimeToStr(CurTime(), TIME_DATE)+" "+StartTime))
     if(iCustom(0, 0, "iK_Dserg-LinReg","",t0,"",useClose,FinishTime,StartTime,0, 0)==0 &&
        iCustom(0, 0, "iK_Dserg-LinReg","",t0,"",useClose,FinishTime,StartTime,3, 0)==0)
       LookInd=false;
   
//---- Èñõîäíûå äàííûå
   if(Total==0 && !Second)
     {
     SL = iCustom(0, 0, "iK_Dserg-LinReg","",t0,"",useClose,FinishTime,StartTime,2, 0);
     Up = iCustom(0, 0, "iK_Dserg-LinReg","",t0,"",useClose,FinishTime,StartTime,5, 0);
     Dn = iCustom(0, 0, "iK_Dserg-LinReg","",t0,"",useClose,FinishTime,StartTime,6, 0);
     TP = iCustom(0, 0, "iK_Dserg-LinReg","",t0,"",useClose,FinishTime,StartTime,7, 0);
     RevSL=SL;
     RevTP=TP;
     RevUp=Up;
     RevDn=Dn;
     }
   if(Up==0 && Dn==0)
     return;                                  // Âûõîä èç start()
//---- 
   if(Second && Total==0)
     {
     if(RevUp>0)
       if(Profit>0)
         {
         TP=RevUp;
         SL=RevTP+RevUp-RevSL;
         Up=RevDn;
         Dn=RevUp;
         }
         else
         {
         TP=/*RevSL+*/RevTP/*-RevUp*/;
         SL=2*RevSL-RevUp;
         Up=RevUp;
         Dn=RevDn;
         }
     if(RevDn>0)
       if(Profit>0)
         {
         TP=RevDn;
         SL=RevTP+RevDn-RevSL;
         Up=RevDn;
         Dn=RevUp;
         }
         else
         {
         TP=/*RevSL-*/(/*RevDn-*/RevTP);
         SL=2*RevSL-RevDn;
         Up=RevUp;
         Dn=RevDn;
         }
     }
//---- Êîììóòàòîð
   if(Reverse && Total==0)                                    // îòêðûòûõ îðäåðîâ íåò,
     if(Up>0 || Dn>0)
       {
       if(Second)
         {
         LookInd=false;
         Second=false;
         }
       if(First)
         {
         First=false;
         Second=true;
         }
       }
//---- Óñëîâèÿ îòêðûòèÿ îðäåðà
   if(Total==0)                                    // îòêðûòûõ îðäåðîâ íåò,
     {
     Opn_B=false;
     Opn_S=false;
     if(Up>0)
       Opn_B=true;                               // íàäî îòêðûâàòü îðäåð íà Buy
     if(Dn>0)
       Opn_S=true;                               // íà Sell
     }
//---- Óñëîâèÿ çàêðûòèÿ îðäåðà      
   if((Tip==0                                     // îðäåð îòêðûò íà ïîêóïêó
       && Ask>=TP)    
      ||                                          // èëè
       (Tip==1                                    // îðäåð îòêðûò íà ïðîäàæó
       && Bid<=TP && Bid>0))    
     {                                           
     Cls = true;                                  // íàäî çàêðûâàòü îðäåð
     }
//--------------------------------------------------------------- 7 --
   // Ñòîèìîñòü îðäåðîâ
   RefreshRates();                              // Îáíîâëåíèå äàííûõ
   Min_Lot=MarketInfo(Symb,MODE_MINLOT);        // Ìèíèì. êîëè÷. ëîòîâ 
   Free   =AccountFreeMargin();                 // Ñâîáîäí ñðåäñòâà
   One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);// Ñòîèìîñòü 1 ëîòà
   Step   =MarketInfo(Symb,MODE_LOTSTEP);       // Øàã èçìåíåí ðàçìåðà
 
   if (Lots > 0)                                // Åñëè çàäàíû ëîòû,òî 
      Lts =Lots;                                // ñ íèìè è ðàáîòàåì 
   else                                         // % ñâîáîäíûõ ñðåäñòâ
      Lts=MathFloor(Free*Prots/One_Lot/Step)*Step;// Äëÿ îòêðûòèÿ
 
   if(Lts < Min_Lot) Lts=Min_Lot;               // Íå ìåíüøå ìèíèìàëüí
   
   if (Lts*One_Lot > Free &&                    // Ëîò äîðîæå ñâîáîäí.
      TimeCurrent()<(Time[0] + 2*60) &&         // íå ïðîøëî åù¸ áîëåå 2-õ ìèíóò
      Total==0)                                 // è îðäåð íå îòêðûò
     {
      Alert(" Íå õâàòàåò äåíåã íà ", Lts," ëîò",": ",Symb,", ",Period());
      return;                                   // Âûõîä èç start()
     }
//--------------------------------------------------------------- 6 --
   // Çàêðûòèå îðäåðîâ
   while(Ticket>0)                              // Öèêë çàêðûòèÿ îðä.
     {
      if(Tip==0 && Cls==true)                  // Îòêðûò îðäåð Buy..
        {                                       // è åñòü êðèòåðèé çàêð
        Alert("Ïîïûòêà çàêðûòü Buy: ",Symb,", ",Period());
        RefreshRates();                        // Îáíîâëåíèå äàííûõ
        Ans=OrderClose(Ticket,Lot,Bid,2,Blue);      // Çàêðûòèå Buy
        if(Ans==true)                         // Ïîëó÷èëîñü :)
          break;                              // Âûõîä èç öèêëà çàêð
        if(Fun_Error(GetLastError())==1)      // Îáðàáîòêà îøèáîê
          {
          continue;                           // Ïîâòîðíàÿ ïîïûòêà
          }
        return;                                // Âûõîä èç start()
        }
      if(Tip==1 && Cls==true)                  // Îòêðûò îðäåð Sell..
        {                                       // è åñòü êðèòåðèé çàêð
        Alert("Ïîïûòêà çàêðûòü Sell: ",Symb,", ",Period());
        RefreshRates();                        // Îáíîâëåíèå äàííûõ
        Ans=OrderClose(Ticket,Lot,Ask,2,Red);      // Çàêðûòèå Sell
        if(Ans==true)                         // Ïîëó÷èëîñü :)
          break;                              // Âûõîä èç öèêëà çàêð
        if(Fun_Error(GetLastError())==1)      // Îáðàáîòêà îøèáîê
          {
          continue;                           // Ïîâòîðíàÿ ïîïûòêà
          }
        return;                                // Âûõîä èç start()
        }
      break;                                    // Âûõîä èç while
     }
 
//---- Îòêðûòèå îðäåðîâ
   while(Total==0)                                 // Öèêë îòêðûòèÿ îðä.
     {
      if(Opn_B==true)              // Îòêðûòûõ îðä. íåò +
        {                                       // êðèòåðèé îòêð. Buy
        RefreshRates();                        // Îáíîâëåíèå äàííûõ
        Alert("Ïîïûòêà îòêðûòü Buy: ",Symb,", ",Period());
        Alert("Ask=",Ask," SL=",SL," TP=",TP);
        Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP,0,0,0,Blue);//Îòêðûòèå Buy
        if(Ticket > 0)                        // Ïîëó÷èëîñü :)
          {
          return;                             // Âûõîä èç start()
          }
        if(Fun_Error(GetLastError())==1)      // Îáðàáîòêà îøèáîê
          continue;                           // Ïîâòîðíàÿ ïîïûòêà
        return;                                // Âûõîä èç start()
        }
      if(Opn_S==true)              // Îòêðûòûõ îðä. íåò +
        {                                       // êðèòåðèé îòêð. Sell
        RefreshRates();                        // Îáíîâëåíèå äàííûõ
        Alert("Ïîïûòêà îòêðûòü Sell: ",Symb,", ",Period());
        Alert("Bid=",Bid," SL=",SL," TP=",TP);
        Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP,0,0,0,Red);//Îòêðûòèå Sel
        if(Ticket > 0)                        // Ïîëó÷èëîñü :)
          {
          return;                             // Âûõîä èç start()
          }
        if(Fun_Error(GetLastError())==1)      // Îáðàáîòêà îøèáîê
          continue;                           // Ïîâòîðíàÿ ïîïûòêà
        return;                                // Âûõîä èç start()
        }
      break;                                    // Âûõîä èç while
     }   
//----
   return;                                      // Âûõîä èç start()
  }
//-------------------------------------------------------------- 10 --
int Fun_Error(int Error)                        // Ô-èÿ îáðàáîò îøèáîê
  {
   switch(Error)
     {                                          // Ïðåîäîëèìûå îøèáêè            
      case   4: Alert("Òîðãîâûé ñåðâåð çàíÿò. Ïðîáóåì åù¸ ðàç..",": ",Symb,", ",Period());
         Sleep(3000);                           // Ïðîñòîå ðåøåíèå
         return(1);                             // Âûõîä èç ôóíêöèè
      case 128: Alert("Èñòåê ñðîê îæèäàíèÿ..",": ",Symb,", ",Period());
         return(1);                             // Âûõîä èç ôóíêöèè
      case 129: Alert("Íåïðàâèëüíàÿ öåíà..",": ",Symb,", ",Period());
         return(1);                             // Âûõîä èç ôóíêöèè
      case 130:Alert("Ñëèøêîì áëèçêî ñòîïû..",": ",Symb,", ",Period());
         break;                             // Âûõîä èç ôóíêöèè
      case 135:Alert("Öåíà èçìåíèëàñü. Ïðîáóåì åù¸ ðàç..",": ",Symb,", ",Period());
         RefreshRates();                        // Îáíîâèì äàííûå
         return(1);                             // Âûõîä èç ôóíêöèè
      case 136:Alert("Íåò öåí. Æä¸ì íîâûé òèê..",": ",Symb,", ",Period());
         while(RefreshRates()==false)           // Äî íîâîãî òèêà
            Sleep(1);                           // Çàäåðæêà â öèêëå
         return(1);                             // Âûõîä èç ôóíêöèè
      case 137:Alert("Áðîêåð çàíÿò. Ïðîáóåì åù¸ ðàç..",": ",Symb,", ",Period());
         Sleep(3000);                           // Ïðîñòîå ðåøåíèå
         return(1);                             // Âûõîä èç ôóíêöèè
      case 138:Alert("Çàïðîøåííàÿ öåíà óñòàðåëà..",": ",Symb,", ",Period());
         return(1);                             // Âûõîä èç ôóíêöèè
      case 145:Alert("Îðäåð ñëèøêîì áëèçîê ê ðûíêó . Ïðîáóåì ÷åðåç 15ñåê.",": ",Symb,", ",Period());
         Cls = false;
         Sleep(15000);                        // Ïðîñòîå ðåøåíèå
         return(1);                             // Âûõîä èç ôóíêöèè
      case 146:Alert("Ïîäñèñòåìà òîðãîâëè çàíÿòà. Ïðîáóåì åù¸..",": ",Symb,", ",Period());
         Sleep(500);                            // Ïðîñòîå ðåøåíèå
         return(1);                             // Âûõîä èç ôóíêöèè
         // Êðèòè÷åñêèå îøèáêè
      case  2: Alert("Îáùàÿ îøèáêà.",": ",Symb,", ",Period());
         return(0);                             // Âûõîä èç ôóíêöèè
      case  5: Alert("Ñòàðàÿ âåðñèÿ òåðìèíàëà.",": ",Symb,", ",Period());
         Work=false;                            // Áîëüøå íå ðàáîòàòü
         return(0);                             // Âûõîä èç ôóíêöèè
      case 64: Alert("Ñ÷åò çàáëîêèðîâàí.",": ",Symb,", ",Period());
         Work=false;                            // Áîëüøå íå ðàáîòàòü
         return(0);                             // Âûõîä èç ôóíêöèè
      case 133:Alert("Òîðãîâëÿ çàïðåùåíà.",": ",Symb,", ",Period());
         return(0);                             // Âûõîä èç ôóíêöèè
      case 134:Alert("Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè.",": ",Symb,", ",Period());
         return(0);                             // Âûõîä èç ôóíêöèè
      default: Alert("Âîçíèêëà îøèáêà ",Error,": ",Symb,", ",Period()); // Äðóãèå âàðèàíòû   
         return(0);                             // Âûõîä èç ôóíêöèè
     }
  }
//+------------------------------------------------------------------+
void Fun_New_Bar()                              // Ô-èÿ îáíàðóæåíèÿ íîâîãî áàðà
  {                                             
   New_Bar=false;                               // Íîâîãî áàðà íåò
   if(New_Time!=Time[0])                        // Ñðàâíèâàåì âðåìÿ
     {
      New_Time=Time[0];                         // Òåïåðü âðåìÿ òàêîå
      New_Bar=true;                             // Ïîéìàëñÿ íîâûé áàð  
     }
  }
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   New_Time=Time[0];                               // Âðåìÿ òåêóùåãî áàðà
   switch(StartT)
     {                                             
     case 0: StartTime = "00:00"; break;
     case 1: StartTime = "01:00"; break;
     case 2: StartTime = "02:00"; break;
     case 3: StartTime = "03:00"; break;
     case 4: StartTime = "04:00"; break;
     case 5: StartTime = "05:00"; break;
     case 6: StartTime = "06:00"; break;
     case 7: StartTime = "07:00"; break;
     default: StartTime = "07:00"; break;
     }
   switch(FinishT)
     {                                             
     case 16: FinishTime = "16:00"; break;
     case 17: FinishTime = "17:00"; break;
     case 18: FinishTime = "18:00"; break;
     case 19: FinishTime = "19:00"; break;
     case 20: FinishTime = "20:00"; break;
     case 21: FinishTime = "21:00"; break;
     case 22: FinishTime = "22:00"; break;
     case 23: FinishTime = "23:00"; break;
     default: FinishTime = "16:00"; break;
     }
   if(useCl==1) useClose = true; else useClose = false; 
   if(Rev==1) Reverse = true; else Reverse = false; 
     // Ó÷¸ò îðäåðîâ ïðè èíèöèàëèçàöèè
   bool Msg=true;
   int 
      Total,                                       // Êîëè÷åñòâî îðäåðîâ â îêíå 
      Ticket,
      Tip=-1;                                      // Òèï âûáðàí. îðäåðà (B=0,S=1)
   double 
      TP,
      SL;
   for(int i=1; i<=OrdersTotal(); i++)             // Öèêë ïåðåáîðà îðäåð
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true)    // Åñëè åñòü ñëåäóþùèé
        {                                          // Àíàëèç îðäåðîâ:
         if (OrderSymbol()!=Symbol())continue;         // Íå íàø ôèí. èíñòðóì
         if (OrderType()>1)                        // Ïîïàëñÿ îòëîæåííûé
           {
            Alert("Îáíàðóæåí îòëîæåííûé îðäåð. Ýêñïåðò íå ðàáîòàåò.",": ",Symbol(),", ",Period());
            return;                                // Âûõîä èç start()
           }
         Total++;                                  // Ñ÷¸ò÷èê ðûíî÷í. îðä
         if (Total>1)                              // Íå áîëåå îäíîãî îðä
           {
            Alert("Íåñêîëüêî ðûíî÷íûõ îðäåðîâ. Ýêñïåðò íå ðàáîòàåò.",": ",Symbol(),", ",Period());
            return;                                // Âûõîä èç start()
           }
         Ticket =OrderTicket();                    // Íîìåð âûáðàíí. îðä.
         Tip    =OrderType();                      // Òèï âûáðàííîãî îðä.
         SL     =OrderStopLoss();                  // SL âûáðàííîãî îðä.
         TP     =OrderTakeProfit();                // TP âûáðàííîãî îðä.
        }
     }
            // Îòðàçèòü íîâûå óðîâíè íà ãðàôèêå 
      ObjectDelete("New_Open"); 
      ObjectDelete("New_SL"); 
     }                                                      // íåò îòêðûòûõ îðäåðîâ
  
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
      // Ó÷¸ò îðäåðîâ ïðè äåèíèöèàëèçàöèè
   int 
      Total,                                       // Êîëè÷åñòâî îðäåðîâ â îêíå 
      Tip=-1,                                      // Òèï âûáðàí. îðäåðà (B=0,S=1)
      Ticket;
   double 
      TP,
      SL;
   for(int i=1; i<=OrdersTotal(); i++)             // Öèêë ïåðåáîðà îðäåð
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true)    // Åñëè åñòü ñëåäóþùèé
        {                                          // Àíàëèç îðäåðîâ:
         if (OrderSymbol()!=Symbol())continue;         // Íå íàø ôèí. èíñòðóì
         if (OrderType()>1)                        // Ïîïàëñÿ îòëîæåííûé
           {
            Alert("Îáíàðóæåí îòëîæåííûé îðäåð. Ýêñïåðò íå ðàáîòàåò.",": ",Symbol(),", ",Period());
            return;                                // Âûõîä èç start()
           }
         Total++;                                  // Ñ÷¸ò÷èê ðûíî÷í. îðä
         if (Total>1)                              // Íå áîëåå îäíîãî îðä
           {
            Alert("Íåñêîëüêî ðûíî÷íûõ îðäåðîâ. Ýêñïåðò íå ðàáîòàåò.",": ",Symbol(),", ",Period());
            return;                                // Âûõîä èç start()
           }
         Ticket =OrderTicket();                    // Íîìåð âûáðàíí. îðä.
         Tip    =OrderType();                      // Òèï âûáðàííîãî îðä.
         SL     =OrderStopLoss();                  // SL âûáðàííîãî îðä.
        }
     }
   ObjectDelete("New_Open"); 
   ObjectDelete("New_SL"); 
   return(0);
  }
             
            
            
Comments