Canvas - это круто! - страница 76

 
Vitaliy Kuznetsov #:

Задачка на смекалку.


Все мы знаем, что если у советника есть графические элементы, то индикатор с дэшбордом (любой) будет вешать терминал при переключении из-за советника.

Но я своими глазами увидел, панельку, которая работает без зависаний и на удивление неконфликтная с разными продуктами с событиями, таймерами и отслеживаниями мыши. Т.е. без прямых костылей, связывающих продукты, которые я могу и сам написать.

Автор промолчал на мой запрос поделиться решением)


Какие есть мысли по советнику с графикой канваса, чтобы не реагировал на переключение дэшборда через индикатор? Задержки может прописывать или ещё что. Вопрос по МТ4


Если Вы знаете, но не хотите почему-то рассказывать всем, но хорошо разбираетесь в канвасе, то напишите мне, чтобы сделать заказ через фриланс. Но пару недель надо будет подождать, пока счёт пополнится на нужную сумму.

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

Основной алгоритм работы советник или индикатор может сидеть во втором окне а всю работу выполнять на первом... Таким образом что бы не происходило в первом окне, оно всегда будет зависить от работы советника или индикатора во втором окне.

 
Vitaliy Kuznetsov #:

Задачка на смекалку.


Все мы знаем, что если у советника есть графические элементы, то индикатор с дэшбордом (любой) будет вешать терминал при переключении из-за советника.

Но я своими глазами увидел, панельку, которая работает без зависаний и на удивление неконфликтная с разными продуктами с событиями, таймерами и отслеживаниями мыши. Т.е. без прямых костылей, связывающих продукты, которые я могу и сам написать.

Автор промолчал на мой запрос поделиться решением)


Какие есть мысли по советнику с графикой канваса, чтобы не реагировал на переключение дэшборда через индикатор? Задержки может прописывать или ещё что. Вопрос по МТ4


Если Вы знаете, но не хотите почему-то рассказывать всем, но хорошо разбираетесь в канвасе, то напишите мне, чтобы сделать заказ через фриланс. Но пару недель надо будет подождать, пока счёт пополнится на нужную сумму.

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

индикатор с дешбордом не будет вешать советник, если индикатор правильно сделан. Рисование/рассчёт дешборда разнесены и оптимизированы. В принципе писал в блоге, и ничего сверх-фантастичного нету. Просто не надо ничего рисовать в OnСalculate и собственные данные надо запоминать, а не искать по чарту, в котировках или торговой истории. То-же относится и к советникам

 
Vitaliy Kuznetsov #:

Все мы знаем, что если у советника есть графические элементы, то индикатор с дэшбордом (любой) будет вешать терминал при переключении из-за советника.


Я не знаю ) Можно пример такого индикатора? И что за переключение?

 
Oleksii Chepurnyi #:

Я не знаю ) Можно пример такого индикатора? И что за переключение?

Любой индикатор с дэшбордом, т.е. когда клацаешь по нему, переключаются пары в текущем окне.

И советник любой, в котором есть графическая часть

 
Vitaliy Kuznetsov #:

Любой индикатор с дэшбордом, т.е. когда клацаешь по нему, переключаются пары в текущем окне.

И советник любой, в котором есть графическая часть

Я не пользуюсь индикаторами ) Даже стандартные не все знаю )

А тратить время на поиски непонятно чего вообще нет желания

Советник с графикой есть

 
Vitaliy Kuznetsov #:

Задачка на смекалку.


Все мы знаем, что если у советника есть графические элементы, то индикатор с дэшбордом (любой) будет вешать терминал при переключении из-за советника.

Но я своими глазами увидел, панельку, которая работает без зависаний и на удивление неконфликтная с разными продуктами с событиями, таймерами и отслеживаниями мыши. Т.е. без прямых костылей, связывающих продукты, которые я могу и сам написать.

Автор промолчал на мой запрос поделиться решением)


Какие есть мысли по советнику с графикой канваса, чтобы не реагировал на переключение дэшборда через индикатор? Задержки может прописывать или ещё что. Вопрос по МТ4


Если Вы знаете, но не хотите почему-то рассказывать всем, но хорошо разбираетесь в канвасе, то напишите мне, чтобы сделать заказ через фриланс. Но пару недель надо будет подождать, пока счёт пополнится на нужную сумму.

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

Проблема подобная этой?
https://www.mql5.com/ru/forum/425642

То есть, есть индюк, который строит некоторую панельку и его (этот индюк) юзает советник?

Функции OnChartEvent и OnTimer не работают во вложенных индикаторах?
Функции OnChartEvent и OnTimer не работают во вложенных индикаторах?
  • 2022.05.22
  • www.mql5.com
Возникли вопросы по работе индикаторов...
 

Рисовать в ините и только если уже не нарисовано. В деините проверять причину деинициализации. Если причина - снятие с чарта, то удалять графику, во всех остальных случаях оставлять, чтобы заново не рисовать в ините. 

И это никакая не хитрость, а просто разумный подход к делу.

Но для некоторых это конечно дебри, и прежде чем лезть в дебри стоило бы просто научиться писать индикаторы, а не так чтобы на каждом тике 1000 баров пересчитывать. 

И вообще нафига эти дашборды нужны? В гта не наигрались?

 
Yevhenii Levchenko #:

Проблема подобная этой?
https://www.mql5.com/ru/forum/425642

То есть, есть индюк, который строит некоторую панельку и его (этот индюк) юзает советник?

приведённая по ссылке "проблема" лечится через ChartIndicatorAdd - советник "прикрепляет" индикатор к чарту и в оный индикатор начинают прилетать OnChartEvent. 

 
Vitaliy Kuznetsov #:

Задачка на смекалку.


Все мы знаем, что если у советника есть графические элементы, то индикатор с дэшбордом (любой) будет вешать терминал при переключении из-за советника.

Но я своими глазами увидел, панельку, которая работает без зависаний и на удивление неконфликтная с разными продуктами с событиями, таймерами и отслеживаниями мыши. Т.е. без прямых костылей, связывающих продукты, которые я могу и сам написать.

Автор промолчал на мой запрос поделиться решением)

Какие есть мысли по советнику с графикой канваса, чтобы не реагировал на переключение дэшборда через индикатор? Задержки может прописывать или ещё что. Вопрос по МТ4

Если Вы знаете, но не хотите почему-то рассказывать всем, но хорошо разбираетесь в канвасе, то напишите мне, чтобы сделать заказ через фриланс. Но пару недель надо будет подождать, пока счёт пополнится на нужную сумму.

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

Все дело в правильной внутренней событийной модели.
Разумный mql-программист должен позаботиться о создании собственной событийной модели и прослушивании этих событий, особенно если имеет дело с канвасом.
Так как канвас в MQL реализован достаточно низкоуровненно без ассинхронности (ассинхронная только Update(точнее ChartRedraw)).
Именно по этому без нормальной событийной модели советник канвасом можно сильно подвесить. И это произойдет не потому что канвас медленный, а потому что используется безконтрольно.
Простыми словами - если наступает важное событие - например, что-то связанное с принятием решения о открытии сделки и выставлении самой сделки, то всем стоять и ждать. Канвас в этой иерархии должен занимать почти самое последнее место. 
Расчет канваса тоже должен вестись с расчетом на то, когда был последний раз расчитан канвас. Расчет канваса тоже должен прерываться, когда поступило новое событие для канваса (например двинули мышкой или нажали кнопку, которые должны привести к новому перерасчету канваса). Это называется прослушкой событий. 

Более того, лично я считаю, что в советнике вредно использовать внешние индикаторы(iCustom), а весь индикаторный расчет делать внутри советника (сейчас на меня набросятся :)), но, опять же, с грамотной событийной моделью с прослушкой.
Хоть iCustom и выполняется в другом потоке, но процесс то тот же самый. Поэтому это иллюзия - что что-то там распараллеливается. Тем более все эти взаимодействия между потоками отнюдь не бесплатные. 
Яркий пример - это однопоточный JS. В JS очень грамотно высокоуровненно реализована событийная модель с прослушкой событий. Поэтому, когда я создаю на чистом JS сложные анимированные интерфейсы, лагов вообще нет.
При этом JS примерно в пару раз медленее MQL5, а частота обновления кадров у JS 64 кадра в секунду, тогда как у MQL 32
К сожалению в MT очень кривая реализация событийной модели с прослушкой этих событий. Именно поэтому часто интерфейсы выглядят лагающими, особенно когда программист не использует собственную событийную модель.
Причем семантические баги в ассинхронности MT давно известны.
Уже два раза обращался к Ренату на форуме, но он говорил - нет, ничего менять не будем.
Почему - загадка для меня.

 
Nikolai Semko #:

...
Более того, лично я считаю, что в советнике вредно использовать внешние индикаторы(iCustom)
...

Если не умеешь индикаторы писать.

Изобретатели велосипеда.
Причина обращения: