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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Igor Makanu
8759
Igor Makanu  
Vict:

fxsaber верно сказал - есть один вариант

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

Приветствую!

Топик бы новый открыть, не могу сформулировать проблему... с этим у меня проблемы ))) , а материал довольно свежий и интересный

Вы сделали большую работу, довести бы это до финала - удобство использования (у @fxsaber все его наработки подключаются один раз одним инклудником) - это практично!

Ну и чтобы все это выглядело профессионально, нужно брать за основу синтаксис (или приблизиться к максимально)  С++ / C#

Eugeni Neumoin
14745
Eugeni Neumoin  
Artyom Trishkin:

Могу озвучит моё мнение:

Делаем спокойно из того, что есть на данный момент, не ноем, помогаем в поисках багов и просим с ожиданием исправлений - они всё-таки правятся и появляются новые приятные фишки.

Солидарен с таким подходом.

---------

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

В версии под МТ5 добавил еще и массив с номерами баров. Для первых 10 экстремумов. Это помогает для большинства случаев. В МТ5 страдают только нестандартные привязки.

Полный кэш для доступной истории по всем 21 таймфреймам создавать не буду. С таким подходом памяти компьютера не хватит.

Для понимания скажу: индикатор для МТ4 некоторые энтузиасты на один график выводят до 9 экземпляров. Одновременно бывает открыто много графиков для различных валютных пар. И на всех по 9 экземпляров индикатора выведено. Такое применение индикатора реализуется для системы DML&EWA, созданной Putniuk-ом. Он сам выводил до 72 экземпляров индикатора. То есть на 8 валютных парах.

При таком использовании дополнительный кэш по 21 тф в совокупности с 28 буферами сильно загружают память.

Это только с учетом загрузки памяти. Переделка огромного кода под использование кэша вместо функций iTime, iLow, iHight, iClose, iBarShift - занятие слишком утомительное

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

Проходил несколько раз такие марафоны. 

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

2. Перевод всех однобуферных зигзагов в двухбуферные. Это заняло примерно полгода.

3. Создание графического интерфейса. В общей сложности заняло где-то более 2-х лет. Года 3. И есть еще интересные идеи для графического интерфейса. Но пока духу для их реализации не хватает...

4. Первоначально пытался перевести с МТ4 на МТ5 год назад. Тогда не получилось. Сейчас получилось. Но меня качество перевода не устраивает.

Были и другие марафоны. 

Создание кэша может в тупик завести. С этим связываться опасно...

------------

Артем, твой подход (процитированный выше) полностью поддерживаю.

Eugeni Neumoin
14745
Eugeni Neumoin  
Опять же, приведу цитату из первого поста:

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

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

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

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

--------------

Псроблема осталась.

В программе несколько сотен обращений к истории котировок в разных участках программы. Листинг программы составляет примерно 50 000 строк.

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

Можно создать программу и под МТ5. Но для этого надо всю архитектуру менять. На такие подвиги нет времени.

Решил, что не стоит заниматься бестолковым занятием. Программа в МТ4 работает. А на МТ5 переходить не планирую. Сделал ZUP под МТ5 бесплатным.

Все желающие могут его скачать и посмотреть на его работу под МТ5. А также сравнить с вариантом под МТ4.

На этом возню с МТ5 прекращаю. Это просто потеря времени.

Аналогичные сообщения разместил на некоторых других форумах.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий