//+------------------------------------------------------------------+
//|                                                romanovseo v2.mq4 |
//|                                                  Àëåêàåé Ðîìàíîâ |
//|                                                  seolink@list.ru |
//+------------------------------------------------------------------+
#property copyright "Àëåêñåé Ðîìàíîâ"
#property link      "seolink@list.ru"
extern string s1                    = "Moving Average";
extern int    ma_period1            = 150;
extern int    ma_period2            = 50;
extern int    ma_period3            = 4;
extern int    ma_method             = MODE_SMA;
extern string s2                    = "RSI";
extern bool   rsi_on_of             = true;
extern int    rsi_period            = 14;
extern double rsi_level_up          = 60.0;
extern double rsi_level_dn          = 40.0;
extern string s3                    = "ADX";
extern bool   adx_on_of             = true;
extern int    adx_period            = 14;
extern double adx_level             = 20.0;
extern string s4                    = "MACD";
extern bool   macd_on_of           = true;
extern bool   macd_trend           = true;
extern int    macd1_fast_ema_period = 8;
extern int    macd1_slow_ema_period = 17;
extern int    macd2_fast_ema_period = 12;
extern int    macd2_slow_ema_period = 26;
extern double macd_level_up        = 0.0025;
extern double macd_level_dn        = -0.0025;
extern string s6               ="-==-";
extern int    Magic            = 23012011;
extern double Lot              = 0.0;
extern int    StopLoss         = 500;
extern int    ZeroProfit       = 200;
extern int    Spred            = 3;
extern double Risk             = 2.0;
extern int    Slip             = 30;
extern string s7               = "Òàéìåð";
extern bool   Timer            = false;   // true - òàéìåð âêëþ÷åí, false - íåò
extern string OnTradePeriod    = "08:00";
extern string EndTradePeriod   = "22:00";
extern string s8            = "Íàñòðîéêè òðåéëèíã ñòîï-ëîññà"; 
extern bool   UseTrail             = false;   //Òrue - òðåèëèíã ñòîï-ëîññà âêëþ÷åí, false - âûêëþ÷åí
extern int    TrailStart                = 300;      //Âåëè÷èíà òðåèëèíã-ñòîïà â ïóíêòàõ 
extern int    Trail                = 200;      //Âåëè÷èíà òðåèëèíã-ñòîïà â ïóíêòàõ
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if(Total()==0&&TradeTimer()==true)OrderOpen(GetSignal());
   else
   {
   Zero();
   if(UseTrail)TrailingStop();
   CloseOrder();
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+
int GetSignal()
{
 if(buy())return(OP_BUY);
 if(sel())return(OP_SELL);
 return(-1);
}
bool buy()
{
 if(MA()!=OP_BUY) return(false);
 if(macd_on_of==true && MACD()!=OP_BUY)return(false);
 if(rsi_on_of==true && RSI()!=OP_BUY)return(false);
 if(adx_on_of==true && ADX()==false)return(false);
 
 return(true);
}
bool sel()
{
 if(MA()!=OP_SELL) return(false);
 if(macd_on_of==true && MACD()!=OP_SELL)return(false);
 if(rsi_on_of==true && RSI()!=OP_SELL)return(false);
 if(adx_on_of==true && ADX()==false)return(false);
 
 return(true);
}
int MA()
{
   double MA1 = iMA(Symbol(),0,ma_period1,0,ma_method,PRICE_CLOSE,0);
   double MA2 = iMA(Symbol(),0,ma_period2,0,ma_method,PRICE_CLOSE,0);
   double MA3 = iMA(Symbol(),0,ma_period3,0,ma_method,PRICE_CLOSE,0);
   
   if(Close[0]>MA1&&MA2>MA1&&MA3>MA2)return(OP_BUY);
   if(Close[0]<MA1&&MA2<MA1&&MA3<MA2)return(OP_SELL);
   
   return(-1);
}
int MACD()
{
 double MACD1 = iMACD(Symbol(),0,macd1_fast_ema_period,macd1_slow_ema_period,9,PRICE_CLOSE,MODE_MAIN,0); 
 double MACD2 = iMACD(Symbol(),0,macd1_fast_ema_period,macd1_slow_ema_period,9,PRICE_CLOSE,MODE_MAIN,1); 
 
 double MACD3 = iMACD(Symbol(),0,macd2_fast_ema_period,macd2_slow_ema_period,9,PRICE_CLOSE,MODE_MAIN,0); 
 double MACD4 = iMACD(Symbol(),0,macd2_fast_ema_period,macd2_slow_ema_period,9,PRICE_CLOSE,MODE_MAIN,1); 
 
 if(macd_trend)
 {
 if(MACD1>macd_level_up&&MACD1>MACD2)return(OP_BUY);
 if(MACD3<macd_level_dn&&MACD3<MACD4)return(OP_SELL);
 }
 else
 {
 if(MACD1>macd_level_up)return(OP_BUY);
 if(MACD3<macd_level_dn)return(OP_SELL);
 }
 
 return(-1);
}
int RSI()
{
 double RSI = iRSI(Symbol(),0,rsi_period,PRICE_CLOSE,0);
 
 if(RSI>rsi_level_up)return(OP_BUY);
 if(RSI<rsi_level_dn)return(OP_SELL);
 
 return(-1);
}
bool ADX()
{
 double ADX = iADX(Symbol(),0,adx_period,PRICE_CLOSE,MODE_MAIN,0); 
 
 if(ADX>adx_level)return(true);
 
 return(false);
}
int Total()
  {
   int cmd;
   int total=OrdersTotal();
   for(int i=0;i<total;i++)
     {
      if(OrderSelect(i,SELECT_BY_POS))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               cmd++;
              }
           }
        }
     }
   return(cmd);
  }
  void OrderOpen(int type)
  {
   int t=-1;
   int stoplevel;
   double price;
   double sl;
   double SL;
   double Lots;
   if(type==OP_BUY || type==OP_SELL)
     {
         if(type==OP_BUY)
           {
            RefreshRates();
            stoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
            price=NormalizeDouble(Ask,Digits);
            SL = ((price-iMA(Symbol(),0,ma_period1,0,MODE_SMA,PRICE_CLOSE,0))/Point)+StopLoss;
            if(SL>=stoplevel) {sl=NormalizeDouble(Bid -(SL*Point),Digits);Lots = LotPercent(SL);}
            if(SL<stoplevel)  {sl=NormalizeDouble(Bid -(stoplevel*Point),Digits);Lots = LotPercent(stoplevel);}
            if(AccountFreeMarginCheck(Symbol(),OP_BUY,Lots)<0)return;
           }
         if(type==OP_SELL)
           {
            RefreshRates();
            stoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
            price=NormalizeDouble(Bid,Digits);
            SL = ((iMA(Symbol(),0,ma_period1,0,MODE_SMA,PRICE_CLOSE,0)-price)/Point)+StopLoss;
            if(SL>=stoplevel) {sl=NormalizeDouble(Ask+(SL*Point),Digits);Lots = LotPercent(SL);}
            if(SL<stoplevel)  {sl=NormalizeDouble(Ask+(stoplevel*Point),Digits);Lots = LotPercent(stoplevel);}
            if(AccountFreeMarginCheck(Symbol(),OP_SELL,Lots)<0)return;
           }
         t=OrderSend(Symbol(),type,Lots,price,Slip,sl,0,NULL,Magic);
         if(t<0)ErrorBlock(GetLastError());
     }
  }
  double LotPercent(double sl)
  {
   double vol=0.0;
   double MinLot = MarketInfo(Symbol(),MODE_MINLOT);
   double MaxLot = MarketInfo(Symbol(),MODE_MAXLOT);
   if(Lot==0.0)vol=(AccountFreeMargin()*Risk)/(sl*MarketInfo(Symbol(),MODE_TICKVALUE)*100.0);
   else vol=Lot;
   if(vol < MinLot)vol = MinLot;
   if(vol > MaxLot)vol = MaxLot;
   return(NormalizeDouble(vol,Okr()));
  }
  int Okr()
  {
   double LotsStep=MarketInfo(Symbol(),MODE_LOTSTEP);
   if(LotsStep==0.01)return(2);
   if(LotsStep==0.1)return(1);
   if(LotsStep==1.0)return(0);
   return(0);
  }
  bool TradeTimer()
  {
   if(Timer==true)
     {
      datetime date=TimeCurrent();
      datetime ty=TimeYear(date);
      datetime tm=TimeMonth(date);
      datetime td1=TimeDay(date);
      datetime td2;
      datetime d1  = StrToTime (ty+"."+tm+"."+td1+" "+OnTradePeriod);
      datetime d2  = StrToTime (ty+"."+tm+"."+td1+" "+EndTradePeriod);
      if(d1>d2 && date>=d1)
        {
         td2=TimeDay(date)+1;
         d1  = StrToTime (ty+"."+tm+"."+td1+" "+OnTradePeriod);
         d2  = StrToTime (ty+"."+tm+"."+td2+" "+EndTradePeriod);
        }
      else if(d1>d2 && date<=d2)
        {
         td2=TimeDay(date)-1;
         d1  = StrToTime (ty+"."+tm+"."+td2+" "+OnTradePeriod);
         d2  = StrToTime (ty+"."+tm+"."+td1+" "+EndTradePeriod);
        }
      if(date>=d1 && date<=d2)return(true);
      else return(false);
     }
   return(true);
  }
  void CloseOrder()
 {
   int digit;
   double price;
   bool res;
   double MA2 = iMA(Symbol(),0,ma_period2,0,ma_method,PRICE_CLOSE,0);
   double MA3 = iMA(Symbol(),0,ma_period3,0,ma_method,PRICE_CLOSE,0);
   
   double MACD1 = iMACD(Symbol(),0,macd1_fast_ema_period,macd1_slow_ema_period,9,PRICE_CLOSE,MODE_MAIN,0); 
   double MACD3 = iMACD(Symbol(),0,macd2_fast_ema_period,macd2_slow_ema_period,9,PRICE_CLOSE,MODE_MAIN,0); 
 
   
   int total=OrdersTotal();
   
   for(int i=total-1; i>=0; i--)
   {
    if(OrderSelect(i,SELECT_BY_POS))
    {
     if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
     {
      if(OrderType()==OP_BUY)
      {
       if(MA3<MA2&&MACD3<macd_level_dn)
       {
        digit=MarketInfo(OrderSymbol(),MODE_DIGITS);
        price=MarketInfo(OrderSymbol(),MODE_BID);
        res=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(price,digit),Slip);
        if(!res)ErrorBlock(GetLastError());
       }
      }
      if(OrderType()==OP_SELL)
      {
       if(MA3>MA2&&MACD3>macd_level_up)
       {
        digit=MarketInfo(OrderSymbol(),MODE_DIGITS);
        price=MarketInfo(OrderSymbol(),MODE_ASK);
        res=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(price,digit),Slip);
        if(!res)ErrorBlock(GetLastError());
       }
      }
      
     }
    }
   }
 }
 void Zero()
 {
  bool res;
  int total=OrdersTotal();
  
  for(int i=total-1; i>=0; i--)
  {
   if(OrderSelect(i,SELECT_BY_POS))
   {
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
    {
     if(OrderType()==OP_BUY)
     {
      if(Bid-OrderOpenPrice()>Point*ZeroProfit&&OrderStopLoss()<OrderOpenPrice())
      {
       res = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid - ((ZeroProfit-Spred)*Point),Digits),OrderTakeProfit(),0);
       if(!res)ErrorBlock(GetLastError());
      }
     }
     if(OrderType()==OP_SELL)
     {
      if(OrderOpenPrice()-Ask>Point*ZeroProfit&&OrderStopLoss()>OrderOpenPrice())
      {
       res = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask + ((ZeroProfit-Spred)*Point),Digits),OrderTakeProfit(),0);
       if(!res)ErrorBlock(GetLastError());
      }
     }
    }
   }
  }
 }
 void TrailingStop()
 {
  bool res;
  int total=OrdersTotal();
  
  for(int i=total-1; i>=0; i--)
  {
   if(OrderSelect(i,SELECT_BY_POS))
   {
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
    {
     if(OrderType()==OP_BUY)
     {
      if(Bid-OrderOpenPrice()>Point*TrailStart)
      {
       if(Bid - OrderStopLoss() > Trail*Point) 
       {
       res = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid - (Trail*Point),Digits),OrderTakeProfit(),0);
       if(!res)ErrorBlock(GetLastError());
       }
      }
     }
     if(OrderType()==OP_SELL)
     {
      if(OrderOpenPrice()-Ask>Point*TrailStart)
      {
       if(OrderStopLoss() - Ask > Trail*Point) 
       {
       res = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask + (Trail*Point),Digits),OrderTakeProfit(),0);
       if(!res)ErrorBlock(GetLastError());
       }
      }
     }
    }
   }
  }
 }
  int ErrorBlock(int error)
  {
   switch(error)
     {
      case    0: return(0);
      case    1: {Print("Îøèáêà: 1 - ïîïûòêà èçìåíèòü óæå óñòàíîâëåííûå çíà÷åíèÿ òàêèìè æå çíà÷åíèÿìè");return(2);}
      case    2: {Print("Îøèáêà: 2 - Îáùàÿ îøèáêà. Ïðåêðàòèòü âñå ïîïûòêè òîðãîâûõ îïåðàöèé äî âûÿñíåíèÿ îáñòîÿòåëüñòâ");return(3);}
      case    3: {Print("Îøèáêà: 3 - Â òîðãîâóþ ôóíêöèþ ïåðåäàíû íåïðàâèëüíûå ïàðàìåòðû ");return(3);}
      case    4: {Print("Îøèáêà: 4 - Òîðãîâûé ñåðâåð çàíÿò");return(1);}
      case    5: {Print("Îøèáêà: 5 - Ñòàðàÿ âåðñèÿ êëèåíòñêîãî òåðìèíàëà");return(3);}
      case    6: {Print("Îøèáêà: 6 - Íåò ñâÿçè ñ òîðãîâûì ñåðâåðîì");return(2);}
      case    7: {Print("Îøèáêà: 7 - Íåäîñòàòî÷íî ïðàâ");return(3);}
      case    8: {Print("Îøèáêà: 8 - Ñëèøêîì ÷àñòûå çàïðîñû");return(2);}
      case    9: {Print("Îøèáêà: 9 - Íåäîïóñòèìàÿ îïåðàöèÿ íàðóøàþùàÿ ôóíêöèîíèðîâàíèå ñåðâåðà");return(3);}
      case   64: {Print("Îøèáêà: 64 - Ñ÷åò çàáëîêèðîâàí. Íåîáõîäèìî ïðåêðàòèòü âñå ïîïûòêè òîðãîâûõ îïåðàöèé");return(3);}
      case   65: {Print("Îøèáêà: 65 - Íåïðàâèëüíûé íîìåð ñ÷åòà. Íåîáõîäèìî ïðåêðàòèòü âñå ïîïûòêè òîðãîâûõ îïåðàöèé");return(3);}
      case  128: {Print("Îøèáêà: 128 - Èñòåê ñðîê îæèäàíèÿ ñîâåðøåíèÿ ñäåëêè");return(1);}
      case  129: {Print("Îøèáêà: 129 - Íåïðàâèëüíàÿ öåíà bid èëè ask, âîçìîæíî, íåíîðìàëèçîâàííàÿ öåíà");return(1);}
      case  130: {Print("Îøèáêà: 130 - Ñëèøêîì áëèçêèå ñòîïû èëè íåïðàâèëüíî ðàññ÷èòàííûå èëè íåíîðìàëèçîâàííûå öåíû â ñòîïàõ (èëè â öåíå îòêðûòèÿ îòëîæåííîãî îðäåðà)");return(1);}
      case  131: {Print("Îøèáêà: 131 - Íåïðàâèëüíûé îáúåì, îøèáêà â ãðàíóëÿöèè îáúåìà");return(3);}
      case  132: {Print("Îøèáêà: 132 - Ðûíîê çàêðûò");return(2);}
      case  133: {Print("Îøèáêà: 133 - Òîðãîâëÿ çàïðåùåíà");return(3);}
      case  134: {Print("Îøèáêà: 134 - Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè");return(3);}
      case  135: {Print("Îøèáêà: 135 - Öåíà èçìåíèëàñü");return(1);}
      case  136: {Print("Îøèáêà: 136 - Íåò öåí");return(1);}
      case  137: {Print("Îøèáêà: 137 - Áðîêåð çàíÿò");return(1);}
      case  138: {Print("Îøèáêà: 138 - Çàïðîøåííàÿ öåíà óñòàðåëà, ëèáî ïåðåïóòàíû bid è ask");return(1);}
      case  139: {Print("Îøèáêà: 139 - Îðäåð çàáëîêèðîâàí è óæå îáðàáàòûâàåòñÿ");return(2);}
      case  140: {Print("Îøèáêà: 140 - Ðàçðåøåíà òîëüêî ïîêóïêà. Ïîâòîðÿòü îïåðàöèþ SELL íåëüçÿ");return(2);}
      case  141: {Print("Îøèáêà: 141 - Ñëèøêîì ìíîãî çàïðîñîâ");return(2);}
      case  142: {Print("Îøèáêà: 142 - Îðäåð ïîñòàâëåí â î÷åðåäü");return(2);}
      case  143: {Print("Îøèáêà: 143 - Îðäåð ïðèíÿò äèëåðîì ê èñïîëíåíèþ");return(2);}
      case  144: {Print("Îøèáêà: 144 - Îðäåð àííóëèðîâàí ñàìèì êëèåíòîì ïðè ðó÷íîì ïîäòâåðæäåíèè ñäåëêè");return(2);}
      case  145: {Print("Îøèáêà: 145 - Ìîäèôèêàöèÿ çàïðåùåíà, òàê êàê îðäåð ñëèøêîì áëèçîê ê ðûíêó è çàáëîêèðîâàí èç-çà âîçìîæíîãî ñêîðîãî èñïîëíåíèÿ");return(2);}
      case  146: {Print("Îøèáêà: 146 - Ïîäñèñòåìà òîðãîâëè çàíÿòà. Ïîâòîðèòü ïîïûòêó òîëüêî ïîñëå òîãî, êàê ôóíêöèÿ IsTradeContextBusy âåðíåò FALSE.");return(1);}
      case  147: {Print("Îøèáêà: 147 - Èñïîëüçîâàíèå äàòû èñòå÷åíèÿ îðäåðà çàïðåùåíî áðîêåðîì");return(2);}
      case  148: {Print("Îøèáêà: 148 - Êîëè÷åñòâî îòêðûòûõ è îòëîæåííûõ îðäåðîâ äîñòèãëî ïðåäåëà, óñòàíîâëåííîãî áðîêåðîì");return(2);}
      case  149: {Print("Îøèáêà: 149 - Ïîïûòêà îòêðûòü ïðîòèâîïîëîæíóþ ïîçèöèþ ê óæå ñóùåñòâóþùåé â ñëó÷àå, åñëè õåäæèðîâàíèå çàïðåùåíî");return(2);}
      case 4000: return(0);
      case 4001: {Print("Îøèáêà: 4001 - Íåïðàâèëüíûé óêàçàòåëü ôóíêöèè");return(3);}
      case 4002: {Print("Îøèáêà: 4002 - Èíäåêñ ìàññèâà - âíå äèàïàçîíà");return(3);}
      case 4003: {Print("Îøèáêà: 4003 - Íåò ïàìÿòè äëÿ ñòåêà ôóíêöèé");return(3);}
      case 4004: {Print("Îøèáêà: 4004 - Ïåðåïîëíåíèå ñòåêà ïîñëå ðåêóðñèâíîãî âûçîâà");return(3);}
      case 4005: {Print("Îøèáêà: 4005 - Íà ñòåêå íåò ïàìÿòè äëÿ ïåðåäà÷è ïàðàìåòðîâ");return(3);}
      case 4006: {Print("Îøèáêà: 4006 - Íåò ïàìÿòè äëÿ ñòðîêîâîãî ïàðàìåòðà");return(3);}
      case 4007: {Print("Îøèáêà: 4007 - Íåò ïàìÿòè äëÿ âðåìåííîé ñòðîêè");return(3);}
      case 4008: {Print("Îøèáêà: 4008 - Íåèíèöèàëèçèðîâàííàÿ ñòðîêà");return(3);}
      case 4009: {Print("Îøèáêà: 4009 - Íåèíèöèàëèçèðîâàííàÿ ñòðîêà â ìàññèâå");return(3);}
      case 4010: {Print("Îøèáêà: 4010 - Íåò ïàìÿòè äëÿ ñòðîêîâîãî ìàññèâà");return(3);}
      case 4011: {Print("Îøèáêà: 4011 - Ñëèøêîì äëèííàÿ ñòðîêà");return(3);}
      case 4012: {Print("Îøèáêà: 4012 - Îñòàòîê îò äåëåíèÿ íà íîëü");return(3);}
      case 4013: {Print("Îøèáêà: 4013 - Äåëåíèå íà íîëü");return(3);}
      case 4014: {Print("Îøèáêà: 4014 - Íåèçâåñòíàÿ êîìàíäà");return(3);}
      case 4015: {Print("Îøèáêà: 4015 - Íåïðàâèëüíûé ïåðåõîä");return(3);}
      case 4016: {Print("Îøèáêà: 4016 - Íåèíèöèàëèçèðîâàííûé ìàññèâ");return(3);}
      case 4017: {Print("Îøèáêà: 4017 - Âûçîâû DLL íå ðàçðåøåíû");return(3);}
      case 4018: {Print("Îøèáêà: 4018 - Íåâîçìîæíî çàãðóçèòü áèáëèîòåêó");return(3);}
      case 4019: {Print("Îøèáêà: 4019 - Íåâîçìîæíî âûçâàòü ôóíêöèþ");return(3);}
      case 4020: {Print("Îøèáêà: 4020 - Âûçîâû âíåøíèõ áèáëèîòå÷íûõ ôóíêöèé íå ðàçðåøåíû");return(3);}
      case 4021: {Print("Îøèáêà: 4021 - Íåäîñòàòî÷íî ïàìÿòè äëÿ ñòðîêè, âîçâðàùàåìîé èç ôóíêöèè");return(3);}
      case 4022: {Print("Îøèáêà: 4022 - Ñèñòåìà çàíÿòà");return(3);}
      case 4050: {Print("Îøèáêà: 4050 - Íåïðàâèëüíîå êîëè÷åñòâî ïàðàìåòðîâ ôóíêöèè");return(3);}
      case 4051: {Print("Îøèáêà: 4051 - Íåäîïóñòèìîå çíà÷åíèå ïàðàìåòðà ôóíêöèè");return(3);}
      case 4052: {Print("Îøèáêà: 4052 - Âíóòðåííÿÿ îøèáêà ñòðîêîâîé ôóíêöèè");return(3);}
      case 4053: {Print("Îøèáêà: 4053 - Îøèáêà ìàññèâà");return(3);}
      case 4054: {Print("Îøèáêà: 4054 - Íåïðàâèëüíîå èñïîëüçîâàíèå ìàññèâà-òàéìñåðèè");return(3);}
      case 4055: {Print("Îøèáêà: 4055 - Îøèáêà ïîëüçîâàòåëüñêîãî èíäèêàòîðà");return(3);}
      case 4056: {Print("Îøèáêà: 4056 - Ìàññèâû íåñîâìåñòèìû");return(3);}
      case 4057: {Print("Îøèáêà: 4057 - Îøèáêà îáðàáîòêè ãëîáàëüíûåõ ïåðåìåííûõ");return(3);}
      case 4058: {Print("Îøèáêà: 4058 - Ãëîáàëüíàÿ ïåðåìåííàÿ íå îáíàðóæåíà");return(3);}
      case 4059: {Print("Îøèáêà: 4059 - Ôóíêöèÿ íå ðàçðåøåíà â òåñòîâîì ðåæèìå");return(3);}
      case 4060: {Print("Îøèáêà: 4060 - Ôóíêöèÿ íå ðàçðåøåíà");return(3);}
      case 4061: {Print("Îøèáêà: 4061 - Îøèáêà îòïðàâêè ïî÷òû");return(3);}
      case 4062: {Print("Îøèáêà: 4062 - Îæèäàåòñÿ ïàðàìåòð òèïà string");return(3);}
      case 4063: {Print("Îøèáêà: 4063 - Îæèäàåòñÿ ïàðàìåòð òèïà integer");return(3);}
      case 4064: {Print("Îøèáêà: 4064 - Îæèäàåòñÿ ïàðàìåòð òèïà double");return(3);}
      case 4065: {Print("Îøèáêà: 4065 -  êà÷åñòâå ïàðàìåòðà îæèäàåòñÿ ìàññèâ");return(3);}
      case 4066: {Print("Îøèáêà: 4066 - Çàïðîøåííûå èñòîðè÷åñêèå äàííûå â ñîñòîÿíèè îáíîâëåíèÿ");return(3);}
      case 4067: {Print("Îøèáêà: 4067 - Îøèáêà ïðè âûïîëíåíèè òîðãîâîé îïåðàöèè");return(3);}
      case 4099: {Print("Îøèáêà: 4099 - Êîíåö ôàéëà");return(3);}
      case 4100: {Print("Îøèáêà: 4100 - Îøèáêà ïðè ðàáîòå ñ ôàéëîì");return(3);}
      case 4101: {Print("Îøèáêà: 4101 - Íåïðàâèëüíîå èìÿ ôàéëà");return(3);}
      case 4102: {Print("Îøèáêà: 4102 - Ñëèøêîì ìíîãî îòêðûòûõ ôàéëîâ");return(3);}
      case 4103: {Print("Îøèáêà: 4103 - Íåâîçìîæíî îòêðûòü ôàéë");return(3);}
      case 4104: {Print("Îøèáêà: 4104 - Íåñîâìåñòèìûé ðåæèì äîñòóïà ê ôàéëó");return(3);}
      case 4105: {Print("Îøèáêà: 4105 - Íè îäèí îðäåð íå âûáðàí");return(3);}
      case 4106: {Print("Îøèáêà: 4106 - Íåèçâåñòíûé ñèìâîë");return(3);}
      case 4107: {Print("Îøèáêà: 4107 - Íåïðàâèëüíûé ïàðàìåòð öåíû äëÿ òîðãîâîé ôóíêöèè");return(2);}
      case 4108: {Print("Îøèáêà: 4108 - Íåâåðíûé íîìåð òèêåòà");return(2);}
      case 4109: {Print("Îøèáêà: 4109 - Òîðãîâëÿ íå ðàçðåøåíà. Íåîáõîäèìî âêëþ÷èòü îïöèþ Ðàçðåøèòü ñîâåòíèêó òîðãîâàòü â ñâîéñòâàõ ýêñïåðòà");return(3);}
      case 4110: {Print("Îøèáêà: 4110 - Äëèííûå ïîçèöèè íå ðàçðåøåíû. Íåîáõîäèìî ïðîâåðèòü ñâîéñòâà ýêñïåðòà");return(2);}
      case 4111: {Print("Îøèáêà: 4111 - Êîðîòêèå ïîçèöèè íå ðàçðåøåíû. Íåîáõîäèìî ïðîâåðèòü ñâîéñòâà ýêñïåðòà");return(2);}
      case 4200: {Print("Îøèáêà: 4200 - Îáúåêò óæå ñóùåñòâóåò");return(3);}
      case 4201: {Print("Îøèáêà: 4201 - Çàïðîøåíî íåèçâåñòíîå ñâîéñòâî îáúåêòà");return(3);}
      case 4202: {Print("Îøèáêà: 4202 - Îáúåêò íå ñóùåñòâóåò");return(2);}
      case 4203: {Print("Îøèáêà: 4203 - Íåèçâåñòíûé òèï îáúåêòà");return(3);}
      case 4204: {Print("Îøèáêà: 4204 - Íåò èìåíè îáúåêòà");return(3);}
      case 4205: {Print("Îøèáêà: 4205 - Îøèáêà êîîðäèíàò îáúåêòà");return(3);}
      case 4206: {Print("Îøèáêà: 4206 - Íå íàéäåíî óêàçàííîå ïîäîêíî");return(3);}
      case 4207: {Print("Îøèáêà: 4207 - Îøèáêà ïðè ðàáîòå ñ îáúåêòîì");return(3);}
      default:   {Print("Íåèçâåñòíàÿ îøèáêà: ",error);return(3);}
     }
  }
             
            
            
            
Comments