Проблема перевода с МТ4 на МТ5. Или, точнее, невозможность без'ошибочного исполнения некоторых алгоритмов в МТ5.

 

Сначала цитата из справочника языка MQL5. Рубрика Организация доступа к данным.

"...Доступность данных

Наличие данных в формате HCC или даже в готовом для использования формате HC не всегда означает безусловную доступность этих данных для отображения на графике или для использования в mql5-программах.

При доступе к ценовым данным или к значениям индикаторов из mql5-программ следует помнить, что не гарантируется их доступность в определенный момент времени, либо с определенного момента времени..."

Сразу прошу не давать советы, как обойти описываемую проблему. Это в бОльшей степени пишется для разработчиков MQL5.

В ZUP для МТ4 реализован алгоритм фрактальной фильтрации. В статье ZUP - зигзаг универсальный с паттернами Песавенто. Графический интерфейс немного об этом написано. Но здесь еще раз опишу алгоритм.

При выводе графических инструментов на график с привязкой выбранных графических инструментов (например, вил Эндрюса. Да любых других) к экстремумам зигзагов или к волновой разметке с помощью графического интерфейса задействуется алгоритм фрактальной фильтрации.

Фрактальная фильтрация удаляет созданный графический инструмент на тех таймфреймах, где вывод этого графического инструмента теряет смысл.

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

На таких таймфреймах не имеет смысла выводить ранее созданный графический инструмент. Он теряет свой функционал. Фрактальная фильтрация в подобных случаях   автоматически препятствует выводу "попавших в беду" графических инструментов.   ... по ходу дела добавлю для нейросетевиков... здесь есть очень интересные идеи по реализации в нейросетях... но это тема другого плана.

Проблема MQL5 в том, что даже имея сформированные таймсерии по всем таймфреймам для всех экстремумов, к которым привязывается графический инструмент, бывают такие моменты, когда из-за особенносте Организации доступа к данным (см. выше) к некоторым таймфреймам для выбранного экстремума доступ прекращается. И в результате формируются неверные данные по таймфреймам для алгоритма фрактальной фильтрации. То есть, например, при доступе ко всем таймфреймам верхний тф в данных для фрактальной фильтрации дает значение верхнего тф месячный таймфрейм. Но в момент, когда  не гарантируется доступность  , верхний тф для данного экстремума ограничивается текущим таймфреймом.

Пользователь кликает мышкой по символу, к которому привязывается графический инструмент. Графический инструмент выводится. Пользователь переключается на старший тф. Графический инструмент алгоритм фрактальной фильтрации удаляет. Пользователь в недоумении. Экстремумы все видно, а графический инструмент исчез.

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

В МТ4 таких проблем нет.

Описанная ситуация является той проблемой, которая запрещала, в данном случае мне, делать программы для МТ5. Эта проблема была понятна еще в момент вывода МТ5 на рынок...

Код ZUP перевел на МТ5. И разместил в маркете. Но там выше описанная проблема присутствует. Я не стал громоздить костыли для обхода данной проблемы. ... Можно, зная о данной проблеме, просто удалить созданный графический инструмент. И вывести его заново. Но это, как бы помягче сказать....

Считаю, что описанная проблема является все-таки недоработкой языка MQL5 или терминала МТ5. ДОЛЖЕН!!! быть гарантированный доступ к уже сформированным таймсериям в любой момент времени!

Вдогонку. При создании волновой разметки в ZUP фрактальная фильтрация задействована. Имеем следующее. Когда есть доступ ко всем таймсериям все тф волновая разметка выводится правильно. Но при внезапном прекращении доступа к таймсериям волновая разметка может вывестись непредсказуемым образом. ТО есть, когда волновая разметка создавалась все было тип топ. А в некоторые последующие момент, когда волновая разметка создана при переходе на другие тф она выводится непредсказуемым образом.  И здесь создавать костыли для устранения, считаю, ошибочной работы терминала ну очень не просто.

 
Да забудьте Вы про графические объекты. Это очень неудобно и ограниченно. С канвасом будет все работать проще, быстрее и с неограниченными графическими возможностями.
 

Да, кстати, как раз вчера писал индикатор, в нем надо было периодически копировать данные кусками длительностью в год с W1. Очень часто случались неудачные попытки копирования. В итоге ничего не получилось, пришлось все делать совсем по другому принципу. 

 
Eugeni Neumoin:

...

Так же не привычно и неудобно с доступом к данным после 4ки.

Доступ к данным в 5ке ограничен ТФ.

Если вы нарисуете довольно длинную по времени трендовую линию на ТФ D1 или на W1 то перейдя на М1 или М5 вы не увидите ее из-за ограничения доступа к дальней точке трендовой.

Можете проверить легко.

 Надо разбираться с канвасом. Но возможно и там такая засада ожидает.

 
А вы можете воспроизводимо продемонстрировать недоступность данных?

Вы утверждаете без воспроизводимых доказательств.
 
Замечательно! Хотело было подготовить индикатор, убрать лишнее, что бы показать главное. Сделал. Но все вдруг заработало как Швейцарские часы.
 
Uladzimir Izerski:

Так же не привычно и неудобно с доступом к данным после 4ки.

Доступ к данным в 5ке ограничен ТФ.

Если вы нарисуете довольно длинную по времени трендовую линию на ТФ D1 или на W1 то перейдя на М1 или М5 вы не увидите ее из-за ограничения доступа к дальней точке трендовой.

Можете проверить легко.

 Надо разбираться с канвасом. Но возможно и там такая засада ожидает.

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

Строим с привязкой на W1 вилы. Минимальный тф m20. Это показывает алгоритм фрактальной фильтрации. В данном случае во всплывающей подсказке. На более мелких тф не имеет смысла что-то строить с привязкой к первой точке вил. 

Место, показанное стрелкой вверх, на следующей картинке на m20 отмечено вертикальной линией. Все прекрасно выводится. А вот на более мелких тф эти вилы фрактальная фильтрация запретит выводить. Там на более мелких тф история выходит за пределы  TERMINAL_MAXBARS. Поэтому и не получится вывести на тф, меньше m20.

Отлично все выводится. Никаких смещений. И это классно в МТ5 работает. Но, чтобы так выводилось, необходимо на минимальном тф, в данном случае на m20, точное время экстремума задать при выводе вил.

Кстати, видите 09-11-2018 красиво отработала линия SLM318 (пунктирная). Это как по технике снайпер, которую Академия форекс из Минска пропагандирует. Но здесь рынок "увидел" линию SLM318 и просто виртуозно отработал...

 
Renat Fatkhullin:
А вы можете воспроизводимо продемонстрировать недоступность данных?

Вы утверждаете без воспроизводимых доказательств.

Картинку не сохранял. Но при появлении такой ситуации выложу картинки. Воспроизвести с помощью какого-то тестового кода не смогу. Слишком большой код надо создавать.

Просто опишу как было. Вывел вилы на H3. Привязал к экстремумам, которые и на более старших тф имеются. Перешел на H4. Вилы исчезли. Стал разбираться, почему так произошло. Проверил во всплывающей подсказке, на каких тф находится граница фрактальной фильтрации. Оказалось, верхняя граница была на H3. Удалил вилы с графика. Снова привязал вилы к тем же экстремумам. Проверил верхнюю границу. Она оказалась на месячном тф. И такие ситуации повторялись. Но не часто.

В программе производится обращение ко всем тф для первых 10 экстремумах при выводе зигзага. Каждый раз, когда перерисовывается зигзаг. Зигзаг перерисовывается только при выходе цены из нулевого бара. Не на каждом тике.

Закрываю терминал. Выгружаю его из памяти компьютера. Захожу в папку с историей, где находятся файлы *.hc. Файлы таймсерий для всех таймфреймов имеют дату и время на момент выгрузки терминала из памяти компьютера. То есть все таймсерии сформированы.

 
Не картинка интересует, она производная от вашего кода.

Интересует именно отказ предоставления данных с четкими логами.
 
Renat Fatkhullin:
Не картинка интересует, она производная от вашего кода.

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

Это надо моделировать. Чтобы создать логи. Подумаю, как это сделать.

 
Renat Fatkhullin:
А вы можете воспроизводимо продемонстрировать недоступность данных?

Вы утверждаете без воспроизводимых доказательств.

Если это вопрос ко мне?

То вот воспроизвожу простой пример.

D1.

v1

Першел на H4

H4


Першел на H1

H1


На мелких ТФ будет чистый график.

В списках объектов присутствуют, а на графике их нет.

m1

Причина обращения: