MT5 - в тестере не читаются глобальнаые переменные....

 

в тестере при попытке прочитать GlobalVariableGet(...)

получаю  ошибку, попутно кто-нибудь подскажет как по коду ошибки получить ее описание, не могу в МТ5 найти библиотеку с этой функцией...

ERR_GLOBALVARIABLE_NOT_FOUND

4501

Глобальная переменная клиентского терминала не найдена

 
Denis Sartakov:

в тестере при попытке прочитать GlobalVariableGet(...)

получаю  ошибку, попутно кто-нибудь подскажет как по коду ошибки получить ее описание, не могу в МТ5 найти библиотеку с этой функцией...

ERR_GLOBALVARIABLE_NOT_FOUND

4501

Глобальная переменная клиентского терминала не найдена

А Вы уверены что предварительно эта глобальная переменная была создана ?

 
Yuriy Zaytsev:

А Вы уверены что предварительно эта глобальная переменная была создана ?

дело вот в чем, я думаю, буду проверять:

глобальные переменные создаются скриптом на реальном графике в реальном времени,

программа в отладчике работает в прошлом времени по отношению к времени создания переменных, поэтому они для нее

не существуют...

юра подскажи, пожалуйста как по коду ошибки получить ее описание, не могу в МТ5 найти библиотеку с этой функцией...

 
Denis Sartakov:

дело вот в чем, я думаю, буду проверять:

глобальные переменные создаются скриптом на реальном графике в реальном времени,

программа в отладчике работает в прошлом времени по отношению к времени создания переменных, поэтому они для нее

не существуют...

юра подскажи, пожалуйста как по коду ошибки получить ее описание, не могу в МТ5 найти библиотеку с этой функцией...

Правда, я не Юра, но тоже сгожусь ))

Долбанный сайт опять не вставляет код...еще попытка

#ifndef Errors
#define Errors

//+------------------------------------------------------------------+
//|                                                       Errors.mqh |
//|                                               Alexey Volchanskiy |
//|                                         https://mql.gnomio.com/  |
//+------------------------------------------------------------------+
#property copyright "Alexey Volchanskiy"
#property link      "http://www..ru"
#property strict

#include <stderror.mqh>
#include <stdlib.mqh>

// узнает код последней ошибки и возвращает строку с описанием
// код ошибки возвращается, т.к. передается по ссылке
string GetMyLastError(int &err)
{
   err = GetLastError();
   string serr = ErrorDescription(err);
   ResetLastError();
   return(serr);
}

// узнает код последней ошибки и возвращает строку с описанием
string GetMyLastError()
{
   int err = GetLastError();
   string serr = ErrorDescription(err);
   ResetLastError();
   return(serr);
}
#endif

В прошлый раз перекрестится забыл ) Вставилось! Спасиба Господи!

А без шуток надо после кода вставлять пустую строку, сайт суров, без этого не пропускает 

 
Alexey Volchanskiy:

Правда, я не Юра, но тоже сгожусь ))

Долбанный сайт опять не вставляет код...еще попытка

В прошлый раз перекрестится забыл ) Вставилось! Спасиба Господи!

А без шуток надо после кода вставлять пустую строку, сайт суров, без этого не пропускает 

странно, но у меня этих файлов в МТ5 нет, если вас не затруднит, киньте их прямо здесь...

#include <stderror.mqh>
#include <stdlib.mqh>
 
Denis Sartakov:

дело вот в чем, я думаю, буду проверять:

глобальные переменные создаются скриптом на реальном графике в реальном времени,

программа в отладчике работает в прошлом времени по отношению к времени создания переменных, поэтому они для нее

не существуют...

юра подскажи, пожалуйста как по коду ошибки получить ее описание, не могу в МТ5 найти библиотеку с этой функцией...

Денис,

перед вызовом этой функции    GlobalVariableGet("имяпеременной")

можно вызвать вот эту GlobalVariableCheck("имяпеременной")

и если получаешь false это означает что глобальной переменной нет


 
Denis Sartakov:

дело вот в чем, я думаю, буду проверять:

глобальные переменные создаются скриптом на реальном графике в реальном времени,

программа в отладчике работает в прошлом времени по отношению к времени создания переменных, поэтому они для нее

не существуют...

юра подскажи, пожалуйста как по коду ошибки получить ее описание, не могу в МТ5 найти библиотеку с этой функцией...

например в редакторе MQL5  нажимаем F1

набираем в закладке введите ключевое слово для поиска

GetLastError

затем кликайте  например


Коды возврата торгового сервера

увидите список ошибок - правда это касается только ошибок возвращаемых торговым  сервером


---

Возвращаемое значение

Возвращает значение последней ошибки, произошедшей во время исполнения mql5-программы.

кликайте по ссылке  ошибки

а тут вы увидите  более широкий список ошибок





 
Yuriy Zaytsev:

например в редакторе MQL5  нажимаем F1

набираем в закладке введите ключевое слово для поиска

GetLastError

затем кликайте  например


Коды возврата торгового сервера

увидите список ошибок - правда это касается только ошибок возвращаемых торговым  сервером


---

Возвращаемое значение

Возвращает значение последней ошибки, произошедшей во время исполнения mql5-программы.

кликайте по ссылке  ошибки

а тут вы увидите  более широкий список ошибок





юра, привет. все я это знаю, что ты говоришь, я не могу найти в МТ5 билиотеку с функцией string ErrorDescription(GetLastError())...

у меня нет в МТ5 этих вот файлов :

#include <stderror.mqh>
#include <stdlib.mqh>
 
Denis Sartakov:

юра, привет. все я это знаю, что ты говоришь, я не могу найти в МТ5 билиотеку с функцией string ErrorDescription(GetLastError())...

у меня нет в МТ5 этих вот файлов :

Ааа , так это я понимаю как пример  вот от сюда  ?

https://www.mql5.com/ru/docs/basis/preprosessor/import


если так то ясно


дело в том что в каталоге ..\MQL5\include

этого файла и нет в базовой поставке

--

это  привели как пример.. 

а в MQL4\include  два этих файла есть


Вообще - на форуме если долго рыться можно найти вот такую функцию

msgErrors

или ее аналог


и где то и в моих не очень многочисленных исходниках на форуме  возможно была

ее легко приспособить под MQL5  ну только коды - надо взять из MQL5.HELP

у меня просто практически за 10 лет  разработок mql   было всего несколько заказов на MQL5 и  кстати все  были в 2016 году

потому нет готовой под mql5


