omzdwwi7739cyjayvs_1_65

Author: Drknn
Orders Execution
Checks for the total of open ordersIt Closes Orders by itself It automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategy
Miscellaneous
It issuies visual alerts to the screenIt plays sound alerts
0 Views
0 Downloads
0 Favorites
omzdwwi7739cyjayvs_1_65
//+------------------------------------------------------------------+
//|                                               Óíèâåðñàë_1.64.mq4 |
//|                                                            Drknn |
//|                   02.03.2007                       drknn@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Drknn"
#property link      "drknn@mail.ru"
//+-------------------------------------------------------------------------------------------------+
//|   Ñîâåòíèê óìååò:                                                                               |
//| - Òðàëèòü îðäåðà ëþáîãî òèïà (êàê ðûíî÷íûå, òàê è îòëîæåííûå)                                   |  
//| - Ïèïñîâàòü                                                                                     |
//| - Ëîâèòü óâåëè÷åíèå äåïîçèòà íà íóæíîå êîëè÷åñòâî ïðîöåíòîâ è, ïîéìàâ åãî                       |
//|   ñîîáùèòü ïîëüçîâàòåëþ, ÷òî äåïîçèò íà çàäàííîå êîëè÷åñòâî ïðîöåíòîâ óâåëè÷åí.                 |
//| - Óñòàíàâëèâàòü òå îòëîæåííûå îðäåðà, êîòîðûå ðàçðåøèë ïîëüçîâàòåëü, åñëè ñîâåòíèê âäðóã        |
//|   îáíàðóæèò, ÷òî îðäåðà òàêîãî â ðûíêå íåò (íàïðèìåð, îðäåð ñðàáîòàë - ñòàë ðûíî÷íûì)           |
//| - Ïîêàçûâàåò íà ýêðàíå ÷òî è êàê ó íåãî íàñòðåíî, ÷òîá êàæäûé ðàç íå ëàçèòü â íàñòðîéêè         |
//|                                                                                                 |
//| - Ñîâåòíèê çàäóìûâàëñÿ êàê óíèâåðñàëüíûé òðåéëèíã, à âñ¸ îñòàëüíîå äîáàâëåíî ëèøü äëÿ óäîáñòâà. |
//| - Íåíóæíûå ôóíêöèè ìîæíî ëåãêî îòêëþ÷èòü â îêíå ñâîéñòâ ñîâåòíèêà.                              |
//| - Åñëè ïîëüçîâàòåëü ðàçðåøèë ñîâåòíèêó óñòàíàâëèâàòü îòëîæåííûé îðäåð êàêîãî ëèáî òèïà,         |
//|   òî ýòîò îðäåð áóäåò óñòàíîâëåí îò òåêóùåé öåíû íà ðàññòîÿíèè _Step äëÿ îðäåðîâ äàííîãî òèïà.  |
//+-------------------------------------------------------------------------------------------------+
// ================ Ïàðàìåòðû, íàñòðàèâàèìûå ïîëüçîâàòåëåì ===========================
// ----- Ïàðàìåòðû, îáùèå äëÿ âñåõ îðäåðîâ --------------------------------------------
extern string   t1="------ Ó îòêðûòûõ âðó÷íóþ MAGIC = 0 ------";
extern int      MAGIC=0;              //Ó îðäåðîâ îòêðûòûõ âðó÷íóþ MAGIC=0 
extern double   Lot=0.2;              //Ëîò äëÿ óñòàíîâêè îðäåðà
// ----- Ðàçðåøåíèå óñòàíîâèòü òîò èëè èíîé îðäåð ------------------------------------- 
extern string   t2="--- Âûêëþ÷àòåëè îòëîæåííûõ ---";
extern bool     WaitClose=true;       //Åñëè true, òî îòëîæåííûé âñòàíåò òîëüêî òîãäà, êîãäà çàêðîåòñÿ ðûíî÷íûé
                                      //èíà÷å íîâûé áóäåò âûñòàâëåí êàê òîëüêî îòëîæåííûé ñðàáîòàåò
extern bool     Ustan_BuyStop=true;   //ìîæíî ëè ñòàâèü Áàé-Còîï åñëè â ðûíêå òàêîãî ó íàñ íåò
extern bool     Ustan_SellLimit=false;//ìîæíî ëè ñòàâèü Cåëë-Ëèìèò åñëè â ðûíêå òàêîãî ó íàñ íåò
extern bool     Ustan_SellStop=true;  //ìîæíî ëè ñòàâèü Cåëë-Cñòîï åñëè â ðûíêå òàêîãî ó íàñ íåò
extern bool     Ustan_BuyLimit=false; //ìîæíî ëè ñòàâèü Áàé-Ëèìèò åñëè â ðûíêå òàêîãî ó íàñ íåò
// ----- Ïàðàìåòðû ðûíî÷íûõ îðäåðîâ ---------------------------------------------
extern string   t3="--- Ïàðàìåòðû ðûíî÷íûõ ---";
extern int      ryn_MaxOrderov=2;     //îãðàíè÷åíèå ìàêñèìàëüíîãî ÷èñëà ðûíî÷íûõ îðäåðîâ îäíîãî òèïà
extern int      ryn_TakeProfit=200;   //Òåéê-Ïðîôèò  ðûíî÷íîãî îðäåðà 
extern int      ryn_StopLoss=100;     //Ñòîï-Ëîññ  ðûíî÷íîãî îðäåðà
extern int      ryn_TrStop=100;       //Òðåéëèíã-Ñòîï ðûíî÷íîãî îðäåðà. Åñëè = 0 òî òàðëà íåò
extern int      ryn_TrStep=10;        //Øàã òðàëà ðûíî÷íîãî îðäåðà
extern bool     WaitProfit=true;      // Åñëè true, òî æäàòü ïðîôèò = çíà÷åíèþ TrailingStop è òîëüêî ïîòîì íà÷èíàòü òðàëèòü
                                      //Èíà÷å, òðåéëèíãîâàòü íå äîæèäàÿñü ïîëîæèòåëüíîãî ïðîôèòà
// ----- Ïàðàìåòðû ñòîïîâûõ îðäåðîâ ---------------------------------------------
extern string   t4="--- Ïàðàìåòðû ñòîïîâûõ ---";
extern int      st_Step=50;           //Ðàññòîÿíèå â ïóíêòàõ îò óðîâíÿ òåêóùåé öåíû äî óîðâíÿ óñòàíîâêè ñòîïîâîãî îðäåðà
extern int      st_TakeProfit=200;    //Òåéê-Ïðîôèò  ñòîïîâûõ îðäåðîâ
extern int      st_StopLoss=100;      //Ñòîï-Ëîññ  ñòîïîâûõ îðäåðîâ
extern int      st_TrStop=0;          //Òðåéëèíã-Ñòîï ñòîïîâûõ îðäåðîâ. Åñëè = 0 òî òàðëà íåò è st_TrStep íå âàæåí
extern int      st_TrStep=3;          //Øàã òðàëà ñòîïîâûõ îðäåðîâ
// ----- Ïàðàìåòðû ëèìèòíûõ îðäåðîâ ---------------------------------------------
extern string   t5="--- Ïàðàìåòðû ëèìèòíûõ ---";
extern int      lim_Step=50;          //Ðàññòîÿíèå â ïóíêòàõ îò óðîâíÿ òåêóùåé öåíû äî óîðâíÿ óñòàíîâêè ëèìèòíîãî îðäåðà
extern int      lim_TakeProfit=200;   //Òåéê-Ïðîôèò ëèìèòíûõ îðäåðîâ 
extern int      lim_StopLoss=100;     //Ñòîï-Ëîññ ëèìèòíûõ îðäåðîâ
extern int      lim_TrStop=0;         //Òðåéëèíã-Ñòîï ëèìèòíûõ îðäåðîâ. Åñëè = 0 òî òàðëà íåò è lim_TrStep íå âàæåí
extern int      lim_TrStep=3;         //Øàã òðåéëèíãà ëèìèòíûõ îðäåðîâ
//------ Îòêðûòü (óñòàîâèòü) îðäåðà â çàäàííîå âðåìÿ ----------------------------------------------------------
extern string   t6="--- Òîëüêî äëÿ ðàáîòû ïî âðåìåíè ---";
extern bool     UseTime=true;         //âêë/âûêë ïðèâÿçêó ê óêàçàííîó âðåìåíè. Åñëè=false, òî âñå òàéìîâûå ïàðàìåòðû íå âàæíû, 
                                      //à èìåííî, ïàðàìåòðû: Hhour, Mminute, Popravka_Hhour, TIME_Buy, TIME_Sell, TIME_BuyStop,
                                      //TIME_SellLimit, TIME_SellStop, TIME_BuyLimit.
extern int      Hhour=23;             //òåðìèíàëüíûå ÷àñû ñîâåðøåíèÿ ñäåëêè
extern int      Mminute=59;           //òåðìèíàëüíûå ìèíóòû ñîâåðøåíèÿ ñäåëêè
extern bool     TIME_Buy=false;       //âêë/âûêë îòêðûâàòüñÿ ëè íà ïîêóïêó â çàäàííîå âðåìÿ
extern bool     TIME_Sell=false;      //âêë/âûêë îòêðûâàòüñÿ ëè íà ïðîäàæó
extern bool     TIME_BuyStop=true;    //ìîæíî ëè óñòàíîâèòü ÁàéCòîï â çàäàííîå âðåìÿ
extern bool     TIME_SellLimit=false; //ìîæíî ëè óñòàíîâèòü CåëëËèìèò â çàäàííîå âðåìÿ
extern bool     TIME_SellStop=true;   //ìîæíî ëè óñòàíîâèòü CåëëCñòîï â çàäàííîå âðåìÿ
extern bool     TIME_BuyLimit=false;  //ìîæíî ëè óñòàíîâèòü ÁàéËèìèò â çàäàííîå âðåìÿ
// ----- Ïàðàìåòðû ïèïñîâêè ----------------------------------------------------
extern string   t7="--- Ïèïñîâêà ---";
extern int      PipsProfit=0;          //ïðîôèò ïðè ïèïñîâêå ìîæíî ñòàâèòü 1, 2, 3, ...
extern int      Proskalz=3;            //Ïðîñêàëüçûâàíèå â ïóíêòàõ (íóæíî òîëüêî êîãäà PipsProfit>0)
// -----------   Îòëàâëèâàåì óâåëè÷åíèå äåïîçèòà --------------------------
extern string   t8="--- Ãëîáàëüíûå óðîâíè ---";
extern bool     UseGlobalLevels=true;  //îòëîâèòü óâåëè÷åíèå è óìåíüøåíèå äåïîçèòà çàäàííîå ÷èñëî ïðîöåíòîâ
                                       //åñëè UseGlobalLevels=false, òî çíà÷åíèt Global_TakeProfit è Global_StopLoss íå âàæíî.
extern double   Global_TakeProfit=2.0; //Ãëîáàëüíûé Òåéê-Ïðîôèò (çàäà¸òñÿ â ïðîöåíòàõ)
extern double   Global_StopLoss=2.0;   //Ãëîáàëüíûé Ñòîï-Ëîññ (çàäà¸òñÿ â ïðîöåíòàõ)
// ----- Ïðî÷èå óñòàíîâêè ------------------------------------------------------ 
extern string   t9="--- Ïðî÷èå ïàðàìåòðû ---";
extern bool     UseOrderSound=true;             // Èñïîëüçîâàòü çâóêîâîé ñèãíàë äëÿ óñòàíîâêè îðäåðîâ
extern bool     UseTrailingSound=true;          // Èñïîëüçîâàòü çâóêîâîé ñèãíàë äëÿ òðåéëèíãà
extern string   NameOrderSound ="alert.wav";    // Íàèìåíîâàíèå çâóêîâîãî ôàéëà äëÿ îðäåðîâ
extern string   NameTrallingSound ="expert.wav";// Íàèìåíîâàíèå çâóêîâîãî ôàéëà äëÿ òðåéëèíãà
// ================== Ãëîáàëüíûå ïåðåìåííûå ===============================================================  
string     Comm1,Comm2,Comm3,Comm4,Comm5,Comm6,Comm7,ED,SMB;
double     PNT,NewPrice,SL,TP,Balans,Free;
int        MinLevel,i,SchBuyStop,SchSellStop,SchBuyLimit,SchSellLimit,SchSell,SchBuy,SBid,SAsk,BBid,BAsk,GTP,GSL,GLE,total;
bool       fm,Rezult,TrailBuyStop,TrailSellStop,TrailBuyLimit,TrailSellLimit,SigBuy,SigSell,NewOrder;
bool       SigTIME_Buy,SigTIME_Sell,SigTIME_BuyStop,SigTIME_SellLimit,SigTIME_SellStop,SigTIME_BuyLimit;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   if(!IsExpertEnabled())//åñëè ëîæü 
   {
      Alert("Îøèáêà! Íå íàæàòà êíîïêà *Ñîâåòíèêè*"); Comment("Îøèáêà! Íå íàæàòà êíîïêà *Ñîâåòíèêè*"); return(0);
   }
   else 
   {
      Comment("Êàê òîëüêî öåíà èçìåíèòñÿ, Ñîâåòíèê íà÷í¸ò ðàáîòó."); Print("Êàê òîëüêî öåíà èçìåíèòñÿ, Ñîâåòíèê íà÷í¸ò ðàáîòó.");
   }
   SMB=Symbol();//Ñèìâîë âàëþòíîé ïàðû
   PNT=MarketInfo(SMB,MODE_POINT);//Ðàçìåð ïóíêòà â âàëþòå êîòèðîâêè. Äëÿ òåêóùåãî èíñòðóìåíòà õðàíèòñÿ â ïðåäîïðåäåëåííîé ïåðåìåííîé Point
   MinLevel=MarketInfo(SMB,MODE_STOPLEVEL);//Ìèíèìàëüíî äîïóñòèìûé óðîâåíü ñòîï-ëîññà/òåéê-ïðîôèòà â ïóíêòàõ
   Proverka();
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   RefreshRates();
//----Ïåðâè÷íûå ïðîâåðêè äàííûõ
   if(!IsTradeAllowed())
     {
      Comment("Òîðãîâëÿ çàïðåùåíà â íàñòðîéêàõ òåðìèíàëà, ëèáî òîðãîâûé ïîòîê çàíÿò");
      return(0);
     }
   Proverka();
//----Êîíåö ïåðâè÷íûõ ïðîâåðîê äàííûõ
   if(ryn_TrStop>0 && ryn_TrStop>=MinLevel) Comm1="Òðàë ðûíî÷íûõ - Âêë."; else Comm1="Òðàë ðûíî÷íûõ - Îòêë.";
   if (lim_TrStop>0 && lim_TrStop>=MinLevel) Comm2="Òðàë ëèìèòíûõ - Âêë."; else Comm2="Òðàë ëèìèòíûõ - Îòêë.";
   if (st_TrStop>0 && st_TrStop>=MinLevel) Comm3="Òðàë ñòîïîâûõ - Âêë."; else Comm3="Òðàë ñòîïîâûõ - Îòêë.";
   if (PipsProfit>0) Comm4="Ïèïñîâêà - Âêë"; else Comm4="Ïèïñîâêà - Îòêë";
   double OtlTP=(Balans/100*Global_TakeProfit+Balans);
   double OtlSL=(Balans-Balans/100*Global_StopLoss);
   GTP=MathCeil(OtlTP);
   GSL=MathCeil(OtlSL);
   if (UseGlobalLevels)
     {
      Comm5="- - - - Ãëîáàëüíûå óðîâíè - - - -";
      Comm6="Ãëîáàëüíûé Òåéê-Ïðîôèò = "+GTP+" $";
      Comm7="Ãëîáàëüíûé Ñòîï-Ëîññ   = "+GSL+" $";
     }
   else 
   {
      Comm5="Ãëîáàëüíûå óðîâíè - Îòêë"; Comm6=""; Comm7="";
   }
   SchOrders();
   SMB=Symbol();
   Comment("Îðäåðîâ ñåé÷àñ äëÿ ",SMB," :","\n","Buy = ",SchBuy,"       Sell = ",SchSell,"\n","BuyStop = ",SchBuyStop,
          "   SellLimit = ",SchSellLimit,"\n","SellStop = ",SchSellStop,"    BuyLimit = ",SchBuyLimit,"\n",Comm1,
          "\n",Comm2,"\n",Comm3,"\n",Comm4,"\n",Comm5,"\n",Comm6,"\n",Comm7);
   // ========================== Óñòàíîâêà îòëîæåííûõ îðäåðîâ ====================================
   if(Ustan_BuyStop || Ustan_SellLimit || Ustan_SellStop || Ustan_BuyLimit) {UstanOtlozh();}
   //=============================================================================================
   //==========================  Ðàáîòà ïî çàäàííîìó âðåìåíè   =======================
   if(UseTime)
     {
      SigTIME_Buy=false;  SigTIME_BuyStop=false;   SigTIME_SellStop=false;
      SigTIME_Sell=false; SigTIME_SellLimit=false; SigTIME_BuyLimit=false;
      if(Hour()==Hhour && Minute()==Mminute)//åñëè òåêóùèå ÷àñ è ìèíóòà ñîâïàäàþò
        {
         if(TIME_Buy)
         {SigTIME_Buy=true; UstanRyn();}
         if(TIME_Sell)
         {SigTIME_Sell=true; UstanRyn();}
         if(TIME_BuyStop)
         {SigTIME_BuyStop=true; UstanOtlozh();}
         if(TIME_SellLimit)
         {SigTIME_SellLimit=true; UstanOtlozh();}
         if(TIME_SellStop)
         {SigTIME_SellStop=true; UstanOtlozh();}
         if(TIME_BuyLimit)
         {SigTIME_BuyLimit=true; UstanOtlozh();}
        }
     }
   //============== Îòëàâëèâàåì óâåëè÷åíèå äåïîçèòà íà Pojmat ïðîöåíòîâ =========================
   if(UseGlobalLevels)//Åñëè ðàçðåøåíî îòëîâèòü ïðîöåíò óâåëè÷åíèÿ/óìåíüøåíèÿ äåïîçèòà
     {
      Balans=AccountBalance();//Áàëàíñ ñ÷¸òà
      Free=AccountEquity();//Òåêóùåå êîëè÷åñòâî äåíåã â ñòàòüå "Ñðåäñòâà"
      if ((Free-Balans)>=(Balans/100*Global_TakeProfit))
        {
         Print("Äåïîçèò óâåëè÷åí íà ",Global_TakeProfit," ïðîöåíòîâ. Ñóììàðíûé ïðîôèò = ",Free);
         Alert("Äåïîçèò óâåëè÷åí íà ",Global_TakeProfit," ïðîöåíòîâ. Ñóììàðíûé ïðîôèò = ",Free);
        }
      if ((Balans-Free)>=(Balans/100*Global_StopLoss))
        {
         Print("Äåïîçèò óìåíüøåí íà ",Global_StopLoss," ïðîöåíòîâ. Ñóììàðíûé Ñòîï-Ëîññ = ",Free);
         Alert("Äåïîçèò óìåíüøåí íà ",Global_StopLoss," ïðîöåíòîâ. Ñóììàðíûé Ñòîï-Ëîññ = ",Free);
        }
     }
   //=================Íà÷àëî ïèïñîâêè==========================
   if (PipsProfit>0)
     {
      SMB=Symbol();
      for(int i=OrdersTotal()-1; i>=0; i-- )
        {//Íà÷àëî öèêëà
         if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {WriteError();}
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true)
           {//íà÷àëî ðàáîòû ñ âûáðàííûì îðäåðîì
            if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC) continue;
            if(OrderType()==OP_BUY)
              {
               if(Bid>=(OrderOpenPrice()+PipsProfit*Point))
               {OrderClose(OrderTicket(),OrderLots(),Bid,Proskalz);}
              }
            if(OrderType()==OP_SELL)
              {
               if(Ask<=(OrderOpenPrice() - PipsProfit*Point))
                  OrderClose(OrderTicket(),OrderLots(),Ask,Proskalz);
              }
           } // êîíåö ðàáîòû ñ âûáðàííûì îðäåðîì  
        }// Êîíåö öèêëà
     }
   //================Êîíåö ïèïñîâêè ======================================
   // ================= Òðåéëèíã Ðûíî÷íûõ îðäåðîâ ==================================================================================
   RefreshRates(); SchOrders();  SMB=Symbol();
   if(ryn_TrStop>=MinLevel && ryn_TrStep>0 && (SchBuy>0 || SchSell>0))
     {
      for(i=0; i<OrdersTotal(); i++)
        {
         if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {WriteError();}
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
           {
            if (OrderSymbol()==SMB && OrderMagicNumber()==MAGIC)
              {
               TrailingPositions();
              }
           }
        }
     }
   if(ryn_TrStop>=MinLevel && ryn_TrStep==0)
      Alert("Òðåéëèíã íåâîçìîæåí - ryn_TrStep==0");
   // ===============================================================================================================================
   //============ Òðåéëèíã îòëîæåííûõ îðäåðîâ =============================================================
   RefreshRates();  SchOrders();//Îáíîâëÿåì ñ÷¸ò÷èêè êîëè÷åñòâà îðäåðîâ
   SMB=Symbol();
   if((st_TrStop>0 && SchBuyStop+SchSellStop>0) || (SchBuyLimit+SchSellLimit>0 && lim_TrStop>0))
     {
      TrailBuyStop=false; TrailSellStop=false; TrailBuyLimit=false; TrailSellLimit=false;
//----
      for(i=OrdersTotal()-1;i>=0;i--)
        {//Íà÷àëî öèêëà
         if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {WriteError();}
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true)
           {//íà÷àëî ðàáîòû ñ âûáðàííûì îðäåðîì
            if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC || OrderType()==OP_BUY || OrderType()==OP_SELL) continue;
            if(OrderType()==OP_BUYSTOP) // Îí íàâåðõó è åäåò âíèç
              {
               if(Ask<OrderOpenPrice()-(st_TrStop+st_TrStep)*Point)
                  TrailBuyStop=true;
              }
            if(OrderType()==OP_SELLLIMIT) // Îí íàâåðõó è åäåò âíèç
              {
               if(Bid<OrderOpenPrice()-(st_TrStop+st_TrStep)*Point)
                  TrailSellLimit=true;
              }
            if(OrderType()==OP_SELLSTOP) // Îí âíèçó è åäåò ââåðõ
              {
               if(Bid>OrderOpenPrice()+(st_TrStop+st_TrStep)*Point)
                  TrailSellStop=true;
              }
            if(OrderType()==OP_BUYLIMIT) // Îí âíèçó è åäåò ââåðõ
              {
               if(Ask>OrderOpenPrice()+(st_TrStop+st_TrStep)*Point)
                  TrailBuyLimit=true;
              }
           }//êîíåö ðàáîòû ñ âûáðàííûì îðäåðîì 
        }//Êîíåö öèêëà
      if (TrailSellLimit || TrailBuyLimit || TrailSellStop || TrailBuyStop)   TrailingOtlozh();
     }
//----
   return(0);
  }
//+ ========================== Êîíåö ðàáîòû ñîâåòíèêà ========================================================================== +
// ___________________________________________________________________________________________
//|                                                                                           |
//|                                                                                           |
//|                       Äàëåå èäóò ïîäïðîãðàììû (ôóíêöèè),                                  |
//|                  êîòîðûå â ñëó÷àå íàäîáíîñòè âûçûâàþòñÿ èç òåëà ñîâåòíèêà                 |
//|                                                                                           |
//|___________________________________________________________________________________________|

//===================== Óñòàíîâêà îòëîæåííûõ îðäåðîâ ===========================================================================
// Ôóíêöèÿ UstanOtlozh() óñòàíàâëèâàåò íóæíûé îòëîæåííûé îðäåð 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void UstanOtlozh()
  {
   RefreshRates(); SchOrders(); SMB=Symbol();
   if(
      (SchSellStop==0 && (SchSell<ryn_MaxOrderov || !WaitClose))
      && ((Ustan_SellStop && st_Step>=MinLevel) || (SigTIME_SellStop && st_Step>=MinLevel))
     )
     {
      NewPrice=Bid-st_Step*Point;
      if(st_StopLoss==0) SL=0.0000;
      else SL=NewPrice+st_StopLoss*Point;
      if(st_TakeProfit==0) TP=0.0000;
      else TP=NewPrice-st_TakeProfit*Point;
      fm=OrderSend(SMB,OP_SELLSTOP,Lot,NewPrice,3,SL,TP,NULL,MAGIC,0,CLR_NONE);
/*Ñèãíàëèì*/            if(fm!=0 && fm!=-1 && UseOrderSound) PlaySound(NameOrderSound);
/*Êîììåíòèðóåì*/        if(fm!=0 && fm!=-1)
        {
         SigTIME_SellStop=false;
         Print("Îðäåð SellStop óñòàíîâëåí");
         Comment("Îðäåð SellStop óñòàíîâëåí");
         Sleep(5000); RefreshRates();
        }
      if(fm==0 || fm==-1)//Åñëè óñòàíîâèòü íå óäàëîñü
        {
         GLE=GetLastError();
         ED=ErrorDescription(GLE);
         Print("Îøèáêà ¹ ",GLE," óñòàíîâêè SellStop-îðäåðà");
         Print ("Îïèñàíèå îøèáêè - ",ED);
        }
     }
   if(
      (SchBuyStop==0 && (SchBuy<ryn_MaxOrderov || !WaitClose))
      && ((Ustan_BuyStop && st_Step>=MinLevel) || (SigTIME_BuyStop && st_Step>=MinLevel))
     )
     {
      NewPrice=Ask+st_Step*Point;
      if(st_StopLoss==0) SL=0.0000;
      else SL=NewPrice-st_StopLoss*Point;
      if(st_TakeProfit==0) TP=0.0000;
      else TP=NewPrice+st_TakeProfit*Point;
      fm=OrderSend(SMB,OP_BUYSTOP,Lot,NewPrice,3,SL,TP,NULL,MAGIC,0,CLR_NONE);
/*Ñèãíàëèì*/            if(fm!=0 && fm!=-1 && UseOrderSound) PlaySound(NameOrderSound);
/*Êîììåíòèðóåì*/        if(fm!=0 && fm!=-1)
        {
         SigTIME_BuyStop=false;
         Print("Îðäåð BuyStop óñòàíîâëåí");
         Comment("Îðäåð BuyStop óñòàíîâëåí");
         Sleep(5000); RefreshRates();
        }
      if(fm==0 || fm==-1)//Åñëè óñòàíîâèòü íå óäàëîñü
        {
         GLE=GetLastError();
         ED=ErrorDescription(GLE);
         Print("Îøèáêà ¹ ",GLE," óñòàíîâêè BuyStop-îðäåðà");
         Print ("Îïèñàíèå îøèáêè - ",ED);
        }
     }
   if(
      (SchBuyLimit==0 && (SchBuy<ryn_MaxOrderov || !WaitClose))
      && ((Ustan_BuyLimit && lim_Step>=MinLevel) || (SigTIME_BuyLimit && lim_Step>=MinLevel))
     )
     {
      NewPrice=Ask-lim_Step*Point;
      if(lim_StopLoss==0) SL=0.0000;
      else SL=NewPrice-lim_StopLoss*Point;
      if(lim_TakeProfit==0) TP=0.0000;
      else TP=NewPrice+st_TakeProfit*Point;
      fm=OrderSend(SMB,OP_BUYLIMIT,Lot,NewPrice,3,SL,TP,NULL,MAGIC,0,CLR_NONE);
/*Ñèãíàëèì*/            if(fm!=0 && fm!=-1 && UseOrderSound) PlaySound(NameOrderSound);
/*Êîììåíòèðóåì*/        if(fm!=0 && fm!=-1)
        {
         SigTIME_BuyLimit=false;
         Print("Îðäåð BuyLimit óñòàíîâëåí");
         Comment("Îðäåð BuyLimit óñòàíîâëåí");
         Sleep(5000); RefreshRates();
        }
      if(fm==0 || fm==-1)//Åñëè óñòàíîâèòü íå óäàëîñü
        {
         GLE=GetLastError();
         ED=ErrorDescription(GLE);
         Print("Îøèáêà ¹ ",GLE," óñòàíîâêè BuyLimit-îðäåðà");
         Print ("Îïèñàíèå îøèáêè - ",ED);
        }
     }
   if(
      (SchSellLimit==0 && (SchSell<ryn_MaxOrderov || !WaitClose))
      && ((Ustan_SellLimit && lim_Step>=MinLevel) || (SigTIME_SellLimit && lim_Step>=MinLevel))
     )
     {
      NewPrice=Bid+lim_Step*Point;
      if(lim_StopLoss==0) SL=0.0000;
      else SL=NewPrice+lim_StopLoss*Point;
      if(lim_TakeProfit==0) TP=0.0000;
      else TP=NewPrice-lim_TakeProfit*Point;
      fm=OrderSend(SMB,OP_SELLLIMIT,Lot,NewPrice,3,SL,TP,NULL,MAGIC,0,CLR_NONE);
/*Ñèãíàëèì*/            if(fm!=0 && fm!=-1 && UseOrderSound) PlaySound(NameOrderSound);
/*Êîììåíòèðóåì*/        if(fm!=0 && fm!=-1)
        {
         SigTIME_SellLimit=false;
         Print("Îðäåð SellLimit óñòàíîâëåí");
         Comment("Îðäåð SellLimit óñòàíîâëåí");
         Sleep(5000); RefreshRates();
        }
      if(fm==0 || fm==-1)//Åñëè óñòàíîâèòü íå óäàëîñü
        {
         GLE=GetLastError();
         ED=ErrorDescription(GLE);
         Print("Îøèáêà ¹ ",GLE," óñòàíîâêè SellLimit-îðäåðà");
         Print ("Îïèñàíèå îøèáêè - ",ED);
        }
     }
  }
// =============== Îòêðûòèå ðûíî÷íûõ îðäåðîâ ===============================================================
//   Ôóíêöèÿ UstanRyn() îòêðûâàåò ðûíî÷íûå îðäåðà
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void UstanRyn()
  {
   bool NewOrderSell,NewOrderBuy; SMB=Symbol();
   int  OldTimeBuy,OldTimeSell;
   RefreshRates(); SchOrders();
   //==== Êîíòðîëü âðåìåíè ïîñëåäíåãî îòêðûòîãî îðäåðà ============
   //  Ýòîò áëîê êîíòðîëÿ íóæåí äëÿ òîãî, ÷òîáû íà îäíîé ñâå÷å îòêðûâàëàñü òîëüêî îäíà ñäåëêà
   //  Åñëè â ðàáîòå ïî çàäàííîìó âðåìåíè áóäåò ñòîÿòü ðàçðåøåíèå îòêðûòü è Buy è Sell îðäåð,
   //  òî åñëè ñîâåòíèê óñïååò çà òèêàìè, îí îòêðîåò îáå ñäåëêè íà îäíîé ñå÷å 
   for( i=OrdersTotal()-1; i>0; i-- )
     {//Íà÷àëî öèêëà
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {WriteError();}
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true)
        {//íà÷àëî ðàáîòû ñ âûáðàííûì îðäåðîì
         if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC) {continue;}
         if(OrderType()==OP_BUY)
           {
            if(OrderOpenTime()>=OldTimeBuy)//åñëè âðåìÿ îòêðûòèÿ ó ýòîãî îðäåðà áîëüøå ÷åì ó ïîñëåäíåãî îòêðûòîãî, òî...
            {OldTimeBuy=OrderOpenTime();}//çàïîìèíàåì âðåìÿ ïîñëåäíåãî îòêðûòîãî Buy-îðäåðà
           }
         if(OrderType()==OP_SELL)
           {
            if(OrderOpenTime()>=OldTimeSell)//åñëè âðåìÿ îòêðûòèÿ ó ýòîãî îðäåðà áîëüøå ÷åì ó ïîñëåäíåãî îòêðûòîãî, òî...
            {OldTimeSell=OrderOpenTime();}//çàïîìèíàåì âðåìÿ ïîñëåäíåãî îòêðûòîãî Sell-îðäåðà
           }
        }//Êîíåö ðàáîòû ñ âûáðàííûì îðäåðîì
     }//Êîíåö öèêëà  OldTimeBuy,OldTimeSell
   if(OldTimeBuy>=Time[0]) {NewOrderBuy=false;}
   if(OldTimeBuy<Time[0])  {NewOrderBuy=true;}
   if(OldTimeSell>=Time[0]) {NewOrderSell=false;}
   if(OldTimeSell<Time[0])  {NewOrderSell=true;}
   //==== Êîíåö "Êîíòðîëü âðåìåíè ïîñëåäíåãî îòêðûòîãî îðäåðà" ====  
   if (NewOrderBuy && SigTIME_Buy && SchBuy==0)
     {//Åñëè ìîæíî îòêðûòü Buy-îðäåð           
      if(ryn_StopLoss==0) {SL=0.0000;}
      else {SL=Ask-ryn_StopLoss*Point;}
      if(ryn_TakeProfit==0) {TP=0.0000;}
      else {TP=Ask+ryn_TakeProfit*Point;}
      fm=OrderSend(SMB,OP_BUY,Lot,Ask,3,SL,TP,NULL,MAGIC,0,Blue);
      if(fm!=0 && fm!=-1 && UseOrderSound) {PlaySound(NameOrderSound);}
      if(fm!=0 && fm!=-1)
        {
         SigTIME_Buy=false;
         Comment("Ñäåëêà íà ïîêóïêó îòêðûòà");
         Print("Ñäåëêà íà ïîêóïêó îòêðûòà");
        }
      if (fm==-1 || fm==0)
        {
         GLE=GetLastError();
         ED=ErrorDescription(GLE);
         Print("Îøèáêà ¹ ",GLE," óñòàíîâêè Buy-îðäåðà");
         Print ("Îïèñàíèå îøèáêè - ",ED);
        }
     }//Êîíåö "Åñëè ìîæíî îòêðûòü Buy-îðäåð"
   if(NewOrderSell && SigTIME_Sell && SchSell==0)
     { //Åñëè ìîæíî îòêðûòü Sell-îðäåð 
      if(ryn_StopLoss==0) {SL=0.0000;}
      else {SL=Bid+ryn_StopLoss*Point;}
      if(ryn_TakeProfit==0) {TP=0.0000;}
      else {TP=Bid-ryn_TakeProfit*Point;}
      fm=OrderSend(SMB,OP_SELL,Lot,Bid,3,SL,TP,NULL,MAGIC,0,Red);
      if(fm!=0 && fm!=-1 && UseOrderSound) {PlaySound(NameOrderSound);}
      if(fm!=0 && fm!=-1)
        {
         SigTIME_Sell=false;
         Comment("Ñäåëêà íà ïðîäàæó îòêðûòà ");
         Print("Ñäåëêà íà ïðîäàæó îòêðûòà ");
        }
      if (fm==-1 || fm==0)
        {
         GLE=GetLastError();
         ED=ErrorDescription(GLE);
         Print("Îøèáêà ¹ ",GLE," óñòàíîâêè SellL-îðäåðà");
         Print ("Îïèñàíèå îøèáêè - ",ED);
        }
     }//Êîíåö "Åñëè ìîæíî îòêðûòü Sell-îðäåð"
  }
//=========== Ñ÷¸ò÷èêè êîëè÷åñòâà îðäåðîâ  =================================================================

//  Ôóíêöèÿ SchOrders() ïðîõîäèò ïî âñåì îðäåðàì è ïîäñ÷èòûâàåò, ñêîëüêî ñåé÷àñ èìååòñÿ îðäåðîâ êàæäîãî òèïà.
//  Êàê òîëüêî ïîíàäîáÿòñÿ çíà÷åíèå òîãî èëè èíîãî ñ÷¸ò÷èêà, íóæíî ñíà÷àëà âûçâàòü ôóíêöèþ SchOrders()
//  Îíà îáíîâèò äàííûå è ïîòîì ìîæíî ñìåëî âûçûâàòü òîò èëè èíîé ñ÷¸ò÷èê.
//  SchBuyStop  - ñ÷¸ò÷èê îðäåðîâ BuyStop
//  SchSellStop - ñ÷¸ò÷èê îðäåðîâ SellStop
//  SchBuyLimit - ñ÷¸ò÷èê îðäåðîâ BuyLimit
//  SchSellLimit  ñ÷¸ò÷èê îðäåðîâ SellLimit
//  SchBuy      - ñ÷¸ò÷èê Buy îðäåðîâ
//  SchSell     - ñ÷¸ò÷èê Sell îðäåðîâ
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SchOrders()
  {
   // äëÿ íà÷àëà ðàáîòû ñ÷¸ò÷èêîâ ìû èõ îáíóëÿåì
   SchBuyStop=0; SchSellStop=0; SchBuyLimit=0; SMB=Symbol();
   SchBuy=0; SchSell=0; SchSellLimit=0;
   for(i=OrdersTotal()-1;i>=0;i--)
     {//Íà÷àëî öèêëà
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {WriteError();}
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {//íà÷àëî ðàáîòû ñ âûáðàííûì îðäåðîì
         if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC) continue;
         if(OrderType()==OP_BUYSTOP)
            SchBuyStop++;
         if(OrderType()==OP_SELLSTOP)
            SchSellStop++;
         if(OrderType()==OP_SELLLIMIT)
            SchSellLimit++;
         if(OrderType()==OP_BUYLIMIT)
            SchBuyLimit++;
         if(OrderType()==OP_BUY)
            SchBuy++;
         if(OrderType()==OP_SELL)
            SchSell++;
        }//êîíåö ðàáîòû ñ âûáðàííûì îðäåðîì
     }//Êîíåö öèêëà
  }
//+------------------------------------------------------------------+
//| Ñîïðîâîæäåíèå ïîçèöèè ïðîñòûì òðàëîì                             |
//+------------------------------------------------------------------+
void TrailingPositions()
  {
   if(OrderType()==OP_BUY)
     {
      if(!WaitProfit || (Bid-OrderOpenPrice())>ryn_TrStop*Point)
        {
         if (OrderStopLoss()<Bid-(ryn_TrStop+ryn_TrStep-1)*Point)
         {ModifyStopLoss(Bid-ryn_TrStop*Point);}
        }
     }
   if(OrderType()==OP_SELL)
     {
        if(!WaitProfit || OrderOpenPrice()-Ask>ryn_TrStop*Point) {
         if(OrderStopLoss()>Ask+(ryn_TrStop+ryn_TrStep-1)*Point || OrderStopLoss()==0)
         {ModifyStopLoss(Ask+ryn_TrStop*Point);}
        }
     }
  }
//+------------------------------------------------------------------+
//| Ïåðåíîñ óðîâíÿ StopLoss                                          |
//| Ïàðàìåòðû:                                                       |
//|   ldStopLoss - óðîâåíü StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss(double ldStopLoss)
  {
   fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
   if(fm!=0 && fm!=-1 && UseTrailingSound) PlaySound(NameTrallingSound);
   if(fm==0 || fm==-1) {ModifError();}
  }
//======== Ïîäòÿãèâàíèå îòëîæåííîãî îðäåðà âñëåä öåíîé  ============================================
// Ôóíêöèÿ TrailingOtlozh() ïîäòÿãèâàåò îòëîæåííûé îðäåð âñëåä çà öåíîé
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void TrailingOtlozh()
  {
   RefreshRates(); SMB=Symbol();
   for(i=OrdersTotal()-1;i>=0;i--)//Öèêë. Ïðîõîäèì ïî âñåì îðäåðàì
     {//Íà÷àëî öèêëà
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {WriteError();}
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {//íà÷àëî ðàáîòû ñ âûáðàííûì îðäåðîì
         if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC) {continue;}
         if(OrderType()==OP_BUYSTOP)//íàõîäèòñÿ ââåðõó, åäåò âíèç
           {
            if(TrailBuyStop)
              {
               NewPrice=Ask+st_TrStop*Point;
               if(st_StopLoss==0) {SL=0.0000;}
               else {SL=NewPrice-st_StopLoss*Point;}
               if(st_TakeProfit==0) {TP=0.0000;}
               else {TP=NewPrice+st_TakeProfit*Point;}
               fm=OrderModify(OrderTicket(),NewPrice,SL,TP,0,CLR_NONE);
               if(fm!=0 && fm!=-1 && UseTrailingSound) {PlaySound(NameTrallingSound);}
               if(fm!=0 && fm!=-1) {Sleep(5000); RefreshRates();}
               if(fm==0 || fm==-1) {ModifError();}
              }
           }
         if(OrderType()==OP_SELLSTOP) // Íàõîäèòñÿ âíèçó, åäåò ââåðõ
           {
            if(TrailSellStop)
              {
               NewPrice=Bid-st_TrStop*Point;
               if(st_StopLoss==0) {SL=0.0000;}
               else {SL=NewPrice+st_StopLoss*Point;}
               if(st_TakeProfit==0) {TP=0.0000;}
               else {TP=NewPrice-st_TakeProfit*Point;}
               fm=OrderModify(OrderTicket(),NewPrice,SL,TP,0,CLR_NONE);
               if(fm!=0 && fm!=-1 && UseTrailingSound) {PlaySound(NameTrallingSound);}
               if(fm!=0 && fm!=-1) {Sleep(5000); RefreshRates();}
               if(fm==0 || fm==-1)  {ModifError();}
              }
           }
         if(OrderType()==OP_BUYLIMIT) // Íàõîäèòñÿ âíèçó, åäåò ââåðõ
           {
            if(TrailBuyLimit)
              {
               NewPrice=Ask-st_TrStop*Point;
               if(lim_StopLoss==0) {SL=0.0000;}
               else {SL=NewPrice-lim_StopLoss*Point;}
               if(lim_TakeProfit==0) {TP=0.0000;}
               else {TP=NewPrice+lim_TakeProfit*Point;}
               fm=OrderModify(OrderTicket(),NewPrice,SL,TP,0,CLR_NONE);
               if(fm!=0 && fm!=-1 && UseTrailingSound) {PlaySound(NameTrallingSound);}
               if(fm!=0 && fm!=-1) {Sleep(5000); RefreshRates();}
               if(fm==0 || fm==-1) {ModifError();}
              }
           }
         if(OrderType()==OP_SELLLIMIT)//íàõîäèòñÿ ââåðõó, åäåò âíèç
           {
            if(TrailSellLimit)
              {
               NewPrice=Bid+st_TrStop*Point;
               if(lim_StopLoss==0) {SL=0.0000;}
               else {SL=NewPrice+lim_StopLoss*Point;}
               if(lim_TakeProfit==0) {TP=0.0000;}
               else {TP=NewPrice-lim_TakeProfit*Point;}
               fm=OrderModify(OrderTicket(),NewPrice,SL,TP,0,CLR_NONE);
               if(fm!=0 && fm!=-1 && UseTrailingSound) {PlaySound(NameTrallingSound);}
               if(fm!=0 && fm!=-1) {Sleep(5000); RefreshRates();}
               if(fm==0 || fm==-1) {ModifError();}
              }
           }
        }//êîíåö ðàáîòû ñ âûáðàííûì îðäåðîì
     }//Êîíåö öèêëà
  }//êîíåö ôóíêöèè
//========= Ñëîâåñòíîå îïèñàíèå îøèáîê =========================================================================================
// Ôóíêöèÿ âîçâðàùàåò íå êîä îøèáêè à å¸ ñëîâåñòíîå îïèñàíèå
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string ErrorDescription(int error_code)
  {
   string error_string;
//----
   switch(error_code)
     {
      //---- codes returned from trade server
      case 0:    error_string=" Íåò îøèáêè"; break;
      case 1:   error_string=" Íåò îøèáêè, íî ðåçóëüòàò íåèçâåñòåí"; break;
      case 2:   error_string=" Îáùàÿ îøèáêà"; break;
      case 3:    error_string=" Íåïðàâèëüíûå ïàðàìåòðû"; break;
      case 4:    error_string=" Òîðãîâûé ñåðâåð çàíÿò"; break;
      case 5:    error_string=" Ñòàðàÿ âåðñèÿ êëèåíòñêîãî òåðìèíàëà"; break;
      case 6:    error_string=" Íåò ñâÿçè ñ òîðãîâûì ñåðâåðîì"; break;
      case 7:    error_string=" Íåäîñòàòî÷íî ïðàâ"; break;
      case 8:    error_string=" Ñëèøêîì ÷àñòûå çàïðîñû"; break;
      case 9:    error_string=" Íåäîïóñòèìàÿ îïåðàöèÿ íàðóøàþùàÿ ôóíêöèîíèðîâàíèå ñåðâåðà"; break;
      case 64:    error_string=" Ñ÷åò çàáëîêèðîâàí"; break;
      case 65:    error_string=" Íåïðàâèëüíûé íîìåð ñ÷åòà"; break;
      case 128:    error_string=" Èñòåê ñðîê îæèäàíèÿ ñîâåðøåíèÿ ñäåëêè"; break;
      case 129:    error_string=" Íåïðàâèëüíàÿ öåíà"; break;
      case 130:    error_string=" Íåïðàâèëüíûå ñòîïû"; break;
      case 131:    error_string=" Íåïðàâèëüíûé îáúåì"; break;
      case 132:    error_string=" Ðûíîê çàêðûò"; break;
      case 133:    error_string=" Òîðãîâëÿ çàïðåùåíà"; break;
      case 134:    error_string=" Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè"; break;
      case 135:    error_string=" Öåíà èçìåíèëàñü"; break;
      case 136:    error_string=" Íåò öåí"; break;
      case 137:    error_string=" Áðîêåð çàíÿò"; break;
      case 138:    error_string=" Íîâûå öåíû"; break;
      case 139:    error_string=" Îðäåð çàáëîêèðîâàí è óæå îáðàáàòûâàåòñÿ"; break;
      case 140:    error_string=" Ðàçðåøåíà òîëüêî ïîêóïêà"; break;
      case 141:    error_string=" Ñëèøêîì ìíîãî çàïðîñîâ"; break;
      case 145:    error_string=" Ìîäèôèêàöèÿ çàïðåùåíà, òàê êàê îðäåð ñëèøêîì áëèçîê ê ðûíêó"; break;
      case 146:    error_string=" Ïîäñèñòåìà òîðãîâëè çàíÿòà"; break;
      case 147:    error_string=" Èñïîëüçîâàíèå äàòû èñòå÷åíèÿ îðäåðà çàïðåùåíî áðîêåðîì"; break;
      case 148:    error_string=" Êîëè÷åñòâî îòêðûòûõ è îòëîæåííûõ îðäåðîâ äîñòèãëî ïðåäåëà, óñòàíîâëåííîãî áðîêåðîì"; break;
      case 4000:    error_string=" Íåò îøèáêè"; break;
      case 4001:    error_string=" Íåïðàâèëüíûé óêàçàòåëü ôóíêöèè"; break;
      case 4002:    error_string=" Èíäåêñ ìàññèâà - âíå äèàïàçîíà"; break;
      case 4003:    error_string=" Íåò ïàìÿòè äëÿ ñòåêà ôóíêöèé"; break;
      case 4004:    error_string=" Ïåðåïîëíåíèå ñòåêà ïîñëå ðåêóðñèâíîãî âûçîâà"; break;
      case 4005:    error_string=" Íà ñòåêå íåò ïàìÿòè äëÿ ïåðåäà÷è ïàðàìåòðîâ"; break;
      case 4006:    error_string=" Íåò ïàìÿòè äëÿ ñòðîêîâîãî ïàðàìåòðà"; break;
      case 4007:    error_string=" Íåò ïàìÿòè äëÿ âðåìåííîé ñòðîêè"; break;
      case 4008:    error_string=" Íåèíèöèàëèçèðîâàííàÿ ñòðîêà"; break;
      case 4009:    error_string=" Íåèíèöèàëèçèðîâàííàÿ ñòðîêà â ìàññèâå"; break;
      case 4010:    error_string=" Íåò ïàìÿòè äëÿ ñòðîêîâîãî ìàññèâà"; break;
      case 4011:    error_string=" Ñëèøêîì äëèííàÿ ñòðîêà"; break;
      case 4012:    error_string=" Îñòàòîê îò äåëåíèÿ íà íîëü"; break;
      case 4013:    error_string=" Äåëåíèå íà íîëü"; break;
      case 4014:    error_string=" Íåèçâåñòíàÿ êîìàíäà"; break;
      case 4015:    error_string=" Íåïðàâèëüíûé ïåðåõîä"; break;
      case 4016:    error_string=" Íåèíèöèàëèçèðîâàííûé ìàññèâ"; break;
      case 4017:    error_string=" Âûçîâû DLL íå ðàçðåøåíû"; break;
      case 4018:    error_string=" Íåâîçìîæíî çàãðóçèòü áèáëèîòåêó"; break;
      case 4019:    error_string=" Íåâîçìîæíî âûçâàòü ôóíêöèþ"; break;
      case 4020:    error_string=" Âûçîâû âíåøíèõ áèáëèîòå÷íûõ ôóíêöèé íå ðàçðåøåíû"; break;
      case 4021:    error_string=" Íåäîñòàòî÷íî ïàìÿòè äëÿ ñòðîêè, âîçâðàùàåìîé èç ôóíêöèè"; break;
      case 4022:    error_string=" Ñèñòåìà çàíÿòà"; break;
      case 4050:    error_string=" Íåïðàâèëüíîå êîëè÷åñòâî ïàðàìåòðîâ ôóíêöèè"; break;
      case 4051:    error_string=" Íåäîïóñòèìîå çíà÷åíèå ïàðàìåòðà ôóíêöèè"; break;
      case 4052:    error_string=" Âíóòðåííÿÿ îøèáêà ñòðîêîâîé ôóíêöèè"; break;
      case 4053:    error_string=" Îøèáêà ìàññèâà"; break;
      case 4054:    error_string=" Íåïðàâèëüíîå èñïîëüçîâàíèå ìàññèâà-òàéìñåðèè"; break;
      case 4055:    error_string=" Îøèáêà ïîëüçîâàòåëüñêîãî èíäèêàòîðà"; break;
      case 4056:    error_string=" Ìàññèâû íåñîâìåñòèìû"; break;
      case 4057:    error_string=" Îøèáêà îáðàáîòêè ãëîáàëüíûåõ ïåðåìåííûõ"; break;
      case 4058:    error_string=" Ãëîáàëüíàÿ ïåðåìåííàÿ íå îáíàðóæåíà"; break;
      case 4059:    error_string=" Ôóíêöèÿ íå ðàçðåøåíà â òåñòîâîì ðåæèìå"; break;
      case 4060:    error_string=" Ôóíêöèÿ íå ïîäòâåðæäåíà"; break;
      case 4061:    error_string=" Îøèáêà îòïðàâêè ïî÷òû"; break;
      case 4062:    error_string=" Îæèäàåòñÿ ïàðàìåòð òèïà string"; break;
      case 4063:    error_string=" Îæèäàåòñÿ ïàðàìåòð òèïà integer"; break;
      case 4064:    error_string=" Îæèäàåòñÿ ïàðàìåòð òèïà double"; break;
      case 4065:    error_string="  êà÷åñòâå ïàðàìåòðà îæèäàåòñÿ ìàññèâ"; break;
      case 4066:    error_string=" Çàïðîøåííûå èñòîðè÷åñêèå äàííûå â ñîñòîÿíèè îáíîâëåíèÿ"; break;
      case 4067:    error_string=" Îøèáêà ïðè âûïîëíåíèè òîðãîâîé îïåðàöèè"; break;
      case 4099:    error_string=" Êîíåö ôàéëà"; break;
      case 4100:    error_string=" Îøèáêà ïðè ðàáîòå ñ ôàéëîì"; break;
      case 4101:    error_string=" Íåïðàâèëüíîå èìÿ ôàéëà"; break;
      case 4102:    error_string=" Ñëèøêîì ìíîãî îòêðûòûõ ôàéëîâ"; break;
      case 4103:    error_string=" Íåâîçìîæíî îòêðûòü ôàéë"; break;
      case 4104:    error_string=" Íåñîâìåñòèìûé ðåæèì äîñòóïà ê ôàéëó"; break;
      case 4105:    error_string=" Íè îäèí îðäåð íå âûáðàí"; break;
      case 4106:    error_string=" Íåèçâåñòíûé ñèìâîë"; break;
      case 4107:    error_string=" Íåïðàâèëüíûé ïàðàìåòð öåíû äëÿ òîðãîâîé ôóíêöèè"; break;
      case 4108:    error_string=" Íåâåðíûé íîìåð òèêåòà"; break;
      case 4109:    error_string=" Òîðãîâëÿ íå ðàçðåøåíà"; break;
      case 4110:    error_string=" Äëèííûå ïîçèöèè íå ðàçðåøåíû"; break;
      case 4111:    error_string=" Êîðîòêèå ïîçèöèè íå ðàçðåøåíû"; break;
      case 4200:    error_string=" Îáúåêò óæå ñóùåñòâóåò"; break;
      case 4201:    error_string=" Çàïðîøåíî íåèçâåñòíîå ñâîéñòâî îáúåêòà"; break;
      case 4202:    error_string=" Îáúåêò íå ñóùåñòâóåò"; break;
      case 4203:    error_string=" Íåèçâåñòíûé òèï îáúåêòà"; break;
      case 4204:    error_string=" Íåò èìåíè îáúåêòà"; break;
      case 4205:    error_string=" Îøèáêà êîîðäèíàò îáúåêòà"; break;
      case 4206:    error_string=" Íå íàéäåíî óêàçàííîå ïîäîêíî"; break;
      case 4207:    error_string=" Îøèáêà ïðè ðàáîòå ñ îáúåêòîì"; break;
     }
//----
   return(error_string);
  }
// ======================= Âûçîâ íîìåðà è îïèñàíèÿ îøèáêè âûáîðà  ==========================================
//   Ôóíêöèÿ WriteError() ïèøåò íîìåð âîçíèêøåé îøèáêè âûáîðà è å¸ ðóññêîå îïèñàíèå
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void WriteError()
  {
   GLE=GetLastError();
   ED=ErrorDescription(GLE);
   Print("Îøèáêà ", GLE, " ïðè âûáîðå îðäåðà íîìåð ",i);
   Print ("Îïèñàíèå îøèáêè - ",ED);
  }
// ======================= Îøèáêà ìîäèôèêàöèè =====================================================
//  Ôóíêöèÿ ModifError() ïèøåò íîìåð âîçíèêøåé îøèáêè ìîäèôèêàöèè è å¸ ðóññêîå îïèñàíèå
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ModifError()
  {
   GLE=GetLastError();
   ED=ErrorDescription(GLE);
   Print("Ìîäèôèêàöèÿ îðäåðà ¹ ",OrderTicket(), " âåðíóëà îøèáêó ¹ ",GLE);
   Print ("Îïèñàíèå îøèáêè: ",ED);
  }
// ======================= Ïðîâåðêà êîððåêòíîñòè ïîëüçîâàòåëüñêèõ óñòàíîâîê =============================================
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Proverka()
  {
     if(ryn_TrStop<MinLevel && ryn_TrStop!=0) 
     {
      Comment("Îøèáêà! ÒðåéëèíãÑòîï ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
      Print("Îøèáêà! ÒðåéëèíãÑòîï ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
      Alert("Îøèáêà! ÒðåéëèíãÑòîï ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
      return(0);
     }
     if(ryn_TrStop>=MinLevel && ryn_TrStep==0) 
     {
      Comment("Îøèáêà! Øàã òàðàëà ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
      Print("Îøèáêà! Øàã òàðàëà ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
      Alert("Îøèáêà! Øàã òàðàëà ðûíî÷íûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
      return(0);
     }
     if(ryn_TakeProfit<MinLevel && ryn_TakeProfit!=0) 
     {
      Comment("Îøèáêà! ryn_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
      Print("Îøèáêà! ryn_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
      Alert("Îøèáêà! ryn_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
      return(0);
     }
     if(ryn_StopLoss<MinLevel && ryn_StopLoss!=0) 
     {
      Comment("Îøèáêà! ryn_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
      Print("Îøèáêà! ryn_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
      Alert("Îøèáêà! ryn_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
      return(0);
     }
     if(st_TakeProfit<MinLevel && st_TakeProfit!=0) 
     {
      Comment("Îøèáêà! st_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
      Print("Îøèáêà! st_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
      Alert("Îøèáêà! st_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
      return(0);
     }
     if(st_StopLoss<MinLevel && st_StopLoss!=0) 
     {
      Comment("Îøèáêà! st_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
      Print("Îøèáêà! st_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
      Alert("Îøèáêà! st_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
      return(0);
     }
     if(st_TrStop<MinLevel && st_TrStop!=0) 
     {
      Comment("Îøèáêà! ÒðåéëèíãÑòîï ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
      Print("Îøèáêà! ÒðåéëèíãÑòîï ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
      Alert("Îøèáêà! ÒðåéëèíãÑòîï ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
      return(0);
     }
     if(st_TrStop>=MinLevel && st_TrStep==0) 
     { 
      Comment("Îøèáêà! øàã òàðàëà ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
      Print("Îøèáêà! ÒðåéëèíãÑòîï ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
      Alert("Îøèáêà! ÒðåéëèíãÑòîï ñòîïîâûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
      return(0);
     }
     if(st_Step<MinLevel)                   
     { 
      Comment("Îøèáêà! ïåðåìåííàÿ st_Step íå ìîæåò áûòü ìåíåå ",MinLevel);
      Print("Îøèáêà! ïåðåìåííàÿ st_Step íå ìîæåò áûòü ìåíåå ",MinLevel);
      Alert("Îøèáêà! ïåðåìåííàÿ st_Step íå ìîæåò áûòü ìåíåå ",MinLevel);
      return(0);
     }
     if(lim_TakeProfit<MinLevel && lim_TakeProfit!=0) 
     {
      Comment("Îøèáêà! lim_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
      Print("Îøèáêà! lim_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
      Alert("Îøèáêà! lim_TakeProfit íå ìîæåò áûòü ìåíåå ",MinLevel);
      return(0);
     }
     if(lim_StopLoss<MinLevel && lim_StopLoss!=0) 
     {
      Comment("Îøèáêà! lim_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
      Print("Îøèáêà! lim_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
      Alert("Îøèáêà! lim_StopLoss íå ìîæåò áûòü ìåíåå ",MinLevel);
      return(0);
     }
     if(lim_TrStop<MinLevel && lim_TrStop!=0) 
     {
      Comment("Îøèáêà! ÒðåéëèíãÑòîï ëèìèòíûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
      Print("Îøèáêà! ÒðåéëèíãÑòîï ëèìèòíûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
      Alert("Îøèáêà! ÒðåéëèíãÑòîï ëèìèòíûõ îðäåðîâ íå ìîæåò áûòü ìåíåå ",MinLevel);
      return(0);
     }
     if(lim_TrStop>=MinLevel && lim_TrStep==0) 
     {
      Comment("Îøèáêà! Øàã òàðàëà ëèìèòíûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
      Print("Îøèáêà! Øàã òàðàëà ëèìèòíûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
      Alert("Îøèáêà! Øàã òàðàëà ëèìèòíûõ îðäåðîâ íå ìîæåò áûòü ìåíåå 1");
      return(0);
     }
     if(lim_Step<MinLevel)                  
     {
      Comment("Îøèáêà! ïåðåìåííàÿ lim_Step íå ìîæåò áûòü ìåíåå ",MinLevel);
      Print("Îøèáêà! ïåðåìåííàÿ lim_Step íå ìîæåò áûòü ìåíåå ",MinLevel);
      Alert("Îøèáêà! ïåðåìåííàÿ lim_Step íå ìîæåò áûòü ìåíåå ",MinLevel);
      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 ---