1. При сохранении темплейта с именем "default", и последующем открытии нового графика на графике также активно отображение объема Tick Volumes. Хотя я его специально отключал для отображения.
Не воспроизводится (клик):
Возможно, проблемы с правами доступа к папке профилей.
2. При вызове функции ExpertRemove() выполняется функция OnDeinit(), которая в моем случае удаляет все графические объекты, но после ее выполнения выполняются события OnChartEvent() которые создают эти объекты заново и уже после этого советник удаляется с чата, графические объекты остаются.
Не воспроизводится:
int OnInit() { if (ObjectFind(0, "MyObj") < 0) ObjectCreate(0, "MyObj", OBJ_VLINE, 0, iTime(NULL, PERIOD_CURRENT, 0), 0.0); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { Print(__FUNCTION__); ObjectDelete(0, "MyObj"); } void OnTick() { static int nCnt = 0; ++nCnt; if (nCnt > 10) ExpertRemove(); } void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam) { Print(__FUNCTION__); if (ObjectFind(0, "MyObj") < 0) ObjectCreate(0, "MyObj", OBJ_VLINE, 0, iTime(NULL, PERIOD_CURRENT, 0), 0.0); }
После удаления эксперта вертикальная линия удаляется с графика.
Скорее всего, какие-то проблемы в коде. Попробуйте выхолостить код так, чтобы проблема не проявлялась. Так и найдете ее причину.
Не воспроизводится (клик):
Возможно, проблемы с правами доступа к папке профилей.
Не воспроизводится:
После удаления эксперта вертикальная линия удаляется с графика.
Скорее всего, какие-то проблемы в коде. Попробуйте выхолостить код так, чтобы проблема не проявлялась. Так и найдете ее причину.
Поверьте, в коде проблем нет, я все проверил. Да и какая проблема может быть если OnDeinit() выполняется. У меня код более 10 000 строк (панель для торговли в 1 клик) На простом коде все работает, на большом, когда много событий - нет.
Стало проявляться, только после добавления дополнительных событий для CHARTEVENT_MOUSE_MOVE. А в МТ4 версии все работает как положено.
Поверьте, в коде проблем нет, я все проверил. Да и какая проблема может быть если OnDeinit() выполняется. У меня код более 10 000 строк (панель для торговли в 1 клик) На простом коде все работает, на большом, когда много событий - нет.
Стало проявляться, только после добавления дополнительных событий для CHARTEVENT_MOUSE_MOVE. А в МТ4 версии все работает как положено.
1. в OnDeinit добавьте ChartRedraw . Опционально паузу
2. не удаляйте объекты если их придётся снова пересоздавать (при смене таймфрейма например)
3. никогда не создавайте объекты в OnInit и вообще до первого OnChartEvent
вы напихали в чарт команд по самый небалуй, а он работает па-ра-лель-но с советником и его OnDeinit/OnInit. OnDeinit прошёл, OnChartEvent тем более, а c сообщениями чарт всё ещё разбирается
1. в OnDeinit добавьте ChartRedraw . Опционально паузу
2. не удаляйте объекты если их придётся снова пересоздавать (при смене таймфрейма например)
3. никогда не создавайте объекты в OnInit и вообще до первого OnChartEvent
вы напихали в чарт команд по самый небалуй, а он работает па-ра-лель-но с советником и его OnDeinit/OnInit. OnDeinit прошёл, OnChartEvent тем более, а c сообщениями чарт всё ещё разбирается
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
1. При сохранении темплейта с именем "default", и последующем открытии нового графика на графике также активно отображение объема Tick Volumes. Хотя я его специально отключал для отображения.
2. При вызове функции ExpertRemove() выполняется функция OnDeinit(), которая в моем случае удаляет все графические объекты, но после ее выполнения выполняются события OnChartEvent() которые создают эти объекты заново и уже после этого советник удаляется с чата, графические объекты остаются.
(Код выложить не могу, т.к. это мой продукт для маркета) Т.е. это либо что-то с потоками или функция OnDeinit() не имеет высшего приоритета на выполнение. В МТ4 такого нет.
P.S. Решение в виде костылей не предлагать их уже и так выше крыши.