Отличие работы прорисовки нескольких линий индикатора в МТ4 и в МТ5 - страница 5

 
Aleksey Lebedev:

Для DRAW_ZIGZAG

На два буфера, одна линия(plot).

Свойства через директивы или функции - без разницы.

Алексей, спасибо.

Вот что получается:

Уже лучше.

Откуда-то появляется лишняя коричневая линия. Но это уже моя ошибка. Разберусь.

 
Спасибо всем. Все работает.
 

Поторопился сказать, что все работает.

Через графический интерфейс задается вывод зигзага с помощью DRAW_ZIGZAG.

В этом случае рисуется одна линия. Хотя задействованы два буфера.

Но есть также переключение на DRAW_ARROW. И в этом случае каждый из двух буферов выводится отдельной линией.

И в этом случае должно быть две линии. В этом варианте на экстремумах выводятся ромбики (или другие символы). И экстремумы не соединяются линиями, как в обычном зигзаге.

И вот в этом втором варианте выводятся ромбики только на максимумах или только на минимумах. В моем варианте только на минимумах.

В МТ4 выводилось и на максимумах и на минимумах.

==================

Скорее всего необходимо громоздить программный сдвиг линий вывода...

Геморрой.

 
Eugeni Neumoin:

Поторопился сказать, что все работает.

Через графический интерфейс задается вывод зигзага с помощью DRAW_ZIGZAG.

В этом случае рисуется одна линия. Хотя задействованы два буфера.

Но есть также переключение на DRAW_ARROW. И в этом случае каждый из двух буферов выводится отдельной линией.

И в этом случае должно быть две линии. В этом варианте на экстремумах выводятся ромбики (или другие символы). И экстремумы не соединяются линиями, как в обычном зигзаге.

И вот в этом втором варианте выводятся ромбики только на максимумах или только на минимумах. В моем варианте только на минимумах.

В МТ4 выводилось и на максимумах и на минимумах.

==================

Скорее всего необходимо громоздить программный сдвиг линий вывода...

Геморрой.

DRAW_SECTION попробуйте
 
Artyom Trishkin:
DRAW_SECTION попробуйте

Из талмуда:

    Стиль DRAW_ZIGZAG рисует заданным цветом отрезки по значениям двух индикаторных буферов. Этот стиль очень похож на DRAW_SECTION, но в отличие от последнего позволяет рисовать вертикальные отрезки в пределах одного бара, если для этого бара заданы значения для обоих индикаторных буферов.

Следовательно, DRAW_SECTION - не подходит.

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

================

Все уже переделал. Просто перетащил эти построения в конец списка и переписал номера Plot-ов и привязку буферных массивов.

Но вот в мультизигзаге - MZZ9 - надо будет делать по-другому. Но это пока сейчас не актуально.

================

Основные задачи по переводу на МТ5 завершил. Остались более сложные моменты. Например, из-за задержки при загрузке котировок после переключения таймфреймов графические построения тащат телегу впереди лошади. То есть графические построения производятся до того, как сформировываются массивы с котировками. В результате на графике - безобразие. Это уже буду решать по мере поступления ошибок и идей их устранения.

Заметил, функция iTime и, возможно, другие финкции доступа к таймсериям повинны в этом. То есть они работают на несформированных таймсериях. Как на их работу повлиять, не представляю. Поэтому при неверной отработке iTime просто запрещаю вывод графических построений до правильного ответа от iTime. Пока только для вил Эндрюса этот запрет включил. Остальные не проверял. 

И вот это ставит МТ5 в невыгодное положение по отношению к МТ4. В МТ4 таких проблем нет.

===========

И картинки.

Вывод зигзага с DRAW_ARROW (мелкие крестики):

DRAW_ARROW

Вывод зигзага с DRAW_ZIGZAG:

DRAW_ZIGZAG


 

Для работы фрактальной фильтрации необходимо, чтобы по всем таймфреймам были сформированы котировки.

В МТ5 с этим проблема. Подкачка и формирование котировок занимает время. Из-за этого задержки и частые ошибки графических построений.

============

Из обсуждения на форуме.

Просили перевести на МТ5.

13172

fxsaber 2019.04.29 23:05   EN
Eugeni Neumoin:

Надо переписывать с нуля.

Вы примеров конвертации не видели.

Текс ZUP занимает около 50 000 строк. Некоторые участки создавались 14 лет назад. Перевести это на МТ5 быстро не получается.

Конвертация не зависит от количества строк.

Хороший спец за день, наверное, справится.

=============================

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

Если в МТ4 котировки формировал Терминал, то в МТ5 приходится при кодировании ломать голову. Формирование котировок во многом переложено на программиста.

И здесь уже дело не в хорошем спеце.

Например, в МТ4 сделано так, что графические инструменты привязываются по времени котировок на минимально доступном таймфрейме. И при переключении тф, например, вилы всегда остаются привязанными к экстремумам. Для этого были разработаны специальные алгоритмы. Но в МТ5 из-за специфики формирования котировок даже то, что все формируется из минуток не помогает найти правильное время экстремума на минутках. Алгоритм из МТ4 не работает.


И еще много чего есть.

 
Eugeni Neumoin:

Запросите информацию со всех используемых символов/ТФ при инициализации, а потом дергайте их каждую минуту, чтобы они оставались в кэше терминала и строились в фоне.

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

 
Eugeni Neumoin:

Для работы фрактальной фильтрации необходимо, чтобы по всем таймфреймам были сформированы котировки.

В МТ5 с этим проблема. Подкачка и формирование котировок занимает время. Из-за этого задержки и частые ошибки графических построений.


Например, в МТ4 сделано так, что графические инструменты привязываются по времени котировок на минимально доступном таймфрейме. И при переключении тф, например, вилы всегда остаются привязанными к экстремумам. Для этого были разработаны специальные алгоритмы. Но в МТ5 из-за специфики формирования котировок даже то, что все формируется из минуток не помогает найти правильное время экстремума на минутках. Алгоритм из МТ4 не работает.

Как я это вижу: Для начала можно сделать вывод в лог информацию о том, что таймфрейм синхронизирован - при переключении.  То что описано в Организация доступа к данным, но под свои задачи.

Когда будет сделано решение "я на 100% знаю, что таймфрейм синхронизирован и готов к использованию", то будет ясно в какой момент можно что-то требовать от объектов на этом таймфрейме.

 
Rashid Umarov:

Как я это вижу: Для начала можно сделать вывод в лог информацию о том, что таймфрейм синхронизирован - при переключении.  То что описано в Организация доступа к данным, но под свои задачи.

Когда будет сделано решение "я на 100% знаю, что таймфрейм синхронизирован и готов к использованию", то будет ясно в какой момент можно что-то требовать от объектов на этом таймфрейме.

Да я уже разобрался. Хорошо, что в самом начале структурировал программу. В каком месте делать загрузку котировок, понятно. И сейчас все работает. Но качество этой работы меня не устраивает. Поэтому буду оптимизировать. У меня же не совсем индикатор. Скорость отработки не требуется. Попутно придумал, как определять, на каком тф котировки кончаются. То есть, ежу понятно, что скорее всего за 1970 год в лучшем случае котировки дневок имеются у брокеров. А в МТ5 все переведено в минутки. То есть за 70-е годы месячные свечки переводятся в минутки. Одна месячная свечка соответствует одной минутной. И нельзя считать, что экстремумы на месяцах, найденные в том периоде можно будет перевести на минутный тф. Графические построения, созданные на месячном тф, могут быть воспроизведены только на тех ниже находящихся тф, где имеются реальные котировки. Если котировок нет, то и графические построения должны убираться. Это как раз и является одним из элементов фрактальной фильтрациии, реализованной в ZUP. Придумал, как это сделать в МТ5, не обманываясь тем, что все строится из минутных котировок. Есть алгоритм определения, на каком тф кончаются котировки. А минутки там являются блефом.

В общем, придется потрудиться.

 

Получается следующее.

Индикаторных буферов - 28.

Буферов для рисования (Plot) - 18.

Для корректной работы необходимо загрузить ВСЕ! таймфреймы. Загрузка и подготовка таймсерий происходит очень долго.

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

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

Полагаю, все проблемы из-за (цитата из описания языка со страницы по доступу к таймсериям): "...Это связано с тем, что в целях экономии ресурсов в MetaTrader 5 не хранится полная копия требуемых данных для mql5-программы, а дается прямой доступ к базе данных терминала...".

Как убрать артефакты понимание есть. Для этого придется делать сложные программные навороты. А вот с длительной загрузкой данных и с созерцанием надписи: ОЖИДАНИЕ ОБНОВЛЕНИЯ... Эту штуку побороть проблематично.

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

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

============

Это так, замечания по ходу. Программу переведу на МТ5. Но не завидую тем, кто будет ее применять в работе. Хотя запросов по переводу на МТ5 было огромное количество.

Такие вот мысли.

Просьба не комментировать этот пост. Это просто крик души...

=============

Картинка с артефактами для наглядности:

Но это не самая крутая картинка.

Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
  • www.metatrader5.com
Определение трендов, построение каналов, выявление циклов и уровней поддержки/сопротивления — все эти и многие другие задачи решаются при помощи аналитических объектов. Всего в торговой платформе доступно 46 таких инструментов. Среди них имеются геометрические фигуры, различные каналы, инструменты Ганна, Фибоначчи, Эллиотта и многое другое. В...
Причина обращения: