Ошибка работы функции ChartSaveTemplate() - страница 3

 
Vladimir Pastushak:
Файл шаблона

Ну, значит действительно не применился шаблон. Дело не в объекте линии.

ChartApplyTemplate отдает лишь признак успешной постановки команды в очередь чарта.

Как и описано в справке: "Отданная команда поступает в очередь сообщений графика и выполняется только после обработки всех предыдущих команд."

Значит у вас проблемы именно в применении шаблона.

Документация по MQL5: Операции с графиками / ChartApplyTemplate
Документация по MQL5: Операции с графиками / ChartApplyTemplate
  • www.mql5.com
Применяет к графику указанный шаблон. Отданная команда поступает в очередь сообщений графика и выполняется только после обработки всех предыдущих команд. Возвращает true в случае удачного помещения команды в очередь графика, иначе false. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError(). Если посредством этой...
 
Anton:

Ну, значит действительно не применился шаблон. Дело не в объекте линии.

ChartApplyTemplate отдает лишь признак успешной постановки команды в очередь чарта.

Как и описано в справке: "Отданная команда поступает в очередь сообщений графика и выполняется только после обработки всех предыдущих команд."

Значит у вас проблемы именно в применении шаблона. Скорее всего, какие-то проблемы с чтением файла.

И у других пользователей программы из маркета то же ?

Шаблон не применяется стабильно. Не как попало а просто не применяется.
 

Тест на VPS сервере   проблема есть...


2020.11.09 14:54:32.552 TestBug (EURUSD,H1)     Всего окон без учета окна с советником 5
2020.11.09 14:54:32.554 TestBug (EURUSD,H1)     Символ добавлен в массив EURUSD
2020.11.09 14:54:32.554 TestBug (EURUSD,H1)     Символ добавлен в массив GBPUSD
2020.11.09 14:54:32.554 TestBug (EURUSD,H1)     Символ добавлен в массив USDCHF
2020.11.09 14:54:32.554 TestBug (EURUSD,H1)     Символ добавлен в массив USDJPY
2020.11.09 14:54:32.554 TestBug (EURUSD,H1)     Символ добавлен в массив USDCNH
2020.11.09 14:54:32.554 TestBug (EURUSD,H1)     Обьектов в окне 0
2020.11.09 14:54:32.554 TestBug (EURUSD,H1)     Обьектов в окне 0
2020.11.09 14:54:32.554 TestBug (EURUSD,H1)     Обьектов в окне 0
2020.11.09 14:54:32.554 TestBug (EURUSD,H1)     Обьектов в окне 0
2020.11.09 14:54:32.554 TestBug (EURUSD,H1)     Обьектов в окне 0
2020.11.09 14:54:32.561 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035597889815_EURUSD_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.574 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035614151188_EURUSD_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.577 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035633358598_EURUSD_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.579 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035649764830_EURUSD_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.585 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035689935248_EURUSD_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.592 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035597889815_GBPUSD_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.593 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035614151188_GBPUSD_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.595 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035633358598_GBPUSD_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.596 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035649764830_GBPUSD_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.597 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035689935248_GBPUSD_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.598 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035597889815_USDCHF_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.599 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035614151188_USDCHF_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.600 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035633358598_USDCHF_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.601 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035649764830_USDCHF_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.602 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035689935248_USDCHF_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.604 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035597889815_USDJPY_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.606 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035614151188_USDJPY_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.607 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035633358598_USDJPY_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.630 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035649764830_USDJPY_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.670 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035689935248_USDJPY_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.694 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035597889815_USDCNH_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.729 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035614151188_USDCNH_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.730 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035633358598_USDCNH_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.731 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035649764830_USDCNH_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:32.732 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон \Files\132494035689935248_USDCNH_TestSaveNoLine.tpl успешно записан
2020.11.09 14:54:38.699 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035597889815_EURUSD_TestSaveLine.tpl успешно записан
2020.11.09 14:54:38.702 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035614151188_EURUSD_TestSaveLine.tpl успешно записан
2020.11.09 14:54:38.703 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035633358598_EURUSD_TestSaveLine.tpl успешно записан
2020.11.09 14:54:38.704 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035649764830_EURUSD_TestSaveLine.tpl успешно записан
2020.11.09 14:54:38.705 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035689935248_EURUSD_TestSaveLine.tpl успешно записан
2020.11.09 14:54:39.793 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035597889815_GBPUSD_TestSaveLine.tpl успешно записан
2020.11.09 14:54:39.794 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035614151188_GBPUSD_TestSaveLine.tpl успешно записан
2020.11.09 14:54:39.795 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035633358598_GBPUSD_TestSaveLine.tpl успешно записан
2020.11.09 14:54:39.840 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035649764830_GBPUSD_TestSaveLine.tpl успешно записан
2020.11.09 14:54:39.841 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035689935248_GBPUSD_TestSaveLine.tpl успешно записан
2020.11.09 14:54:40.937 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035597889815_USDCHF_TestSaveLine.tpl успешно записан
2020.11.09 14:54:40.943 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035614151188_USDCHF_TestSaveLine.tpl успешно записан
2020.11.09 14:54:40.947 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035633358598_USDCHF_TestSaveLine.tpl успешно записан
2020.11.09 14:54:40.952 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035649764830_USDCHF_TestSaveLine.tpl успешно записан
2020.11.09 14:54:40.954 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035689935248_USDCHF_TestSaveLine.tpl успешно записан
2020.11.09 14:54:42.046 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035597889815_USDJPY_TestSaveLine.tpl успешно записан
2020.11.09 14:54:42.047 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035614151188_USDJPY_TestSaveLine.tpl успешно записан
2020.11.09 14:54:42.048 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035633358598_USDJPY_TestSaveLine.tpl успешно записан
2020.11.09 14:54:42.049 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035649764830_USDJPY_TestSaveLine.tpl успешно записан
2020.11.09 14:54:42.051 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035689935248_USDJPY_TestSaveLine.tpl успешно записан
2020.11.09 14:54:43.152 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035597889815_USDCNH_TestSaveLine.tpl успешно записан
2020.11.09 14:54:43.158 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035614151188_USDCNH_TestSaveLine.tpl успешно записан
2020.11.09 14:54:43.166 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035633358598_USDCNH_TestSaveLine.tpl успешно записан
2020.11.09 14:54:43.212 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035649764830_USDCNH_TestSaveLine.tpl успешно записан
2020.11.09 14:54:43.228 TestBug (EURUSD,H1)     Шаблон с ТРЕНДОВОЙ \Files\132494035689935248_USDCNH_TestSaveLine.tpl успешно записан
2020.11.09 14:54:44.336 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035597889815_EURUSD_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:44.354 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035614151188_EURUSD_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:44.401 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035633358598_EURUSD_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:44.448 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035649764830_EURUSD_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:44.495 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035689935248_EURUSD_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:44.542 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035597889815_GBPUSD_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:44.589 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035614151188_GBPUSD_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:44.636 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035633358598_GBPUSD_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:44.682 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035649764830_GBPUSD_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:44.730 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035689935248_GBPUSD_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:44.780 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035597889815_USDCHF_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:44.823 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035614151188_USDCHF_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:44.870 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035633358598_USDCHF_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:44.917 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035649764830_USDCHF_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:44.964 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035689935248_USDCHF_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:45.010 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035597889815_USDJPY_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:45.057 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035614151188_USDJPY_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:45.118 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035633358598_USDJPY_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:45.151 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035649764830_USDJPY_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:45.198 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035689935248_USDJPY_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:45.245 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035597889815_USDCNH_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:45.295 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035614151188_USDCNH_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:45.432 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035633358598_USDCNH_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:45.479 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035649764830_USDCNH_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:45.526 TestBug (EURUSD,H1)     ПУСТОЙ Шаблон Применен \Files\132494035689935248_USDCNH_TestSaveNoLine.tpl Успешно!
2020.11.09 14:54:45.541 TestBug (EURUSD,H1)     == Финал  ============================================
2020.11.09 14:54:45.557 TestBug (EURUSD,H1)     Обьектов в окне 1
2020.11.09 14:54:45.573 TestBug (EURUSD,H1)     Обьектов в окне 1
2020.11.09 14:54:45.588 TestBug (EURUSD,H1)     Обьектов в окне 1
2020.11.09 14:54:45.604 TestBug (EURUSD,H1)     Обьектов в окне 1
2020.11.09 14:54:45.620 TestBug (EURUSD,H1)     Обьектов в окне 0
2020.11.09 14:54:45.620 TestBug (EURUSD,H1)     =====================================================
2020.11.09 14:54:45.620 TestBug (EURUSD,H1)     ExpertRemove() function called
Виртуальный хостинг для MetaTrader 5
Виртуальный хостинг для MetaTrader 5
  • www.mql5.com
Виртуальный хостинг для MetaTrader 4/5 является лучшим VPS-решением для Форекса. Оно не требует настройки, дает минимальные задержки до сервера и отличается низкими ценами. Всего за 15 USD в месяц вы получите виртуальную платформу, которая работает круглые сутки, экономит вашу прибыль и даже окупает себя. Создать удаленную копию приложения...
 
Vladimir Pastushak:

И у других пользователей программы из маркета то же ?

Шаблон не применяется стабильно. Не как попало а просто не применяется.

Это зависит от скорости работы вашей системы.

Вы в цикле без задержек многократно совершаете парное действие: меняете символ чарта через ChartSetSymbolPeriod и применяете на него шаблон ChartApplyTemplate.

Т.к. на чарте есть кастомный индикатор, то каждое из этих действий вызывает его остановку.

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

До завершения остановки кастомного индикатора по предыдущему ChartApplyTemplate следующее применение ChartApplyTemplate игнорируется. Аналогичное ограничение есть и на ChartSetSymbolPeriod.

При этом соломка "Двигаем очередь на графике" тут совершенно не помогает.

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

 
Anton:

Это зависит от скорости работы вашей системы.

Вы в цикле без задержек многократно совершаете парное действие: меняете символ чарта через ChartSetSymbolPeriod и применяете на него шаблон ChartApplyTemplate.

Т.к. на чарте есть кастомный индикатор, то каждое из этих действий вызывает его остановку.

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

До завершения остановки кастомного индикатора по предыдущему ChartApplyTemplate следующее применение ChartApplyTemplate игнорируется. Аналогичное ограничение есть и на ChartSetSymbolPeriod.

При этом соломка "Двигаем очередь на графике" тут совершенно не помогает.

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

Подобный механизм как в коде даст больше возможностей для скрининга акций и других фин инструментов.

Поможет ли Sleep(...) между применениями шаблона? Что может помочь что бы код представленный выше работал корректно?

Программа в маркете помогает людям делать скрининг фин инструментов, соответственно люди могут переключать фин инструменты быстро кликая по именам фин инструментов.

Программа сохраняет шаблоны и для нового инструмента загружает свой шаблон. Вот тут и происходит БАГ.  

С EURUSD трейдер переходит на GBPUSD и не получает свой шаблон сделанный ранее, у него остается предыдущая разметка трендов.

Буду благодарен за любую помощь...

 
Vladimir Pastushak:

Буду благодарен за любую помощь...

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

Библиотеки: Expert

fxsaber, 2017.09.08 14:45

ChartApply не сразу срабатывает. А какие-либо дальнейшие действия можно делать только после срабатывания.


Чтобы понять, что шаблон применился, нужно изменить сам шаблон (в библе изменяется цвет одной характеристики чарта - 4-й байт, отвечающий за прозрачность) и через Sleep дождаться (ChartGetInterger), когда это значение станет свойством чарта. После этого задать ему нормальное значение через ChartSetInteger.

Этот механизм гарантирует применение шаблона.

 
fxsaber:

Этот механизм гарантирует применение шаблона.

Не гарантирует... Можете проверить сами...

Задержка с Sleep(1000) то же не помогает...
 
Vladimir Pastushak:

Не гарантирует... Можете проверить сами...

Задержка с Sleep(1000) то же не помогает...

Дело не в Sleep, а в проверке совпадения свойств.

 
         // Двигаем очередь на графике
         ChartGetInteger(window[c].id, CHART_WINDOW_HANDLE);
Комментарий неверный, чтение хендла чарта не вызывает обработку его очереди.
 
Ilyas:
Комментарий неверный, чтение хендла чарта не вызывает обработку его очереди.

Похоже, ошибаетесь. Сам пришел к выводу, что влияет.

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

Библиотеки: Sequence

fxsaber, 2020.10.14 14:42

Совмещение с FileSelectDialog, чтобы при запуске Терминала не возникала каша из диалоговых окон.

#include <fxsaber\Sequence.mqh> // https://www.mql5.com/ru/code/31446

void OnInit()
{
  SEQUENCE Sequence; // Последовательный запуск расчетов
  
  if (Sequence.Init()) // Дожидаемся освобождения вычислительных ресурсов.
  {
    string FileNames[];

    ChartSetInteger(0, CHART_BRING_TO_TOP, 0, true);
    ChartGetInteger(0, CHART_WINDOW_HANDLE); // Сдвинули очередь.
    
    FileSelectDialog(MQLInfoString(MQL_PROGRAM_NAME) + " " + _Symbol + " " + EnumToString(_Period),
                     NULL, NULL, FSD_ALLOW_MULTISELECT | FSD_FILE_MUST_EXIST, FileNames, NULL);
    ArrayPrint(FileNames);
  }
}
Иначе CHART_BRING_TO_TOP не сработает сразу.
Причина обращения: