Author: MqlLab.ru
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategyIt Closes Orders by itself
Indicators Used
Moving average indicator
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
ha_mazi
//+------------------------------------------------------------------+
//|                                                    Ha MaZi v1.00 |
//|                               Copyright 2015, Nikolay Khrushchev |
//|                                             http://www.MqlLab.ru |
//+------------------------------------------------------------------+
#property copyright "MqlLab.ru"
#property link      "http://www.mqllab.com"
#property strict 

extern double              lot                  = 1.0;
extern double              stop_loss            = 70;
extern double              take_profit          = 200;
extern double              noloss               = 30;
extern double              noloss_pips          = 1;
extern double              trall                = 30;
extern double              trall_start          = 40;
extern bool                ma_filter            = true;
extern bool                cycle_filter         = true;
extern bool                close_ma_cross       = false;
extern string              friday_time          = "24:00";
extern double              friday_close_profit  = 50;
extern string              menucomment01        = "========= Ïàðàìåòðû èíäèêàòîðà =========";
extern int                 zz_InpDepth          = 13;
extern int                 zz_InpDeviation      = 11;
extern int                 zz_InpBackstep       = 11;
extern int                 ma_period            = 40;
extern ENUM_MA_METHOD      ma_method            = MODE_EMA;
extern ENUM_APPLIED_PRICE  ma_price             = PRICE_CLOSE;
extern string              menucomment02        = "========= Ïðî÷èå ïàðàìåòðû =========";
extern int                 magic                = 9238;
int                        TryToTrade           = 20;
int                        WaitTime             = 1500;
extern int                 CommentSize          = 7;

int      i,r,z,// ïåðåìåííûå äëÿ ïåðåñ÷åòîâ for
         dg, dig,                               // îêðóãëåíèå ëîòîâ è öåíû
         last_ticket;                           // ïîñëåäíèå òèêåò äëÿ ïåðåñ÷åòà îðäåðîâ for
bool     Work=true,Test=false,// ôëàã ðàçðàøåíèÿ ðàáîòû è ôðàã ðàáîòû â òåñòåðå
         long_allowed=true,short_allowed=true; // ðàçðåøåíèå ïîêóïàòü è ïðîäàâàòü
double   Pp,Mnoj,// Point îêðóãëåííûé äî 2/4 çíàêà è îáðàòíûé ìíîæèòåëü
         Pp2, Mnoj2,                            // ñòàíäàðòíûé Point è îáðàòíûé ìíîæèòåëü
         min_lot, max_lot;                      // ìèíèìàëüíûé è ìàêñèìàëüíûé ëîò
string   Symb,// âàëþòà èíñòðóìåíòà
         CommentBox[],cm2;                      // êîììåíòàðèé íà ãðàôèêå
datetime time_bar;                              // âðåìÿ îòêðûòèå íóëåâîé ñâå÷è
int      time_min,time_hour;
bool     ta=true;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void start()
  {
   if(!Work) return;
   if(!IsTradeAllowed()) return;
// ïîëó÷åíèå ñèãíàëà
   if(Hour()!=time_hour || Minute()!=time_min)
     {
      time_hour= Hour();
      time_min = Minute();
      ta=true;
      if(DayOfWeek()==5)
        {
         datetime friday_time_end=StringToTime(TimeToStr(TimeCurrent(),TIME_DATE)+" "+friday_time);
         if(TimeCurrent()>=friday_time_end) ta=false;
        }
     }

   int signal=-1;
   int close=-1;
   double ma=0;
   if(time_bar!=Time[0])
     {
      time_bar=Time[0];
      // ðàñ÷åò ÌÀ
      ma=iMA(Symb,0,ma_period,0,ma_method,ma_price,1);
      if(Close[1]<ma) close=0;
      if(Close[1]>ma) close=1;

      // ïîèñê ïîñëåäíèõ 4õ òî÷åê çèã çàãà
      int    zz_points=0;
      double zz_point_price[4]={0,0,0,0};
      int    zz_point_bar[4]={0,0,0,0};
      for(i=0;i<500;i++)
        {
         double zz=iCustom(Symb,0,"ZigZag",zz_InpDepth,zz_InpDeviation,zz_InpBackstep,0,i);
         if(zz>0)
           {
            zz_point_price[zz_points]=zz;
            zz_point_bar[zz_points]=i;
            zz_points++;
            if(zz_points>=4) break;
           }
        }
      // àíàëèç òðîéêè òî÷åê, ñ íà÷àëà 0-1-2, çàòåì 1-2-3
      for(i=0;i<2;i++)
        {
         double   zz_price    = 0;
         double   line_price  = 0;

         int      high_bar    = 0;
         double   high_price  = 0;
         double   high_shift  = 0;

         int      low_bar     = 0;
         double   low_price   = 0;
         double   low_shift   = 0;

         double   price_move  = 0;
         double   price_move2 = 0;
         double   cross_price = 0;

         bool     cycle_in=false;

         if(zz_point_price[2+i]<zz_point_price[1+i])
           { // îæèäàíèå ñèãíàëà íà ïîêóïêó
            // àíàëèç ìàêñèìóìîâ 
            price_move=(zz_point_price[1+i]-zz_point_price[0+i])/(zz_point_bar[1+i]-zz_point_bar[0+i]);
            for(r=zz_point_bar[1+i]-1;r>=zz_point_bar[0+i];r--)
              {
               zz_price=zz_point_price[0+i]+price_move*(r-zz_point_bar[0+i]);
               if(high_shift>0)
                 {
                  line_price=NormalizeDouble(zz_point_price[1+i]-price_move2*(zz_point_bar[1+i]-r),dig);
                 }
               if(High[r]-zz_price>high_shift && (High[r]>line_price || high_shift==0))
                 {
                  high_shift=High[r] - zz_price;
                  high_price=High[r];
                  high_bar=r;
                  price_move2=(zz_point_price[1+i]-high_price)/(zz_point_bar[1+i]-high_bar);
                 }
              }

            // ðàñ÷åò òî÷êè äëÿ ïåðåñå÷åíèÿ
            price_move=(zz_point_price[1+i]-high_price)/(zz_point_bar[1+i]-high_bar);
            cross_price=NormalizeDouble(zz_point_price[1+i]-price_move*(zz_point_bar[1+i]-1),dig);
            // ïðîâåðêà ïåðåñå÷åíèÿ
            if(Close[1]>cross_price && Close[2]<=cross_price && (Close[1]>ma || !ma_filter))
              {
               cycle_in=false;
               if(zz_point_bar[1+i]<=zz_point_bar[2+i]/2 && zz_point_bar[0+i]>=zz_point_bar[1+i]-(zz_point_bar[2+i]-zz_point_bar[1+i])/2) cycle_in=true;

               signal=0;
               for(r=2;r<zz_point_bar[0+i];r++) if(Close[r]>cross_price) { signal=-1; break; }

               if(signal==0 && cycle_filter && !cycle_in) signal=-1;

              }
           }

         if(zz_point_price[2+i]>zz_point_price[1+i])
           { // îæèäàíèå ñèãíàëà íà ïðîäàæó
            // àíàëèç ìèíèìóìîâ    
            price_move=(zz_point_price[0+i]-zz_point_price[1+i])/(zz_point_bar[1+i]-zz_point_bar[0+i]);
            for(r=zz_point_bar[1+i]-1;r>=zz_point_bar[0+i];r--)
              {
               zz_price=zz_point_price[0+i]-price_move*(r-zz_point_bar[0+i]);
               if(low_shift>0)
                 {
                  line_price=NormalizeDouble(zz_point_price[1+i]+price_move2*(zz_point_bar[1+i]-r),dig);
                 }
               if(zz_price-Low[r]>low_shift && (Low[r]<line_price || low_shift==0))
                 {
                  low_shift=zz_price - Low[r];
                  low_price=Low[r];
                  low_bar=r;
                  price_move2=(low_price-zz_point_price[1+i])/(zz_point_bar[1+i]-low_bar);
                 }
              }
            // ðàñ÷åò òî÷êè äëÿ ïåðåñå÷åíèÿ
            price_move=(low_price-zz_point_price[1+i])/(zz_point_bar[1+i]-high_bar);
            cross_price=NormalizeDouble(zz_point_price[1+i]+price_move*(zz_point_bar[1+i]-1),dig);
            //ObjectSetDouble(0,"123",OBJPROP_PRICE,0,cross_price);
            //ObjectSetInteger(0,"321",OBJPROP_TIME,0,Time[low_bar]);
            // ïðîâåðêà ïåðåñå÷åíèÿ
            if(Close[1]<cross_price && Close[2]>=cross_price && (Close[1]<ma || !ma_filter))
              {
               cycle_in=false;
               if(zz_point_bar[1+i]<=zz_point_bar[2+i]/2 && zz_point_bar[0+i]>=zz_point_bar[1+i]-(zz_point_bar[2+i]-zz_point_bar[1+i])/2) cycle_in=true;

               signal=1;
               for(r=2;r<zz_point_bar[0+i];r++) if(Close[r]<cross_price) { signal=-1; break; }

               if(signal==1 && cycle_filter && !cycle_in) signal=-1;

              }
           }
        }
     }
// ó÷åò îðäåðîâ
   last_ticket=-1;
   for(i=OrdersTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symb && OrderMagicNumber()==magic)
     {
      if(last_ticket==OrderTicket()) continue;
      last_ticket=OrderTicket();
      if(close_ma_cross && close==OrderType()) { CloseOrder(OrderTicket()); continue; }
      if(!ta)
        {
         if(OrderType()==0 && Bid-OrderOpenPrice()<=friday_close_profit*Pp) { CloseOrder(OrderTicket()); continue; }
         if(OrderType()==1 && OrderOpenPrice()-Ask<=friday_close_profit*Pp) { CloseOrder(OrderTicket()); continue; }
        }
      if(noloss>0)
        {
         if(OrderType()==0 && NormalizeDouble(OrderOpenPrice(),Digits)>NormalizeDouble(OrderStopLoss(),Digits) && NormalizeDouble(Bid-noloss*Pp,Digits)>=NormalizeDouble(OrderOpenPrice(),Digits)) ModifyOrder(OrderTicket(),-1,0,OrderOpenPrice()+noloss_pips*Pp,0,-1);
         if(OrderType()==1 && (NormalizeDouble(OrderOpenPrice(),Digits)<NormalizeDouble(OrderStopLoss(),Digits) || OrderStopLoss()==0) && NormalizeDouble(Ask+noloss*Pp,Digits)<=NormalizeDouble(OrderOpenPrice(),Digits)) ModifyOrder(OrderTicket(),-1,0,OrderOpenPrice()-noloss_pips*Pp,0,-1);
        }
      if(trall>0)
        {
         if(OrderType()==0 && NormalizeDouble(Bid-(trall+1)*Pp,Digits)>NormalizeDouble(OrderStopLoss(),Digits) && NormalizeDouble(Bid-trall_start*Pp,Digits)>=NormalizeDouble(OrderOpenPrice(),Digits)) ModifyOrder(OrderTicket(),-1,-1,Bid-trall*Pp,-1,-1);
         if(OrderType()==1 && (NormalizeDouble(Ask+(trall+1)*Pp,Digits)<NormalizeDouble(OrderStopLoss(),Digits) || OrderStopLoss()==0) && NormalizeDouble(Ask+trall_start*Pp,Digits)<=NormalizeDouble(OrderOpenPrice(),Digits)) ModifyOrder(OrderTicket(),-1,-1,Ask+trall*Pp,-1,-1);
        }
     }
// òîðãîâîå ðåøåíèå
   if(signal==-1) return;
   if(!ta) return;
   if(signal==0) SendOrder(last_ticket,signal,lot,-1,0,ma-stop_loss*Pp,1,take_profit);
   if(signal==1) SendOrder(last_ticket,signal,lot,-1,0,ma+stop_loss*Pp,1,take_profit);
// end start      
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void init()
  {
   dig=Digits;
   Pp=Point;
   Pp2=Pp;
   Mnoj2=1/Pp;
   if(Pp==0.00001 || Pp==0.001) Pp*=10;
   Mnoj=1/Pp;
   Symb=Symbol();
   if(MarketInfo(Symb,MODE_LOTSTEP)==0.01) dg=2;
   if(MarketInfo(Symb,MODE_LOTSTEP)==0.1)  dg=1;
   min_lot=NormalizeDouble( MarketInfo(Symb,MODE_MINLOT) ,dg);
   max_lot=NormalizeDouble( MarketInfo(Symb,MODE_MAXLOT) ,dg);
   if(IsTesting() && !IsVisualMode()) Test=true;
   int k;
   if(!Test)
     {
      if(CommentSize>0) ArrayResize(CommentBox,CommentSize);
      for(k=0;k<CommentSize;k++) CommentBox[k]="";
     }
//ObjectCreate(0,"123",OBJ_HLINE,0,0,0);
//ObjectSetInteger(0,"123",OBJPROP_COLOR,clrYellow);

//ObjectCreate(0,"321",OBJ_VLINE,0,0,0);
//ObjectSetInteger(0,"321",OBJPROP_COLOR,clrYellow);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void deinit()
  {
   Comment("");
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>>         Ôóíêöèÿ îòêðûòèÿ îðäåðà
>>> Ïàðàìåòðû:
>>>   int      Ticket   - òèêåò îòêðûâàåìîãî îðäåðà      
>>>   int      Type     - òèï îòêðûâàåìîãî îðäåðà (0-BUY, 1-SELL, 2-BUYLIMIT, 3-SELLLIMIT, 4-BUYSTOP, 5-SELLSTOP)
>>>   double   LT       - îáúåì îòêðûâàåìîãî îðäåðà
>>>   
>>>   double   OP       - öåíû ïî êîòîðîé îòêðûâàåì îðäåð (åñëè Type ðàâåí 0 èëè 1, çàäàâàòü íå èìååò ñìûñëà)
>>>   int      ModeSL   - ìåòîä çàäàâàåìîãî ñòîï ëîñà (0-êîíêðåòíàÿ öåíà èíñòðóìåíòà, 1-ïóíêòû)
>>>   double   SL       - ñòîï ëîññ
>>>   int      ModeTP   - ìåòîä çàäàâàåìîãî òåéê ïðîôèòà (0-êîíêðåòíàÿ öåíà èíñòðóìåíòà, 1-ïóíêòû)
>>>   double   TP       - òåéê ïðîôèò
>>>   string   CM       - êîììåíòàðèé îðäåðà
>>>   int      MG       - ìåäæèê îðäåðà
>>>   
>>> Âîçâðàùàåìûå çíà÷åíèÿ:
>>>   Âîçâðàùàåò TRUE ïðè óñïåøíîì çàâåðøåíèè ôóíêöèè. Âîçâðàùàåò FALSE ïðè íåóäà÷íîì çàâåðøåíèè ôóíêöèè.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
bool SendOrder(int &Ticket,int Type,double LT,double OP=-1,int ModeSL=0,double SL=0,int ModeTP=0,double TP=0,string CM="",int MG=-1)
  {
   if(MG==-1) MG=magic;
   color CL;
   int k,LastError;
   bool TickeT;
   if(Type==0) CL=Blue; else  if(Type==1) CL=Red; else  if(Type==2 || Type==4) CL=DarkTurquoise; else if(Type==3 || Type==5) CL=Orange;
// ïðîâåðêà íàïðàâëåíèÿ
   if(Type==0 || Type==2 || Type==4)
     {
      if(!long_allowed) return(false);
        }else{
      if(!short_allowed) return(false);
     }
// ïðîâåðêà îáúåìà
   if(LT*MarketInfo(Symbol(),MODE_MARGINREQUIRED)>AccountFreeMargin())
     {
      PnC(StringConcatenate("[S] Íå õâàòàåò ñðåäñòâ äëÿ îòêðûòèÿ ñäåëêè ",TypeToStr(Type)," îáúåìîì: ",DoubleToStr(LT,dg)),1);
      PnC("[S] Ñîâåòíèê ïðåêðàòèë ðàáîòó",1);
      Work=false;
      return(false);
     }
   if(LT<min_lot)
     {
      PnC(StringConcatenate("[S] Îáúåì ñäåëêè ìåíüøå ìèíèìàëüíîãî ",DoubleToStr(min_lot,dg),". Áóäåò îòêðûò ìèíèìàëüíûé îáúåì"),1);
      LT=min_lot;
     }
   if(LT>max_lot)
     {
      PnC(StringConcatenate("[S] Îáúåì ñäåëêè áîëüøå ìàêñèìàëüíîãî ",DoubleToStr(min_lot,dg),". Áóäåò îòêðûò ìàêñèìàëüíûé îáúåì"),1);
      LT=max_lot;
     }
// ïðîâåðêà îòëîæåííûõ îðäåðîâ
   double Slv=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
   switch(Type)
     {
      case 2: if(Ask-OP<Slv) OP=Ask-Slv; break;
      case 3: if(OP-Bid<Slv) OP=Bid+Slv; break;
      case 4: if(OP-Ask<Slv) OP=Ask+Slv; break;
      case 5: if(Bid-OP<Slv) OP=Bid-Slv; break;
     }
// îòêðûòèå
   for(k=0;k<TryToTrade;k++)
     {
      RefreshRates();
      if(Type==0) OP=Ask;
      if(Type==1) OP=Bid;
      PnC(StringConcatenate("[S] Îòêðûòèå îðäåðà ",TypeToStr(Type)," îáúåìîì: ",DoubleToStr(LT,dg)," ïî öåíå: ",DoubleToStr(OP,dig)," ìåäæèê: ",MG," êîììåíòàðèé: ",CM),0);
      if(IsTradeAllowed())
        {
         Ticket=OrderSend(Symbol(),Type,LT,NormalizeDouble(OP,dig),3,0,0,CM,MG,0,CL);
           }else{
         PnC(StringConcatenate("[S] Òîðãîâûé ïîòîê çàíÿò, æäåì ",k),0);
         Sleep(WaitTime);
         continue;
        }
      if(Ticket>0)
        {
         PnC(StringConcatenate("[S] Óñïåøíî îòêðûò îðäåð ",Ticket),0);
         break;
        }
      LastError=Fun_Error(GetLastError());
      switch(LastError)
        {
         case 0:
            if(k==TryToTrade) return(false);
            Sleep(WaitTime);
            break;
         case 1:
            return(false);
         case 2:
            Work=false;
            return(false);
        }
     }
   if(SL==0 && TP==0) return(true);
   if(!OrderSelect(Ticket,SELECT_BY_TICKET))
     {
      PnC(StringConcatenate("[S] Îøèáêà âûáîðà îòêðûòîãî îðäåðà ",Ticket," äëÿ âûñòàâëåíèÿ ñòîïîâ"),1);
      return(false);
     }
// ïðîâåðêà è ðàñ÷åò ñòîïîâ
   if(SL!=0)
     {
      if(ModeSL==1)
        {
         if(Type==0 || Type==2 || Type==4) SL=OrderOpenPrice()-SL*Pp; else SL=OrderOpenPrice()+SL*Pp;
        }
      if(Type==0 || Type==2 || Type==4)
        {
         if(Bid-SL<Slv && SL!=0) SL=Bid-Slv;
           }else{
         if(SL-Ask<Slv && SL!=0) SL=Ask+Slv;
        }
     }
   if(TP!=0)
     {
      if(ModeTP==1)
        {
         if(Type==0 || Type==2 || Type==4) TP=OrderOpenPrice()+TP*Pp; else TP=OrderOpenPrice()-TP*Pp;
        }
      if(Type==0 || Type==2 || Type==4)
        {
         if(TP-Bid<Slv && TP!=0) TP=Bid+Slv;
           }else{
         if(Ask-TP<Slv && TP!=0) TP=Ask-Slv;
        }
     }
// âûñòàâëÿåì ñòîïû
   for(k=0;k<TryToTrade;k++)
     {
      PnC(StringConcatenate("[S] Óñòàíîâêà ñòîïîâ íà îðäåð: ",Ticket," ñ/ë: ",DoubleToStr(SL,dig)," ò/ï: ",DoubleToStr(TP,dig)),0);
      if(IsTradeAllowed())
        {
         TickeT=OrderModify(Ticket,OrderOpenPrice(),NormalizeDouble(SL,dig),NormalizeDouble(TP,dig),0,CLR_NONE);
           }else{
         PnC(StringConcatenate("[S] Òîðãîâûé ïîòîê çàíÿò, æäåì ",k),0);
         Sleep(WaitTime);
         continue;
        }
      if(TickeT)
        {
         PnC(StringConcatenate("[S] Óñïåøíî ìîäèôèöèðîâàí îðäåð ",Ticket),0);
         break;
        }
      LastError=Fun_Error(GetLastError());
      switch(LastError)
        {
         case 0:
            if(k==TryToTrade) return(false);
            Sleep(WaitTime);
            break;
         case 1:
            return(false);
         case 2:
            Work=false;
            return(false);
        }
     }
   return(true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>>         Ôóíêöèÿ ìîäèôèêàöèè îðäåðà
>>> Ïàðàìåòðû:
>>>   int      Ticket   - íîìåð îðäåðà
>>>   
>>>   double   OP       - íîâàÿ öåíà îòêðûòèÿ îðäåðà. Åñëè -1 - îñòàíåòñÿ áåç èçìåíåíèé
>>>   int      ModeSL   - ìåòîä çàäàâàåìîãî ñòîï ëîñà (0-êîíêðåòíàÿ öåíà èíñòðóìåíòà, 1-ïóíêòû)
>>>   double   SL       - íîâûé ñòîï ëîññ îðäåðà. Åñëè -1 - îñòàíåòñÿ áåç èçìåíåíèé
>>>   int      ModeTP   - ìåòîä çàäàâàåìîãî òåéê ïðîôèòà (0-êîíêðåòíàÿ öåíà èíñòðóìåíòà, 1-ïóíêòû)
>>>   double   TP       - íîâûé òåéê ïðîôèò îðäåðà. Åñëè -1 - îñòàíåòñÿ áåç èçìåíåíèé
>>>   
>>> Âîçâðàùàåìûå çíà÷åíèÿ:
>>>   Âîçâðàùàåò TRUE ïðè óñïåøíîì çàâåðøåíèè ôóíêöèè. Âîçâðàùàåò FALSE ïðè íåóäà÷íîì çàâåðøåíèè ôóíêöèè.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
bool ModifyOrder(int Ticket,double OP=-1,int ModeSL=0,double SL=0,int ModeTP=0,double TP=0)
  {
   bool TickeT;
   int k,LastError;
   TickeT=OrderSelect(Ticket,SELECT_BY_TICKET);
   if(!TickeT)
     {
      PnC("[M] Îøèáêà âûáîðà îðäåðà äëÿ ìîäèôèêàöèè ",0);
      return(false);
     }
   if(OrderCloseTime()>0)
     {
      PnC("[M] Îðäåð áûë çàêðûò èëè óäàëåí",0);
      return(false);
     }
   int Type=OrderType();
   double mo_calcl_price=OrderOpenPrice();
   if(OP>0) mo_calcl_price=OP;
   if(ModeSL==1 && SL!=-1)
     {
      if(Type==0 || Type==2 || Type==4) SL=mo_calcl_price-SL*Pp; else SL=mo_calcl_price+SL*Pp;
     }
   if(ModeTP==1 && TP!=-1)
     {
      if(Type==0 || Type==2 || Type==4) TP=mo_calcl_price+TP*Pp; else TP=mo_calcl_price-TP*Pp;
     }
   string cm;
   if(OP<0) OP=OrderOpenPrice(); else cm="öåíà " + DoubleToStr(OrderOpenPrice(),dig) + " => " + DoubleToStr(OP,dig) + "; ";
   if(SL<0) SL=OrderStopLoss(); else cm=cm+"ñ/ë " + DoubleToStr(OrderStopLoss(),dig) + " => " + DoubleToStr(SL,dig) + "; ";
   if(TP<0) TP=OrderTakeProfit(); else cm=cm+"ò/ï " + DoubleToStr(OrderTakeProfit(),dig) + " => " + DoubleToStr(TP,dig) + "; ";
   if(Type==0 || Type==3 || Type==5) cm=cm+"òåêóùàÿ öåíà Bid: "+DoubleToStr(Bid,dig);
   if(Type==1 || Type==2 || Type==4) cm=cm+"òåêóùàÿ öåíà Ask: "+DoubleToStr(Ask,dig);
   color modify_color;
   if(MathMod(OrderType(),2.0)==0) modify_color=Aqua; else modify_color=Orange;
   for(k=0;k<TryToTrade;k++)
     {
      PnC(StringConcatenate("[M] Ìîäèôèêàöèÿ îðäåðà: ",Ticket," ",cm),0);
      if(IsTradeAllowed())
        {
         TickeT=OrderModify(Ticket,NormalizeDouble(OP,dig),NormalizeDouble(SL,dig),NormalizeDouble(TP,dig),0,modify_color);
           }else{
         PnC(StringConcatenate("[M] Òîðãîâûé ïîòîê çàíÿò, æäåì ",k),0);
         Sleep(WaitTime);
         continue;
        }
      if(TickeT==true)
        {
         PnC(StringConcatenate("[M] Óñïåøíî ìîäèôèöèðîâàí îðäåð ",Ticket),0);
         return(true);
        }
      LastError=Fun_Error(GetLastError());
      switch(LastError)
        {
         case 0:
            if(k==TryToTrade) return(false);
            Sleep(WaitTime);
            break;
         case 1:
            return(false);
         case 2:
            Work=false;
            return(false);
        }
     }
   return(true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>>         Ôóíêöèÿ çàêðûòèÿ îðäåðà
>>> Ïàðàìåòðû:
>>>   int      Ticket   - íîìåð îðäåðà
>>>   
>>>   double   LT       - îáúåì êîòîðûé íåîáõîäèìî çàêðûòü. Åñëè -1 - îðäåð áóäåò çàêðûò ïîëíîñòüþ
>>>   
>>> Âîçâðàùàåìûå çíà÷åíèÿ:
>>>   Âîçâðàùàåò TRUE ïðè óñïåøíîì çàâåðøåíèè ôóíêöèè. Âîçâðàùàåò FALSE ïðè íåóäà÷íîì çàâåðøåíèè ôóíêöèè.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
bool CloseOrder(int Ticket,double LT=-1)
  {
   bool TickeT;
   double OCP;
   int k,LastError;
   TickeT=OrderSelect(Ticket,SELECT_BY_TICKET);
   if(!TickeT)
     {
      PnC("[C] Îøèáêà âûáîðà îðäåðà äëÿ çàêðûòèÿ ",0);
      return(false);
     }
   if(OrderCloseTime()>0)
     {
      PnC("[C] Îðäåð áûë çàêðûò èëè óäàëåí",0);
      return(false);
     }
   int Type=OrderType();
   if(Type>1)
     {
      PnC("[C] Îðäåð çàêðûòü íåëüçÿ, îí îòëîæåííûé ",0);
      return(false);
     }
   if(LT==-1) LT=NormalizeDouble(OrderLots(),dg); else LT=NormalizeDouble(LT,dg);
   for(k=0;k<=TryToTrade;k++)
     {
      RefreshRates();
      if(Type==0) OCP=Bid; else OCP=Ask;
      PnC(StringConcatenate("[C] Çàêðûòèå îðäåðà ",TypeToStr(Type)," íîìåð: ",Ticket," îáúåìîì: ",DoubleToStr(LT,dg)," ïî öåíå: ",DoubleToStr(OCP,dig)),0);
      if(IsTradeAllowed())
        {
         TickeT=OrderClose(Ticket,LT,NormalizeDouble(OCP,dig),30,White);
           }else{
         PnC(StringConcatenate("[C] Òîðãîâûé ïîòîê çàíÿò, æäåì ",k),0);
         Sleep(WaitTime);
         continue;
        }
      if(TickeT)
        {
         PnC(StringConcatenate("[C] Óñïåøíî çàêðûò îðäåð ",Ticket),0);
         return(true);
        }
      LastError=Fun_Error(GetLastError());
      switch(LastError)
        {
         case 0:
            if(k==TryToTrade) return(false);
            Sleep(WaitTime);
            break;
         case 1:
            return(false);
         case 2:
            Work=false;
            return(false);
        }
     }
   return(true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>>         Ôóíêöèÿ óäàëåíèÿ îðäåðà
>>> Ïàðàìåòðû:
>>>   int      Ticket   - íîìåð îðäåðà
>>>   
>>> Âîçâðàùàåìûå çíà÷åíèÿ:
>>>   Âîçâðàùàåò TRUE ïðè óñïåøíîì çàâåðøåíèè ôóíêöèè. Âîçâðàùàåò FALSE ïðè íåóäà÷íîì çàâåðøåíèè ôóíêöèè.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
bool DeleteOrder(int Ticket)
  {
   bool TickeT;
   int k,LastError;
   TickeT=OrderSelect(Ticket,SELECT_BY_TICKET);
   if(!TickeT)
     {
      PnC(StringConcatenate("[D] Îøèáêà âûáîðà îðäåðà äëÿ çàêðûòèÿ ",Ticket),0);
      return(false);
     }
   if(OrderCloseTime()>0)
     {
      PnC(StringConcatenate("[D] Îðäåð áûë çàêðûò èëè óäàëåí ",Ticket),0);
      return(false);
     }
   int Type=OrderType();
   if(Type<2)
     {
      PnC(StringConcatenate("[D] Îðäåð óäàëèòü íåëüçÿ, îí óæå èñïîëíåí ",Ticket),0);
      return(false);
     }
   for(k=0;k<=TryToTrade;k++)
     {
      PnC(StringConcatenate("[D] Óäàëåíèå îðäåðà: ",Ticket," òèï: ",TypeToStr(Type)),0);
      if(IsTradeAllowed())
        {
         TickeT=OrderDelete(Ticket);
           }else{
         PnC(StringConcatenate("[D] Òîðãîâûé ïîòîê çàíÿò, æäåì ",k),0);
         Sleep(WaitTime);
         continue;
        }
      if(TickeT)
        {
         PnC(StringConcatenate("[D] Óñïåøíî óäàëåí îðäåð ",Ticket),0);
         return(true);
        }
      LastError=Fun_Error(GetLastError());
      switch(LastError)
        {
         case 0:
            if(k==TryToTrade) return(false);
            Sleep(WaitTime);
            break;
         case 1:
            return(false);
         case 2:
            Work=false;
            return(false);
        }
     }
   return(true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>>         Ôóíêöèÿ óäàëåíèÿ è çàêðûòèÿ âñåõ îðäåðîâ
>>> Âîçâðàùàåìûå çíà÷åíèÿ:
>>>   Âîçâðàùàåò TRUE ïðè óñïåøíîì çàâåðøåíèè ôóíêöèè. Âîçâðàùàåò FALSE ïðè íåóäà÷íîì çàâåðøåíèè ôóíêöèè.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
bool CloseAll()
  {
   for(i=OrdersTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symb && OrderMagicNumber()==magic)
     {
      if(OrderType()<2)
        {
         if(!CloseOrder(OrderTicket())) return(false);
           }else{
         if(!DeleteOrder(OrderTicket())) return(false);
        }
     }
   return(true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>>         Ôóíêöèÿ óäàëåíèÿ âñåõ îðäåðîâ
>>> Âîçâðàùàåìûå çíà÷åíèÿ:
>>>   Âîçâðàùàåò TRUE ïðè óñïåøíîì çàâåðøåíèè ôóíêöèè. Âîçâðàùàåò FALSE ïðè íåóäà÷íîì çàâåðøåíèè ôóíêöèè.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
bool DeleteAll()
  {
   for(i=OrdersTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symb && OrderMagicNumber()==magic)
     {
      if(OrderType()>1)
        {
         if(!DeleteOrder(OrderTicket())) return(false);
        }
     }
   return(true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>>         Ôóíêöèÿ òåêñòîâûõ ñîîáùåíèé
>>> Îïèñàíèå:
>>>   Ôóíêöèÿ ïîçâîëÿåò îòîáðàæàòü ñèñòåìíûå ñîîáùåíèÿ íà ýêðàíå â âèäå ëåíòû â ëåâîì âåðõíåì óãëó ýêðàíà, 
>>>   çàíîñèòü èõ â æóðíàë à òàêæå ïðè íåîáõîäèìîñòè îòîáðàæàòü óâåäîìëåíèå (Alert).
>>>
>>> Ïàðàìåòðû:
>>>   string   txt      - òåêñò ñîîáùåíèÿ
>>>   int      Mode     - òèï ñîîáùåíèÿ (0-òîëüêî Print, 1-Print è Alert, 2-íè÷åãî)
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
void PnC(string txt,int Mode)
  {
   int j;
   string cm;
   if(Mode!=2)
     {
      string HR=DoubleToStr(Hour(),0);    if(StringLen(HR)<2) HR="0"+HR;
      string MN=DoubleToStr(Minute(),0);  if(StringLen(MN)<2) MN="0"+MN;
      string SC=DoubleToStr(Seconds(),0); if(StringLen(SC)<2) SC="0"+SC;
      txt=StringConcatenate(HR,":",MN,":",SC," ",Symb," ",txt);
      Print(txt);
      if(Test) return;
      if(Mode>0) Alert(txt);
      for(j=CommentSize-1;j>=1;j--) CommentBox[j]=CommentBox[j-1];
      CommentBox[0]=txt;
     }
   if(CommentSize>0)
     {
      for(j=CommentSize-1;j>=0;j--) if(CommentBox[j]!="") cm=StringConcatenate(cm,CommentBox[j],"\n");
     }
   if(CommentSize>0)
      cm=StringConcatenate(cm,"\n",cm2);
   else
      cm=StringConcatenate(cm2);
   cm=StringConcatenate(cm,"\n","MqlLab.ru");
   Comment(cm);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>>         Ôóíêöèÿ ïðåîáðàçîâàíèÿ òèïà îðäåðà
>>> Îïèñàíèå:
>>>   Ïðåîáðàçîâàíèå ÷èñëà, ñîäåðæàùåãî ÷èñëîâîå ïðåäñòàâëåíèå òèïà îðäåðà â ñòðîêó
>>>
>>> Ïàðàìåòðû:
>>>   int      Type     -  òèï îðäåðà (0-BUY, 1-SELL, 2-BUYLIMIT, 3-SELLLIMIT, 4-BUYSTOP, 5-SELLSTOP)
>>>   
>>> Âîçâðàùàåìûå çíà÷åíèÿ:
>>>    ñëó÷àå óñïåøíîãî èñïîëíåíèÿ ôóíêöèè âîçâðàùàåò ñòðîêó ñ òèïîì ïåðåìåííîé.  îáðàòíîì ñëó÷àå âîçâðàùàåò "NONE".
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
string TypeToStr(int Type)
  {
   switch(Type)
     {
      case 0: return("BUY");
      case 1: return("SELL");
      case 2: return("BUYLIMIT");
      case 3: return("SELLLIMIT");
      case 4: return("BUYSTOP");
      case 5: return("SELLSTOP");
     }
   return("NONE");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>>         Ôóíêöèÿ ïðåîáðàçîâàíèÿ òàéì ôðåéìà
>>> Îïèñàíèå:
>>>   Ïðåîáðàçîâàíèå òàéì ôðåéìà, ñîäåðæàùåãî ÷èñëîâîå ïðåäñòàâëåíèå âðåìåíè â ñòðîêó
>>>
>>> Ïàðàìåòðû:
>>>   int      pts_period   -  òàéì ôðåéì (0,1,5,15,30,60,240,1440,10080,43200)
>>>   
>>> Âîçâðàùàåìûå çíà÷åíèÿ:
>>>    ñëó÷àå óñïåøíîãî èñïîëíåíèÿ ôóíêöèè âîçâðàùàåò ñòðîêó ñ òàéì ôðåéìîì.  îáðàòíîì ñëó÷àå âîçâðàùàåò "NONE".
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
string PeriodToStr(int pts_period)
  {
   if(pts_period==0) pts_period=Period();
   switch(pts_period)
     {
      case 1:     return("M1");
      case 5:     return("M5");
      case 15:    return("M15");
      case 30:    return("M30");
      case 60:    return("H1");
      case 240:   return("H4");
      case 1440:  return("D1");
      case 10080: return("W1");
      case 43200: return("MN1");
     }
   return("NONE");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>>         Ôóíêöèÿ îáðàáîòêè îøèáîê
>>> Îïèñàíèå:
>>>   Ôóíêöèÿ âûâîäèò ñîîáùåíèå îá îøèáêå ñ òåêñòîâûì îïèñàíèåì, à òàêæå âîçâðàùàåò îòâåò â çàâèñèìîñòè îò òîãî ê êàêîé èç òðåõ ãðóïï ïðèíàäëåæèò îøèáêà.
>>>   Òàêæå â ñëó÷àå îøèáîê 4110 è 4111 (çàïðåò íà òîðãîâëþ â îïðåäåëåííîì íàïðàâëåíèè â îáùèõ íàñòðîéêàõ ýêñïåðòà) ìåíÿåò ïåðåìåííûå long.allowed è 
>>>   short.allowed íà false ñ òåì ÷òîáû â ñëåäóþùèé ðàç ôóíêöèÿ SendOrder íå èñïîëíÿëàñü â ýòîì æå íàïðàâëåíèè
>>>
>>> Ïàðàìåòðû:
>>>   int      er       - íîìåð îøèáêè
>>>   
>>> Âîçâðàùàåìûå çíà÷åíèÿ:
>>>    ñëó÷àå óñïåøíîãî èñïîëíåíèÿ ôóíêöèè âîçâðàùàåò îäèç èç òðåõ îòâåòîâ:
>>>   0 - ñëåäóåò ïîâòîðèòü âûïîëíåíèå òîðãîâîé ôóíêöèè
>>>   1 - ñëåäóåò ïðåêðàòèòü âûïîëíåíèå òîðãîâîé ôóíêöèè
>>>   2 - ñëåäóåò çàâåðøèòü ðàáîòó ñîâåòíèêà
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
int Fun_Error(int er)
  {
   switch(er)
     {
      // ãðóïïà 1: íå ïðåêðàùàòü ïîïûòêè
      case 2: PnC("Îáùàÿ îøèáêà",0); return(0);
      case 4: PnC("Òîðãîâûé ñåðâåð çàíÿò",0); return(0);
      case 8: PnC("Ñëèøêîì ÷àñòûå çàïðîñû",0); return(0);
      case 129: PnC("Íåïðàâèëüíàÿ öåíà",0); return(0);
      case 135: PnC("Öåíà èçìåíèëàñü",0); return(0);
      case 136: PnC("Íåò öåí",0); return(0);
      case 137: PnC("Áðîêåð çàíÿò",0); return(0);
      case 138: PnC("Íîâûå öåíû",0); return(0);
      case 141: PnC("Ñëèøêîì ìíîãî çàïðîñîâ",0); return(0);
      case 146: PnC("Ïîäñèñòåìà òîðãîâëè çàíÿòà",0); return(0);
      // ãðóïïà 2: ïðåêðàùàåì ïîïûòêè
      case 0: PnC("Îøèáêà îòñóòñòâóåò",0); return(1);
      case 1: PnC("Íåò îøèáêè, íî ðåçóëüòàò íå èçâåñòåí",0); return(1);
      case 3: PnC("Íåïðàâèëüíûå ïàðàìåòðû",0); return(1);
      case 6: PnC("Íåò ñâÿçè ñ òîðãîâûì ñåðâåðîì",0); return(1);
      case 128: PnC("Èñòåê ñðîê îæèäàíèÿ ñîâåðøåíèÿ ñäåëêè",0); return(1);
      case 130: PnC("Íåïðàâèëüíûå ñòîïû",0); return(1);
      case 131: PnC("Íåïðàâèëüíûé îáúåì",0); return(1);
      case 132: PnC("Ðûíîê çàêðûò",0); return(1);
      case 133: PnC("Òîðãîâëÿ çàïðåùåíà",0); return(1);
      case 134: PnC("Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè",0); return(1);
      case 139: PnC("Îðäåð çàáëîêèðîâàí è óæå îáðàáàòûâàåòñÿ",0); return(1);
      case 145: PnC("Ìîäèôèêàöèÿ çàïðåùåíà, òàê êàê îðäåð ñëèøêîì áëèçîê ê ðûíêó",0); return(1);
      case 148: PnC("Êîëè÷åñòâî îòêðûòûõ è îòëîæåííûõ îðäåðîâ äîñòèãëî ïðåäåëà, óñòàíîâëåííîãî áðîêåðîì",0); return(1);
      case 4000: PnC("Íåò îøèáêè",0); return(1);
      case 4107: PnC("Íåïðàâèëüíûé ïàðàìåòð öåíû äëÿ òîðãîâîé ôóíêöèè",0); return(1);
      case 4108: PnC("Îðäåð íå íàéäåí",0); return(1);
      case 4110: PnC("BUY ïîçèöèè íå ðàçðåøåíû",0); long_allowed=false; return(1);
      case 4111: PnC("SELL ïîçèöèè íå ðàçðåøåíû",0); short_allowed=false; return(1);
      // ãðóïïà 3: çàâåðøàåì ðàáîòó
      case 5: PnC("Ñòàðàÿ âåðñèÿ êëèåíòñêîãî òåðìèíàëà",1); return(2);
      case 7: PnC("Íåäîñòàòî÷íî ïðàâ",1); return(2);
      case 9: PnC("Íåäîïóñòèìàÿ îïåðàöèÿ íàðóøàþùàÿ ôóíêöèîíèðîâàíèå ñåðâåðà",1); return(2);
      case 64: PnC("Ñ÷åò çàáëîêèðîâàí",1); return(2);
      case 65: PnC("Íåïðàâèëüíûé íîìåð ñ÷åòà",1); return(2);
      case 140: PnC("Ðàçðåøåíà òîëüêî ïîêóïêà",1); return(2);
      case 147: PnC("Èñïîëüçîâàíèå äàòû èñòå÷åíèÿ îðäåðà çàïðåùåíî áðîêåðîì",1); return(2);
      case 149: PnC("Ïîïûòêà îòêðûòü ïðîòèâîïîëîæíóþ ïîçèöèþ ê óæå ñóùåñòâóþùåé â ñëó÷àå, åñëè õåäæèðîâàíèå çàïðåùåíî",1); return(2);
      case 150: PnC("Ïîïûòêà çàêðûòü ïîçèöèþ ïî èíñòðóìåíòó â ïðîòèâîðå÷èè ñ ïðàâèëîì FIFO",1); return(2);
      case 4109: PnC("Òîðãîâëÿ íå ðàçðåøåíà, ðàçðåøèòå òîðãîâëþ ñîâåòíèêó è ïåðåçàïóñòèòå åãî",1); return(2);
     }
   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 ---