Изучаем язык программирования MQL4

👋 🤠
Индикатор выводит Comment() на графике.
Если кинуть на график дубль этого же индикатора(заданы разные ID), то комментарий остаётся только от последнего.

Внимание вопрос, уважаемые знатоки)

Есть ли способ избежать конфликта выводимых комментариев?
Да, способ есть. Выводить информацию не в комменты, а в лейблы.
Пример корявой реализации можно посмотреть -тут-.

См. процедуры CreateLabel и RemoveObjects.
 
Так нет же никакого конфликта. Коммент идёт от обоих. Сначала первый выводит коммент, потом второй его меняет на свой. Второй очень быстро меняет коммент первого на свой, по этому коммент первого не видно.
Такая ситуация будет если коммент выводит не одна программа (не важно индикаторы, скрипты, советники) на графике. Будет видно коммент последней программы.
Спасибо за объяснение, я понял что это так и происходит.
Переформулирую.
Есть ли способ сделать так, чтобы были видны комменты от обоих индикаторов на одном экране?
 
Спасибо за объяснение, я понял что это так и происходит.
Переформулирую.
Есть ли способ сделать так, чтобы были видны комменты от обоих индикаторов на одном экране?
Технически можно подпилить используемые индикаторы чтобы добавляли в комментарий теги, уникальные для каждого экземпляра индикатора, и заменяли только "свою" часть комментария, ориентируясь на свои теги.
Но теги будет видно в тексте комментария, и это геморрой и костыль (по-программистски говоря).

А вообще, этот коммент - сам костыль с рождения. (Прогр. жарг. костыль - убогая временная реализация необходимого функционала, которая не соответствует конструктивным основам системы).

Юзайте лейблы. Это даст возможность использовать разные цвета, шрифты и размеры, а не рассматривать коммент под лупой.
 

Вложения

  • IMG_3184.jpg
    IMG_3184.jpg
    50,9 КБ · Просмотры: 7
Не понял, в чём это дело?

Screenshot_2.jpg

Если перенести входной параметр отвечающий за смену ТФ на самый верх, то перестаёт работать и вешает терминал.

Добавил ENUM для метода МА и ТФ, закомментил 2 строчки extern, больше ничего в коде не трогал.
Индикатор
 
Последнее редактирование:
Запустите несколько раз этот скрипт и почитайте комментарий.
Как обновить комментарий додумаетесь сами…
 

Вложения

  • 00.mq4
    00.mq4
    1,7 КБ · Просмотры: 20
Не понял, в чём это дело?

Если перенести входной параметр отвечающий за смену ТФ на самый верх, то перестаёт работать и вешает терминал.

На самый верх не надо, там блок объявления свойств. А так пожалуйста.
 

Вложения

  • code.png
    code.png
    19,5 КБ · Просмотры: 11
Да, извиняюсь, не точно излагаюсь.
Прямо точно так и делал, как на вашем скрине. Потом пробовал переключать ТФ, вешает терминал.
Действительно, вешает при переключении ТФ.
А я вообще больше ничего не делал кроме изменения типа на ENUM_TIMEFRAMES и переноса строки.
Чудеса!

Имхо выразить отношение к этой ситуации можно только матом.
 
Вооот, оказывается возможно всё таки.
Спасибо!
Вы не сможете использовать это "решение" в предложенном виде.
Оно только добавляет новый текст к уже существующему. Таким образом индикаторы не будут заменять свои части комментария, а лишь добавлять новые строки. Получится постоянно пополняемая куча.

Скажите, чем вам не нравятся лейблы?
 
Вы не сможете использовать это "решение".
Оно только добавляет новый текст к уже существующему. Таким образом индикаторы не будут заменять свои части комментария, а лишь добавлять новые строки. Получится постоянно пополняемая каша.
Ясно, ещё не пробовал копаться, поэксперементирую, узнаю) Спасибо!
 
Вы не сможете использовать это "решение" в предложенном виде.
Оно только добавляет новый текст к уже существующему. Таким образом индикаторы не будут заменять свои части комментария, а лишь добавлять новые строки. Получится постоянно пополняемая куча.

Скажите, чем вам не нравятся лейблы?
Хоть лейблы, хоть ресурсы всё одно надо вычислять координату Х куда ставить lable. Дело ведь не в том чем воспользоваться, а в том, что имеющийся текст комментария можно пополнить другим текстом.
И читай всё что написано. А написано так «Как обновить комментарий додумаетесь сами…» Я не предлагал использовать предложенный вариант как есть.
 
Хоть лейблы, хоть ресурсы всё одно надо вычислять координату Х куда ставить lable. Дело ведь не в том чем воспользоваться, а в том, что имеющийся текст комментария можно пополнить другим текстом.
И читай всё что написано. А написано так «Как обновить комментарий додумаетесь сами…» Я не предлагал использовать предложенный вариант как есть.
Вычислять не надо. Я задаю координаты в параметрах индикатора.

Я читал всё что написано. И мне не нравится сама идея реализовывать костыль к костылю, коим является это примечание.
Если Вы пишите обычные программы с интерфейсом, то уверен что у Вас там огромное количество лейблов, а не один костыль с общим текстом.
 
Вычислять не надо. Я задаю координаты в параметрах индикатора.

Я читал всё что написано. И мне не нравится сама идея реализовывать костыль к костылю, коим является это примечание.
Если Вы пишите обычные программы с интерфейсом, то уверен что у Вас там огромное количество лейблов, а не один костыль с общим текстом.
Ну обрати внимание на изначальный вопрос.
👋 🤠
Индикатор выводит Comment() на графике.
Если кинуть на график дубль этого же индикатора(заданы разные ID), то комментарий остаётся только от последнего.

Внимание вопрос, уважаемые знатоки)

Есть ли способ избежать конфликта выводимых комментариев?
Ведь человек не спрашивал чем заменить комментарий графика. Зачем ты ему предлагаешь Lable? Ты считаешь его таким тупым, что он не знает о такой возможности? Да ещё так упорно отстаиваешь своё мнение. Оставь человеку возможность самому решать что ему надо.
 
Ну обрати внимание на изначальный вопрос.

Ведь человек не спрашивал чем заменить комментарий графика. Зачем ты ему предлагаешь Lable? Ты считаешь его таким тупым, что он не знает о такой возможности? Да ещё так упорно отстаиваешь своё мнение. Оставь человеку возможность самому решать что ему надо.
Отвечаю на Ваш вопросы:
1. Для достижения более качественного интерфейса.
2. Понятия не имею.

Будучи прикладным программистом IRL, я сторонник принципа Дадим пользователю то что ему нужно, а не то чего он хочет.
Отстаивание даже с пеной у рта не мешает взрослому самодостаточному человеку "самому решать что ему надо". Но и не отменяет моё право давать то что мне нравится, а не то что у меня просили.
 
Я правильно понял, что Ваш интерфейс с картинками вместо надписей?
Хотелось бы увидеть прикладную ИС с картинками вместо надписей. Как скучно я живу!
Код можно использовать как образец работы с OBJ_BITMAP_LABEL и ресурсами.
-https://www.mql5.com/ru/code/24076
AUDUSD_cM15__1.png
 
Код можно использовать как образец работы с OBJ_BITMAP_LABEL и ресурсами.
-https://www.mql5.com/ru/code/24076
Я так не могу. Не подходит для создания прикладных ИС по причине сложности реализации интерфейсов с динамическим распределением элементов.

Благодарю за познавательный пример. Улыбнуло.
Генерить картинку чтобы отобразить текст - это нечто. И зачем только мы покупаем DevExpress для новых релизов.
 
Последнее редактирование:
Я так не могу. Не подходит для создания прикладных ИС по причине сложности реализации интерфейсов c динамически изменяемым интерфейсом.

Благодарю за познавательный пример. Улыбнуло.
Генерить картинку чтобы отобразить текст - это нечто. И зачем только мы покупаем DevExpress для новых релизов.
А ты хоть одним глазом посмотрел код? Если это для тебя сложности, то на что ты вообще способен? Не в обиду. Сколько там всего строк, посчитал? Сколько времени тратится на отображение и изменение отображения посчитал? Ты позиционируешь себя
Будучи прикладным программистом
о каких сложностях можно говорить??? Я вообще самоучка… И если это делать через Lable, то код будет гораздо длиннее, сложнее и тормознутее.
 
Назад
Верх