iK_ex_LinReg_v0

Author: Ivan Katsko
Price Data Components
Series array that contains open time of each bar
Orders Execution
Checks for the total of open ordersIt Closes Orders by itself It automatically opens orders when conditions are reached
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
iK_ex_LinReg_v0
//+------------------------------------------------------------------+
//|                                                 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

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---