Проблема с CHARTEVENT_CHART_CHANGE - страница 2

 
Taras Slobodyanik #:

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

пс. ну и следовательно - у автора темы не будут работать панели, благодаря вашему совету :)

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Nikolai Semko, 2021.12.26 12:01

Что за бред, Тарас?
Даже не знаю как ответить.
Изучайте матчасть.
При чем тут работа индикатора и графический вывод? У каждого индикатора или EA свой графический ресурс.
Загляните в класс CCanvas, как формируется имя ресурса.

 
Nikolai Semko #:
При чем тут работа индикатора и графический вывод? У каждого индикатора или EA свой графический ресурс.
Загляните в класс CCanvas, как формируется имя ресурса.

При том что когда одинаковые ресурсы то они перерисовываются для всех копий.

Проверял ваш код в "окнонном" режиме и на одном чарте - размер один и тот же.
Для "развернутого" режима да размер изменяется, но это древний баг - несколько лет ему точно.

При чем тут работа индикатора и графический вывод?

при том что если окно неактивно то вы рекомендуете не обновлять канвас - это значит что

пс. ну и следовательно - у автора темы не будут работать панели, благодаря вашему совету :)

то есть визуально в "оконном" режиме, индикаторы (или ЕА) не будут обновляться.

пс. хотя если проверка только в OnChartEvent то должно работать, надо проверить.

 
Maxim Kuznetsov #:

Сюрприз может крыться в ChartID() vs 0 vs <заранее сохранённый id> в аргументе. При переключении чартов в момент "последнего прости", в последнем OnChartEvent могут быть нюансы :-) 

Никогда не пользуюсь значением 0, NULL и прочими. В чём проблема сохранить ID графика в переменную?
 
Taras Slobodyanik #:

пс. хотя если проверка только в OnChartEvent то должно работать, надо проверить.

проверил

if(id==CHARTEVENT_CHART_CHANGE && ChartGetInteger(ChartID(), CHART_BRING_TO_TOP))

Да в "полноэкранном" режиме чарт не изменяется, панель не обновляет координаты и сохраняет свое положение.
Но если перейти на другой чарт и там нажать "оконный" режим, то панель тоже не обновляется (остается развернутой/свернутой где-то там)

В общем удалил эту проверку и вернул как было.

еще в документации МТ4 сказано что это только для записи - "write only".

Идентификатор

Описание

Тип свойства

CHART_BRING_TO_TOP

Показ графика поверх всех других

bool   w/o

 
Taras Slobodyanik #:

еще в документации МТ4 сказано что это только для записи - "write only".

Не верь глазам своим, верь моей совести, как я в свою очередь поверил совести Виталия… Он оказался прав.

 
Alexey Viktorov #:

Не верь глазам своим, верь моей совести, как я в свою очередь поверил совести Виталия… Он оказался прав.

Даже код приложил. Сейчас уже не найду

 
Vitaly Muzichenko #:

Даже код приложил. Сейчас уже не найду

Да и не надо. Кто сомневается пусть сам пишет и проверяет. Но это к Тарасику не относится, он предпочитает чтобы ему доказывали. А кому оно надо¿¿¿

 
Nikolai Semko #:

при переключении на другой чарт, происходит событие CHARTEVENT_CHART_CHANGE.
при возвращение на чарт, происходит два события CHARTEVENT_CHART_CHANGE.

Пробовал когда-то решить такую задачу.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2021.08.24 10:11

Не получается написать функцию, которая выдает true в советнике только тогда, когда фокус переключается на чарт советника.

Подскажите, кто сталкивался.


На хватает CHARTEVENT на потерю и приобретение фокуса.


Не вышло.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2021.08.24 13:54

Правильно, это когда работает всегда. Зачем нужен код, который работает в одних случаях и не работает в других?


ЗЫ Совсем тривиальные вещи через ChartGetInteger и static сразу делал. Там проблема, что CHART_CHANGE не всегда генерируется, когда теряется фокус. В общем, похоже, нерешаемая задача.

 
Alexey Viktorov #:
Никогда не пользуюсь значением 0, NULL и прочими. В чём проблема сохранить ID графика в переменную?

ни в чём...это у топик-стартера надо было сразу запросить код на котором он получает разные(якобы некорректные) значения геометрии. А не копья ломать об невиданные мельницы.

я просто указал/ткнул в то место где скорее всего "может ломаться" :-)

 
Alexey Viktorov #:

Но это к Тарасику не относится, он предпочитает чтобы ему доказывали. А кому оно надо¿¿¿

как вас колбасит когда неправильные советы даете :)
Причина обращения: