Почему индикатор сбрасывает значение внутренних переменных при переключении ТФ ?

 

Всем привет. НАверно задам глупый вопрос, но решения пока не нашел.

Создал индикатор. У него есть кнопки на графике, по нажатию кнопки рисуется линия и кнопка становиться активной.

Как сделать так, чтобы при переключении ТФ сохранялась активность кнопки и местоположении самой линии ?

Ведь при переключении ТФ у нас срабатывает функция Deinit, а в ней стоит удаление всех обьектов. Как бы это обязательное условие, чистить за собой все с графика.

Я пробовал запоминать статус кнопки в переменную, но как заметил в индикаторах они обнуляются, если переключить ТФ.

В советнике такого нет, там значение внутренних переменных не обнуляется. Получается если индикатор расчитал какие то значения и сохранил во внутренние переменные, то при переключении ТФ их сбросит. Почему так и как это обойти.

Рецепты MQL5 - Элементы управления в подокне индикатора - Кнопки
Рецепты MQL5 - Элементы управления в подокне индикатора - Кнопки
  • www.mql5.com
В этой статье мы рассмотрим пример разработки пользовательского интерфейса с такими элементами управления, как кнопки. В качестве подсказки пользователю о том, что с элементом можно взаимодействовать, сделаем так, чтобы кнопка при наведении на нее курсора мыши меняла цвет. При наведении курсора мыши на кнопку цвет будет немного затеняться, а при нажатии будет становиться заметно темнее. Добавим еще всплывающие подсказки для каждой кнопки. Таким образом, интерфейс станет интуитивно понятным.
 
Artem Rytuhin:

Всем привет. НАверно задам глупый вопрос, но решения пока не нашел.

Создал индикатор. У него есть кнопки на графике, по нажатию кнопки рисуется линия и кнопка становиться активной.

Как сделать так, чтобы при переключении ТФ сохранялась активность кнопки и местоположении самой линии ?

Ведь при переключении ТФ у нас срабатывает функция Deinit, а в ней стоит удаление всех обьектов. Как бы это обязательное условие, чистить за собой все с графика.

Я пробовал запоминать статус кнопки в переменную, но как заметил в индикаторах они обнуляются, если переключить ТФ.

В советнике такого нет, там значение внутренних переменных не обнуляется. Получается если индикатор расчитал какие то значения и сохранил во внутренние переменные, то при переключении ТФ их сбросит. Почему так и как это обойти.

Анализируйте причину деинициализации, при REASON_CHARTCHANGE не трогайте графические объкты.

Но придётся Symbol отслеживать, если построения от него зависят.
 
Artem Rytuhin:

Всем привет. НАверно задам глупый вопрос, но решения пока не нашел.

Создал индикатор. У него есть кнопки на графике, по нажатию кнопки рисуется линия и кнопка становиться активной.

Как сделать так, чтобы при переключении ТФ сохранялась активность кнопки и местоположении самой линии ?

Ведь при переключении ТФ у нас срабатывает функция Deinit, а в ней стоит удаление всех обьектов. Как бы это обязательное условие, чистить за собой все с графика.

Я пробовал запоминать статус кнопки в переменную, но как заметил в индикаторах они обнуляются, если переключить ТФ.

В советнике такого нет, там значение внутренних переменных не обнуляется. Получается если индикатор расчитал какие то значения и сохранил во внутренние переменные, то при переключении ТФ их сбросит. Почему так и как это обойти.

void OnDeinit(const int reason)
{
  if(reason==REASON_REMOVE) DelAll();
//---
}
 
так просто, спасибо
Причина обращения: