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

st2050

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

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

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

См. процедуры CreateLabel и RemoveObjects.
 

gravity

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

st2050

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

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

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

Вложения

  • IMG_3184.jpg
    IMG_3184.jpg
    50,9 КБ · Просмотры: 7

gravity

Местный знаток
Не понял, в чём это дело?

Screenshot_2.jpg

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

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

AlexeyVik

Программист mql4 mql5
Запустите несколько раз этот скрипт и почитайте комментарий.
Как обновить комментарий додумаетесь сами…
 

Вложения

  • 00.mq4
    00.mq4
    1,7 КБ · Просмотры: 20

st2050

Гуру форума
Не понял, в чём это дело?

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

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

Вложения

  • code.png
    code.png
    19,5 КБ · Просмотры: 11

st2050

Гуру форума
Да, извиняюсь, не точно излагаюсь.
Прямо точно так и делал, как на вашем скрине. Потом пробовал переключать ТФ, вешает терминал.
Действительно, вешает при переключении ТФ.
А я вообще больше ничего не делал кроме изменения типа на ENUM_TIMEFRAMES и переноса строки.
Чудеса!

Имхо выразить отношение к этой ситуации можно только матом.
 

st2050

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

Скажите, чем вам не нравятся лейблы?
 

gravity

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

AlexeyVik

Программист mql4 mql5
Вы не сможете использовать это "решение" в предложенном виде.
Оно только добавляет новый текст к уже существующему. Таким образом индикаторы не будут заменять свои части комментария, а лишь добавлять новые строки. Получится постоянно пополняемая куча.

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

st2050

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

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

AlexeyVik

Программист mql4 mql5
Вычислять не надо. Я задаю координаты в параметрах индикатора.

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

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

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

st2050

Гуру форума
Ну обрати внимание на изначальный вопрос.

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

Будучи прикладным программистом IRL, я сторонник принципа Дадим пользователю то что ему нужно, а не то чего он хочет.
Отстаивание даже с пеной у рта не мешает взрослому самодостаточному человеку "самому решать что ему надо". Но и не отменяет моё право давать то что мне нравится, а не то что у меня просили.
 

AlexeyVik

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

st2050

Гуру форума
Код можно использовать как образец работы с OBJ_BITMAP_LABEL и ресурсами.
-https://www.mql5.com/ru/code/24076
Я так не могу. Не подходит для создания прикладных ИС по причине сложности реализации интерфейсов с динамическим распределением элементов.

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

AlexeyVik

Программист mql4 mql5
Я так не могу. Не подходит для создания прикладных ИС по причине сложности реализации интерфейсов c динамически изменяемым интерфейсом.

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