Обсуждение статьи "Рецепты MQL5 - Элементы управления в подокне индикатора - Кнопки" - страница 4
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А то, что "функции кнопок размещены в функции OnInit" - очень смешно!
Впрочем, может Вы не поняли о чём идёт речь? Если нажать на кнопку, должна сработать какая-то функция пользователя, которая выполнит какую-то микрозадачу.
Хорошо, давайте посмеёмся. Статью написали Вы, "никто Вас за язык не тянул".
Итак, объяснение в виде цитат на необъяснимое - по крайней мере не уважительно к Вашим читателям. На вопросы надо отвечать примерами и ссылками на первоисточник.
Запутанный и перегруженный ненужными функциями код, только вводит в заблуждение "начинающих".
А то, что "функции кнопок размещены в функции OnInit" - очень смешно!
Это Вас за язык никто не тянул. Доказательства приводить будете? Точнее опровержение моего утверждения? К Вашему сведению далеко не всё ещё описано в Справочнике. То есть, работа над справочником идёт, вносятся дополнения и исправления. Всё всегда нужно проверять самому.
Поверьте, код из Вашей статьи намного больше "путает" начинающих и не только, что можно увидеть в обсуждении к Вашей статье.
Впрочем, может Вы не поняли о чём идёт речь? Если нажать на кнопку, должна сработать какая-то функция пользователя, которая выполнит какую-то микрозадачу.
Да, я понял всё буквально. Задавайте точнее свои вопросы. Но я предвижу, что мой ответ будет Вами осмеян, так как у Вас сегодня такая функция похоже.
В данном случае "микрозадачей" было изменение цвета кнопки. Я специально не стал добавлять какие-то дополнительные функции, чтобы не было ничего лишнего. Как раз для того, чтобы не перегружать код.
На самом деле тема статьи не ограничивается только кнопками. Большая часть получилась о событиях графика. Подобных примеров мало, поэтому решил написать.
Уважаемый автор статьи, Вы её писали не для меня, а для начинающих. Действительно, мне Ваши решения не интересны, но речь о тех, кто только разбирается с языком. Про какие такие "другие программы" идёт речь? И как функция OnDeinit одной программы может влиять на функции других программ?
Идёт обсуждение статьи и что Вас так возмущает?
Попробуйте ответить на вопросы не для меня, а для новичков - чтоб они поняли почему и как.
Уважаемый автор статьи, Вы её писали не для меня, а для начинающих.
Именно так.
Действительно, мне Ваши решения не интересны, но речь о тех, кто только разбирается с языком.
Но вопросы задаёте Вы.
Про какие такие "другие программы" идёт речь?
Про те самые, на которые Вы давали ссылки до этого. При этом пытаетесь намёками опровергнуть моё утверждение не приводя при этом доказательство.
И как функция OnDeinit одной программы может влиять на функции других программ?
Влияет. Я об этом написал. Редактор опубликовав статью это подтвердил. Можете тоже проверить и убедиться в этом сами.
Идёт обсуждение статьи и что Вас так возмущает?
Ничего. Я жду опровержения своего утверждения. )
Попробуйте ответить на вопросы не для меня, а для новичков - чтоб они поняли почему и как.
От новичков пока вопросов не поступало. Да и вопросов быть не может. Всё предельно понятно, а каждая строка кода подробно прокомментирована.
Сначала глушим это:
т.е. теперь мы не отслеживаем события мыши, так?
Запускаем на графике Ваш код:
теперь запускаем "другую программу", пусть это будет опять Ваш код:
наверное что-то пошло не так? или так и задумано?
теперь удаляем один из индикаторов и по мнению автора кода мы потеряли "отслеживание мыши", однако этого не происходит:
Если Вы не претендуете, то я тогда даже не знаю кто тогда может претендовать? Данальд Кнут? Билл Гейтс?
Это я на комплимент нарывался.. Удалось)
Теперь понятно. Но непонятно только то, что ведущие продукты Маркета созданные Вами, Вам не принадлежат. Не обидно?
1. Еще не вечер)
2. Моя поделка тоже постоянно в топе, хотя она ни в какое сравнение не идет с панелью.
3. Успех панели во многом обусловлен стараниями автора идеи, поэтому говорить о том, что это мой продукт - некорректно.
4. Работал я не бесплатно)
...
теперь удаляем один из индикаторов и по мнению автора кода мы потеряли "отслеживание мыши", однако этого не происходит:
Теперь проверьте, срабатывает ли событие OnDeinit() в индикаторах. Именно об этом интересном моменте я упоминал до этого. :) А именно в OnDeinit(), в примере из статьи, отключается событие слежения за движением. С какого-то билда похоже OnDeinit() в индикаторах вообще перестал работать. Это баг и нужно сообщить разработчикам.
Далее, чтобы убедиться, что моё утверждение верно, нужно сделать пустышку эксперта (в экспертах функция OnDeinit() работает), в котором достаточно добавить вот такую строчку кода (выделено):
//---
И теперь, если удалить эксперта, когда индикатор из статьи на графике, отслеживание события за движением будет отключено и в индикаторе.
По поводу вот этого:
наверное что-то пошло не так? или так и задумано?
Это известно. Это не задумано так, а просто не учтено в этой статье. Статья, как всегда является простым примером, а не готовым решением на все случаи жизни. )
Вообще данный код видится весьма проблемным. Нет реальных оснований выключать отслеживания передвижения мыши при отключении эксперта/индикатора. Если уж так хочется заморочиться, надо восстанавливать состояние бывшее до инициацилизации эксперта:
Вообще данный код видится весьма проблемным. Нет реальных оснований выключать отслеживания передвижения мыши при отключении эксперта/индикатора.
Нет, Вы не правы. Есть реальные основания для отключения отслеживания передвижения мыши. И сейчас я это докажу. )
Например, у Вас на графике запущено две программы. Эксперт, в котором нужно отслеживать событие перемещения мыши. И индикатор, в котором не нужно отслеживать событие передвижения мыши, но нужно допустим отслеживать, какие-нибудь другие события графика.
Теперь запустите вот этот код эксперта:
В нём во время инициализации, в функции OnInit(), включается отслеживание события передвижения мыши. Но намеренно закомментирована строка в функции OnDeinit(), где это слежение должно отключаться.
Загрузите также на график индикатор. Вот его код:
И первая и вторая программа выводит в журнал сообщение о том, что событие поступает. Теперь удалите эксперта с графика. Допустим, Вы с его помощью произвели какие-то вычисления и он Вам больше не нужен. После его удаления, так как событие отслеживания передвижения мыши не было отключено, индикатор продолжает принимать это событие. А это не нужно.
Теперь согласны? )