four_screens

Author: Ugar
Price Data Components
Series array that contains open time of each bar
Orders Execution
Checks for the total of open ordersIt can change open orders parameters, due to possible stepping strategyIt automatically opens orders when conditions are reachedChecks for the total of closed orders
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
four_screens
//+------------------------------------------------------------------+
//|                                                     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

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 ---