Пишем скрипт, который содержит следующий код:
int Handle = WindowHandle(Symbol(), Period()); // Получаем системный дескриптор окна. Alert("Handle = ",Handle);
Компилируем, бросаем на график и убеждаемся, что всё работает. Теперь по Вашему коду.
Зачем Вы объявили переменную err, если она ни где не используется? Более того, если где-то ранее произошла какая-то ошибка, то при вызове GetLastError() номер этой ошибки будет вбит в переменную err и обнулён (если сразу же снова вызвать GetLastError(), то этот номер ошибки уже возвращён не будет). То есть хрен знает где в коде произошла какая-то ошибка, Вы вызвали функцию fWindowHandle(), в которой в переменную err был тут же вбит номер этой ошибки. Чего же Вы удивляетесь?
Пишем скрипт, который содержит следующий код:
Компилируем, бросаем на график и убеждаемся, что всё работает. Теперь по Вашему коду.
Зачем Вы объявили переменную err, если она ни где не используется? Более того, если где-то ранее произошла какая-то ошибка, то при вызове GetLastError() номер этой ошибки будет вбит в переменную err и обнулён (если сразу же снова вызвать GetLastError(), то этот номер ошибки уже возвращён не будет). То есть хрен знает где в коде произошла какая-то ошибка, Вы вызвали функцию fWindowHandle(), в которой в переменную err был тут же вбит номер этой ошибки. Чего же Вы удивляетесь?
Объясняю очевидные вещи:
В начале пользовательской функции, чтобы контролировать возможные ошибки в коде этой самой функции, я объявляю переменную err, для обнуления показаний функции GetLastError(). Если при исполнении кода этой пользовательской функции,произойдёт ошибка, то её я "выловлю" с помощью другой пользовательской функции: GetLastError (string txt) - эта функция даёт расшифровку возникшей ошибки, указывает место, где произошла ошибка (наименование функции) и выводит эту информацию в лог.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Из кода индикатора вызываю WindowHandle (Symbol(), Period()) для получения дескриптора окна:
В логе получаем непременную ошибку:
Но запрошенное получаем:
Индикатору НЕ РАЗРЕШАЕТСЯ делать такие запросы? Или я в коде намудрил???