//+------------------------------------------------------------------+
//|                                                       Errors.mq4 |
//|                                                         SnowBars |
//|                           https://www.mql5.com/ru/users/snowbars |
//+------------------------------------------------------------------+
#property copyright "SnowBars"
#property link      "https://www.mql5.com/ru/users/snowbars"
#property version   "1.00"
#property strict
#property indicator_chart_window
enum BASE_CORNER {Top,Bottom};
input BASE_CORNER CORNER=Bottom;// Позиция индикатора(верх/низ)
//---
string StringError,MQL_name;
int G,E;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   MQL_name=MQLInfoString(MQL_PROGRAM_NAME);
   StringError="Все работает, ошибок нет!";
   DrawButton("OK",StringError,0,19,(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0),20,clrBlack,clrWhite,clrWhite,8);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   ObjectsDeleteAll(0,MQL_name);
  }
//--------------------------------------------------------------------

void OnChartEvent(const int id,const long &x,const double &y,const string &sparam)
  {
   if(id==9){DrawButton("OK",StringError,0,19,(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0),20,clrBlack,clrWhite,clrWhite,8);}
   if(id==CHARTEVENT_OBJECT_CLICK && sparam==MQL_name+"OK"){
      E=0;
      StringError="Все работает, ошибок нет!";
      DrawButton("OK",StringError,0,19,(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0),20,clrBlack,clrWhite,clrWhite,8);}
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   GLError(GetLastError());
   if(E!=0){DrawButton("OK",StringError+" - нажмите, чтобы отметить прочтенным ",0,19,(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0),20,clrBlack,clrRed,clrRed,8);}
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//--------------------------------------------------------------------
void DrawButton(string name="Button",string text="Text",int x=0,int y=0,int width=20,int height=10,color BGCOLOR=clrGreen,color clrBORDER=clrWhite,color clrTXT=clrWhite,int TxtSize=8,int sub_window=0)
  {
   name=MQL_name+name;
   if(ObjectFind(0,name)<0)
     {
      ObjectCreate(0,name,OBJ_BUTTON,sub_window,0,0);
      ObjectSetInteger(0,name,OBJPROP_XSIZE,width);
      ObjectSetInteger(0,name,OBJPROP_YSIZE,height);
      ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,clrBORDER);
      ObjectSetInteger(0,name,OBJPROP_BGCOLOR,BGCOLOR);
      ObjectSetInteger(0,name,OBJPROP_FONTSIZE,TxtSize);
      ObjectSetInteger(0,name,OBJPROP_COLOR,clrTXT);
      ObjectSetString(0,name,OBJPROP_TEXT,text);
      ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
      if(CORNER==1){ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_LOWER);}
      if(CORNER==0){ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);}
      ObjectSetInteger(0,name,OBJPROP_BACK,false);
      ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
      ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
      ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
     }
   else
     {
      ObjectSetInteger(0,name,OBJPROP_XSIZE,width);
      ObjectSetInteger(0,name,OBJPROP_YSIZE,height);
      if(CORNER==1)
        {
         ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_LOWER);
         ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
        }
      if(CORNER==0)
        {
         ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
         ObjectSetInteger(0,name,OBJPROP_YDISTANCE,-1);
        }
      ObjectSetInteger(0,name,OBJPROP_COLOR,clrTXT);
      ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,clrBORDER);
      ObjectSetInteger(0,name,OBJPROP_BGCOLOR,BGCOLOR);
      ObjectSetString(0,name,OBJPROP_TEXT,text);
     }
  }
//-------------------------------------------------------------------   
void GLError(int GLE)
  {
   if(GLE!=G)
     {E=GLE;
      G=GLE;
      switch(GLE)
        {
         case 1:  { StringError="Ошибка #"+DoubleToString(GLE,0)+", Нет ошибки, но результат неизвестен";break; }
         case 2:  { StringError="Ошибка #"+DoubleToString(GLE,0)+", Общая ошибка";break;}
         case 3:  { StringError="Ошибка #"+DoubleToString(GLE,0)+", Неправильные параметры";break;}
         case 4:  { StringError="Ошибка #"+DoubleToString(GLE,0)+", Торговый сервер занят"; break;}
         case 5:  { StringError="Ошибка #"+DoubleToString(GLE,0)+", Старая версия клиентского терминала";break;}
         case 6:  { StringError="Ошибка #"+DoubleToString(GLE,0)+", Нет связи с торговым сервером"; break;}
         case 7:  { StringError="Ошибка #"+DoubleToString(GLE,0)+", Недостаточно прав"; break; }
         case 8:  { StringError="Ошибка #"+DoubleToString(GLE,0)+", Слишком частые запросы";break;}
         case 9:  { StringError="Ошибка #"+DoubleToString(GLE,0)+", Недопустимая операция, нарушающая функционирование сервера";break;}
         case 64: { StringError="Ошибка #"+DoubleToString(GLE,0)+", Счет заблокирован";break;}
         case 65: { StringError="Ошибка #"+DoubleToString(GLE,0)+", Неправильный номер счета";break; }
         case 128:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Истек срок ожидания совершения сделки";break;   }
         case 129:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Неправильная цена";break;}
         case 130:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Неправильные стопы";break;}
         case 131:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Неправильный объем";break; }
         case 132:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Рынок закрыт";break;}
         case 133:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Торговля запрещена";break; }
         case 134:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Недостаточно денег для совершения операции";break;}
         case 135:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Цена изменилась";break; }
         case 136:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Нет цен";break;}
         case 137:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Брокер занят";break; }
         case 138:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Новые цены";break;}
         case 139:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Ордер заблокирован и уже обрабатывается";break; }
         case 140:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Разрешена только покупка";break; }
         case 141:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Слишком много запросов ";break;      }
         case 145:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Модификация запрещена, так как ордер слишком близок к рынку";break;}
         case 146:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Подсистема торговли занята";break;}
         case 147:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Использование даты истечения ордера запрещено брокером";break; }
         case 148:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Количество открытых и отложенных ордеров достигло предела, установленного брокером";break;}
         case 149:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Попытка открыть противоположный ордер в случае, если хеджирование запрещеноа";break;}
         case 150:{ StringError="Ошибка #"+DoubleToString(GLE,0)+", Попытка закрыть позицию по инструменту в противоречии с правилом FIFO";break;}
         case 4001:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неправильный указатель функциин";break;}
         case 4002:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Индекс массива - вне диапазона";break;}
         case 4003:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Нет памяти для стека функций";break;}
         case 4004:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Переполнение стека после рекурсивного вызова";break;}
         case 4005:{StringError="Ошибка #"+DoubleToString(GLE,0)+", На стеке нет памяти для передачи параметров";break;}
         case 4006:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Нет памяти для строкового параметра";break;}
         case 4007:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Нет памяти для временной строки";break;}
         case 4008:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неинициализированная строка";break;}
         case 4009:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неинициализированная строка в массиве";break;}
         case 4010:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Нет памяти для строкового массива";break;}
         case 4011:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Слишком длинная строка";break;}
         case 4012:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Остаток от деления на ноль";break;}
         case 4013:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Деление на ноль";break;}
         case 4014:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неизвестная команда";break;}
         case 4015:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неправильный переход";break;}
         case 4016:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неинициализированный массив";break;}
         case 4017:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Вызовы DLL не разрешены";break;}
         case 4018:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Невозможно загрузить библиотеку";break;}
         case 4019:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Невозможно вызвать функцию";break;}
         case 4020:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Вызовы внешних библиотечных функций не разрешены";break;}
         case 4021:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Недостаточно памяти для строки, возвращаемой из функции";break;}
         case 4022:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Система занята";break;}
         case 4023:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Критическая ошибка вызова DLL-функции";break;}
         case 4024:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Внутренняя ошибка";break;}
         case 4025:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Нет памяти";break;}
         case 4026:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неверный указатель";break;}
         case 4027:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Слишком много параметров форматирования строки";break;}
         case 4028:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Число параметров превышает число параметров форматирования строки";break;}
         case 4029:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неверный массив";break;}
         case 4030:{StringError="Ошибка #"+DoubleToString(GLE,0)+", График не отвечает";break;}
         case 4050:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неправильное количество параметров функции";break;}
         case 4051:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Недопустимое значение параметра функции";break;}
         case 4052:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Внутренняя ошибка строковой функции";break;}
         case 4053:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка массиваа";break;}
         case 4054:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неправильное использование массива-таймсерии";break;}
         case 4055:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка пользовательского индикатора";break;}
         case 4056:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Массивы несовместимы";break;}
         case 4057:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка обработки глобальных переменных";break;}
         case 4058:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Глобальная переменная не обнаружена";break;}
         case 4059:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Функция не разрешена в тестовом режиме";break;}
         case 4060:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Функция не разрешена";break;}
         case 4061:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка отправки почты";break;}
         case 4062:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ожидается параметр типа string";break;}
         case 4063:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ожидается параметр типа integer";break;}
         case 4064:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ожидается параметр типа double";break;}
         case 4065:{StringError="Ошибка #"+DoubleToString(GLE,0)+", В качестве параметра ожидается массив";break;}
         case 4066:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Запрошенные исторические данные в состоянии обновления";break;}
         case 4067:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка при выполнении торговой операции";break;}
         case 4068:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ресурс не найден";break;}
         case 4069:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ресурс не поддерживается";break;}
         case 4070:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Дубликат ресурса";break;}
         case 4071:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка инициализации пользовательского индикатора";break;}
         case 4072:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка загрузки пользовательского индикатора";break;}
         case 4073:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Нет исторических данных";break;}
         case 4074:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Не хватает памяти для исторических данных";break;}
         case 4075:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Не хватает памяти для расчёта индикатора";break;}
         case 4099:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Конец файла";break;}
         case 4100:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка при работе с файлом";break;}
         case 4101:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неправильное имя файла";break;}
         case 4102:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Слишком много открытых файлов";break;}
         case 4103:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Невозможно открыть файл";break;}
         case 4104:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Несовместимый режим доступа к файлу";break;}
         case 4105:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ни один ордер не выбран";break;}
         case 4106:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неизвестный символ";break;}
         case 4107:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неправильный параметр цены для торговой функции";break;}
         case 4108:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неверный номер тикета";break;}
         case 4109:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Торговля не разрешена. Необходимо включить опцию (Разрешить советнику торговать) в свойствах эксперта";break;}
         case 4110:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ордера на покупку не разрешены. Необходимо проверить свойства эксперта";break;}
         case 4111:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ордера на продажу не разрешены. Необходимо проверить свойства эксперта";break; }
         case 4112:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Автоматическая торговля с помощью экспертов/скриптов запрещена на стороне сервера";break;}
         case 4200:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Объект уже существует";break;}
         case 4201:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Запрошено неизвестное свойство объекта";break;}
         case 4202:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Объект не существует";break;}
         case 4203:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неизвестный тип объекта";break;}
         case 4204:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Нет имени объекта";break;}
         case 4205:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка координат объекта";break;}
         case 4206:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Не найдено указанное подокно";break;}
         case 4207:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка при работе с объектом";break;}
         case 4210:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неизвестное свойство графика";break;}
         case 4211:{StringError="Ошибка #"+DoubleToString(GLE,0)+", График не найден";break;}
         case 4212:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Не найдено подокно графика";break;}
         case 4213:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Индикатор не найден";break;}
         case 4220:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка выбора инструмента";break;}
         case 4250:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка отправки push-уведомления";break;}
         case 4251:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка параметров push-уведомления";break;}
         case 4252:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Уведомления запрещены";break;}
         case 4253:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Слишком частые запросы отсылки push-уведомлений";break;}
         case 4260:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Не указан FTP сервер";break;}
         case 4261:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Не указан FTP логин";break;}
         case 4262:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка при подключении к FTP серверу";break;}
         case 4263:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Подключение к FTP серверу закрыто";break;}
         case 4264:{StringError="Ошибка #"+DoubleToString(GLE,0)+", На FTP сервере не найдена директория для выгрузки файла";break;}
         case 4265:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Не найден файл в директории MQL4"+CharToStr(92)+"Files для отправки на FTP сервер";break;}
         case 4266:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка при передаче файла на FTP сервер";break;}
         case 5001:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Слишком много открытых файлов";break;}
         case 5002:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неверное имя файла";break;}
         case 5003:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Слишком длинное имя файла";break;}
         case 5004:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка открытия файла";break;}
         case 5005:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка размещения буфера текстового файла";break;}
         case 5006:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка удаления файла";break;}
         case 5007:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неверный хендл файла (файл закрыт или не был открыт)";break;}
         case 5008:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неверный хендл файла (индекс хендла отсутствует в таблице)";break;}
         case 5009:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Файл должен быть открыт с флагом FILE_WRITE";break;}
         case 5010:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Файл должен быть открыт с флагом FILE_READ";break;}
         case 5011:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Файл должен быть открыт с флагом FILE_BIN";break;}
         case 5012:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Файл должен быть открыт с флагом FILE_TXT";break;}
         case 5013:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Файл должен быть открыт с флагом FILE_TXT или FILE_CSV";break;}
         case 5014:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Файл должен быть открыт с флагом FILE_CSV";break;}
         case 5015:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка чтения файла";break;}
         case 5016:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка записи файла";break;}
         case 5017:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Размер строки должен быть указан для двоичных файлов";break;}
         case 5018:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неверный тип файла (для строковых массивов-TXT, для всех других-BIN)";break;}
         case 5019:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Файл является директорией";break;}
         case 5020:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Файл не существует";break;}
         case 5021:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Файл не может быть перезаписан";break;}
         case 5022:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Неверное имя директории";break;}
         case 5023:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Директория не существует";break;}
         case 5024:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Указанный файл не является директорией";break;}
         case 5025:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка удаления директории";break;}
         case 5026:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка очистки директории";break;}
         case 5027:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка изменения размера массива";break;}
         case 5028:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка изменения размера строки";break;}
         case 5029:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Структура содержит строки или динамические массивы";break;}
         case 5200:{StringError="Ошибка #"+DoubleToString(GLE,0)+", URL не прошел проверку";break;}
         case 5201:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Не удалось подключиться к указанному URL";break;}
         case 5202:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Превышен таймаут получения данных";break;}
         case 5203:{StringError="Ошибка #"+DoubleToString(GLE,0)+", Ошибка в результате выполнения HTTP запроса";break;}
        }
      Print(StringError);
     }}
//+------------------------------------------------------------------+
