Всем доброго дня!
Как я понял по какой-то причине не деинициализируется что-то, либо не так переключается
как побороть незнаю, какой-то глюк странный
Исходник не смотрел, но предположительное решение - добавить в имя каждого объекта текущий таймфрейм и символ - тогда переинициализация графика из-за смены таймфрейма или символа не будет "перемешивать" старые удаляемые объекты и новые добавляемые.
Исходник не смотрел, но предположительное решение - добавить в имя каждого объекта текущий таймфрейм и символ - тогда переинициализация графика из-за смены таймфрейма или символа не будет "перемешивать" старые удаляемые объекты и новые добавляемые.
там кода нет особо.
Панель стандартная из коробки метатрейдер, а эксперт с одной функцией притянуть эту панель на график.
Здравствуйте, botDev.
Судя по наличию в коде функции onCalculate(...), вы пишете не эксперта, а эксперта и индикатор, который будет вызываться из эксперта. Это точно именно то, что вам надо? Не будет ли правильнее панель создавать все-таки в эксперте, а не в индикаторе?
Попробуйте написать примерно так в файле SimpleExpert.mq5:
#include "PanelDialog.mqh" CPanelDialog ExtDialog; int OnInit(void) { //--- create application dialog if(!ExtDialog.Create(0, "Simple Panel", 0, 50, 50, 390, 200)) return(INIT_FAILED); //--- run application if(!ExtDialog.Run()) return(INIT_FAILED); //--- succeed return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { ExtDialog.Destroy(reason); } void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { ExtDialog.ChartEvent(id, lparam, dparam, sparam); } void OnTick() { Print((string)TimeCurrent()); }
Проверить не могу, так как нет файла PanelDialog.mqh.
Или если панель вам нужна именно через индикатор, то добавьте удаление индикатора в OnDeinit() у эксперта через вызов ChartIndicatorDelete(...)
Здравствуйте, botDev.
Судя по наличию в коде функции onCalculate(...), вы пишете не эксперта, а эксперта и индикатор, который будет вызываться из эксперта. Это точно именно то, что вам надо? Не будет ли правильнее панель создавать все-таки в эксперте, а не в индикаторе?
Попробуйте написать примерно так в файле SimpleExpert.mq5:
Проверить не могу, так как нет файла PanelDialog.mqh.
Или если панель вам нужна именно через индикатор, то добавьте удаление индикатора в OnDeinit() у эксперта через вызов ChartIndicatorDelete(...)
эксперт вызывает индикатор с той целью, чтобы панель была закреплена под графиком а не размещена была на графике и тем самым закрывала бы его часть

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Пилю эксперта. Он тянет панель на график созданную из инструментов стандартной библиотеки.
Заметил странное поведение панели после смены ТФ.
Некоторые контролы жили своей жизнью, и показывали "погоду" вместо тех данных которые я им кодил и ожидал наблюдать.
Ставлю панель на график без эксперта, никаких проблем, никакие манипуляции с графиком не приводят к проблеме.
Ставлю эксперта который вызывает эту панель, смена ТФ, и проблема опять проявляется.
Далее..
Создал нового пустого эксперта который просто вызывает стандартную панель из коробки, и тоже самое, при смене ТФ наблюдаю ту же картину.
В коде панели прописал единственую строчку в функцию
Ставлю эксперта на ТФ Н1
ожидаю в журнале такие надписи каждый тик:
2023.03.23 10:46:47.416 SimplePanel (GBPUSD,H1) 2023.03.23 09:46:47
2023.03.23 10:46:47.416 SimplePanel (GBPUSD,H1) 2023.03.23 09:46:48
Все норм, так в журнале и пишется.
Меняю ТФ на М30, ожидаю:
2023.03.23 10:46:47.416 SimplePanel (GBPUSD,М30) 2023.03.23 09:46:57
2023.03.23 10:46:47.416 SimplePanel (GBPUSD,М30) 2023.03.23 09:46:58
2023.03.23 10:46:47.416 SimplePanel (GBPUSD,H1) 2023.03.23 09:46:57
2023.03.23 10:46:47.416 SimplePanel (GBPUSD,М30) 2023.03.23 09:46:58
2023.03.23 10:46:47.416 SimplePanel (GBPUSD,H1) 2023.03.23 09:46:58
Как я понял по какой-то причине не деинициализируется что-то, либо не так переключается
как побороть незнаю, какой-то глюк странный