string msgErrors(int error_code)
{
   string strError;
   switch(error_code)
   {
      case        0: strError=error_code+" Нет ошибки                                                   "; break;
      case        1: strError=error_code+" Нет ошибки, но результат неизвестен                          "; break;
      case        2: strError=error_code+" Общая ошибка                                                 "; break;
      case        3: strError=error_code+" Неправильные параметры                                       "; break;
      case        4: strError=error_code+" Торговый сервер занят                                        "; break;
      case        5: strError=error_code+" Старая версия клиентского терминала                          "; break;
      case        6: strError=error_code+" Нет связи с торговым сервером                                "; break;
      case        7: strError=error_code+" Недостаточно прав                                            "; break;
      case        8: strError=error_code+" Слишком частые запросы                                       "; break;
      case        9: strError=error_code+" Недопустимая операция нарушающая функционирование сервера    "; break;
      case       64: strError=error_code+" Счет заблокирован                                            "; break;
      case       65: strError=error_code+" Неправильный номер счета                                     "; break;
      case      128: strError=error_code+" Истек срок ожидания совершения сделки                        "; break;
      case      129: strError=error_code+" Неправильная цена                                            "; break;
      case      130: strError=error_code+" Неправильные стопы                                           "; break;
      case      131: strError=error_code+" Неправильный объем                                           "; break;
      case      132: strError=error_code+" Рынок закрыт                                                 "; break;
      case      133: strError=error_code+" Торговля запрещена                                           "; break;
      case      134: strError=error_code+" Недостаточно денег для совершения операции                   "; break;
      case      135: strError=error_code+" Цена изменилась                                              "; break;
      case      136: strError=error_code+" Нет цен                                                      "; break;
      case      137: strError=error_code+" Брокер занят                                                 "; break;
      case      138: strError=error_code+" Новые цены                                                   "; break;
      case      139: strError=error_code+" Ордер заблокирован и уже обрабатывается                      "; break;
      case      140: strError=error_code+" Разрешена только покупка                                     "; break;
      case      141: strError=error_code+" Слишком много запросов                                       "; break;
      case      145: strError=error_code+" Модификация запрещена, так как ордер слишком близок к рынку  "; break;
      case      146: strError=error_code+" Подсистема торговли занята                                   "; break;
      case      147: strError=error_code+" Использование даты истечения ордера запрещено брокером       "; break;
      case      148: strError=error_code+" Количество ордеров достигло предела разрешенного брокером    "; break;

      case     4000: strError=error_code+" Нет ошибки                                                  "; break;
      case     4001: strError=error_code+" Неправильный указатель функции                              "; break;
      case     4002: strError=error_code+" Индекс массива - вне диапазона                              "; break;
      case     4003: strError=error_code+" Нет памяти для стека функций                                "; break;
      case     4004: strError=error_code+" Переполнение стека после рекурсивного вызова                "; break;
      case     4005: strError=error_code+" На стеке нет памяти для передачи параметров                 "; break;
      case     4006: strError=error_code+" Нет памяти для строкового параметра                         "; break;
      case     4007: strError=error_code+" Нет памяти для временной строки                             "; break;
      case     4008: strError=error_code+" Неинициализированная строка                                 "; break;
      case     4009: strError=error_code+" Неинициализированная строка в массиве                       "; break;
      case     4010: strError=error_code+" Нет памяти для строкового массива                           "; break;
      case     4011: strError=error_code+" Слишком длинная строка                                      "; break;
      case     4012: strError=error_code+" Остаток от деления на ноль                                  "; break;
      case     4013: strError=error_code+" Деление на ноль                                             "; break;
      case     4014: strError=error_code+" Неизвестная команда                                         "; break;
      case     4015: strError=error_code+" Неправильный переход                                        "; break;
      case     4016: strError=error_code+" Неинициализированный массив                                 "; break;
      case     4017: strError=error_code+" Вызовы DLL не разрешены                                     "; break;
      case     4018: strError=error_code+" Невозможно загрузить библиотеку                             "; break;
      case     4019: strError=error_code+" Невозможно вызвать функцию                                  "; break;
      case     4020: strError=error_code+" Вызовы внешних библиотечных функций не разрешены            "; break;
      case     4021: strError=error_code+" Недостаточно памяти для строки, возвращаемой из функции     "; break;
      case     4022: strError=error_code+" Система занята                                              "; break;
      case     4050: strError=error_code+" Неправильное количество параметров функции                  "; break;
      case     4051: strError=error_code+" Недопустимое значение параметра функции                     "; break;
      case     4052: strError=error_code+" Внутренняя ошибка строковой функции                         "; break;
      case     4053: strError=error_code+" Ошибка массива                                              "; break;
      case     4054: strError=error_code+" Неправильное использование массива-таймсерии                "; break;
      case     4055: strError=error_code+" Ошибка пользовательского индикатора                         "; break;
      case     4056: strError=error_code+" Массивы несовместимы                                        "; break;
      case     4057: strError=error_code+" Ошибка обработки глобальныех переменных                     "; break;
      case     4058: strError=error_code+" Глобальная переменная не обнаружена                         "; break;
      case     4059: strError=error_code+" Функция не разрешена в тестовом режиме                      "; break;
      case     4060: strError=error_code+" Функция не подтверждена                                     "; break;
      case     4061: strError=error_code+" Ошибка отправки почты                                       "; break;
      case     4062: strError=error_code+" Ожидается параметр типа string                              "; break;
      case     4063: strError=error_code+" Ожидается параметр типа integer                             "; break;
      case     4064: strError=error_code+" Ожидается параметр типа double                              "; break;
      case     4065: strError=error_code+" В качестве параметра ожидается массив                       "; break;
      case     4066: strError=error_code+" Запрошенные исторические данные в состоянии обновления      "; break;
      case     4067: strError=error_code+" Ошибка при выполнении торговой операции                     "; break;
      case     4099: strError=error_code+" Конец файла                                                 "; break;
      case     4100: strError=error_code+" Ошибка при работе с файлом                                  "; break;
      case     4101: strError=error_code+" Неправильное имя файла                                      "; break;
      case     4102: strError=error_code+" Слишком много открытых файлов                               "; break;
      case     4103: strError=error_code+" Невозможно открыть файл                                     "; break;
      case     4104: strError=error_code+" Несовместимый режим доступа к файлу                         "; break;
      case     4105: strError=error_code+" Ни один ордер не выбран                                     "; break;
      case     4106: strError=error_code+" Неизвестный символ                                          "; break;
      case     4107: strError=error_code+" Неправильный параметр цены для торговой функции             "; break;
      case     4108: strError=error_code+" Неверный номер тикета                                       "; break;
      case     4109: strError=error_code+" Торговля не разрешена                                       "; break;
      case     4110: strError=error_code+" Длинные позиции не разрешены                                "; break;
      case     4111: strError=error_code+" Короткие позиции не разрешены                               "; break;
      case     4200: strError=error_code+" Объект уже существует                                       "; break;
      case     4201: strError=error_code+" Запрошено неизвестное свойство объекта                      "; break;
      case     4202: strError=error_code+" Объект не существует                                        "; break;
      case     4203: strError=error_code+" Неизвестный тип объекта                                     "; break;
      case     4204: strError=error_code+" Нет имени объекта                                           "; break;
      case     4205: strError=error_code+" Ошибка координат объекта                                    "; break;
      case     4206: strError=error_code+" Не найдено указанное подокно                                "; break;
      case     4207: strError=error_code+" Ошибка при работе с объектом                                "; break;
      default:   strError="unknown error";

   }

   return  (strError);
}
Документация по MQL5: Основы языка / Препроцессор / Импорт функций (#import)
Документация по MQL5: Основы языка / Препроцессор / Импорт функций (#import)
  • www.mql5.com
Основы языка / Препроцессор / Импорт функций (#import) - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5