Обсуждение статьи "Переход с MQL4 на MQL5" - страница 2

 

Интересная статья, спасибо.
 
Quantum:

Ошибки могут быть, материал достаточно большой.

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

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

По этой причине (архитектура функций эмулятора) у автора в реализации были некоторые неочевидные вещи (например для iLowest/iHighest раньше использовались глобальные Open[]...High[]..., которые предварительно объявлялись глобально и делались AsSeries в OnInit), которые подразумевались как в эмуляторе, естесственно для универсальности в функциях лучше использовать локальные массивы.

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

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

если это справочник то пусть будет справочником!!

а то не рыбо не мясо


почему глобальные массивы используются для помежуточных расчетов!

можно внутри функции выделить место для таких расчетов. зачем ставить ссыль?

в некоторых функциях они модифицируются ваше атас

опять та же ихайгест!! модификация глобального буфера внутри функции атас!

ну хотя уже исправили пока я писал, но у уверен данный стиль будут прослеживаться ещё по всей статье

когда ценовая конструкция мкл4 будет обращаться к данным массивам что она найдёт....


дальше у нас идёт 6 разделов сравнений!

функций мкл4 с мкл4

просто сравнение


потом ни стого не сего начинается

таблица замены функций

2 раздела


потом опять сравнение

3 раздела


далее начинаются замены

функций!

и потом опять....

сначала в табличке идёт мкл4 функция потом 2 рода ячеек

где содержится переписанный на мкл5 заменитель

или ,2 тип ячеек, просто идентичная функция 

и это на протяжении все статьи.. так это перенос на мкл4 или справочник

оставьте что-нибуть одно!


также множество недочетов которые приведут к нерабочему состоянию

так как уже собаку сьел на особенностях хранения данных в массивах мкл5

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

в некоторый придётся определить направление индексации

из за разности обработки данных в среде мкл4 и мкл5

ибо уже чую что компилируется, но не заведётся


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

в статье есть парочка интересных моментов

 но не рыба ни мясо.


Оставить без замен просто функция и её аналог на mql5

это будет полезно при полноценном переписывании индикатора Мкл4 на Мкл5

со всеми ссылками на документацию!

нафиг эти сырые заменители.


конечно извените за столь резкую критику, но выпускать такую сырую статью когда её ждут больше всего.

с такими я бы сказал критическими ошибками.

чему из неё научатся....

явно ереси...


и на последок почему нет ни одного прикреплённого файла??

раз столько много функций перенесено почему отсутствует файл с расширение .mqh

где бы все функции находились в сборе... тем более их 250... копировать по 1 чтобы перенести мкл4 ....

опять таки же наводит на мысль что автор сознательно пытается что то скрыть.


С уважением Василий.

 
CoreWinTT:
...

ибо уже чую что компилируется, но не заведётся

...

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

Я вижу решение в виде эмулятора - с простым и понятным механизмом переноса индикаторов, скриптов и советников на MQL5. Над чем в настоящее время и работаю.

 
угу крутой эмуль будет =)
 
CoreWinTT:

если это справочник то пусть будет справочником!!

а то не рыбо не мясо

....

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

Статья задумывалась именно как справочник - привести соответствия между функциями MQL4 и MQL5.

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

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

 
DC2008:

Надо понимать так: реализация слишком сложная и не оправдана. Всё-таки цель - полностью отказаться от функций MQL4.

Вот именно. Речь про то, чтобы пояснить, какими (другими) средствами теперь нужно пользоваться, за счет каких изменений в архитектуре системы. Поскольку данный материал дан в виде справочника, в нем важно все клетки заполнить "решением". Нет аналога - значит есть другой подход.
 
marketeer:
Вот именно. Речь про то, чтобы пояснить, какими (другими) средствами теперь нужно пользоваться, за счет каких изменений в архитектуре системы. Поскольку данный материал дан в виде справочника, в нем важно все клетки заполнить "решением". Нет аналога - значит есть другой подход.

тут сложно тут как минимум по каждому индикатору над книжку прочитать

даж я таким похвастаться не могу

 
marketeer:
  ... важно все клетки заполнить "решением". Нет аналога - значит есть другой подход.

17 раздел добавлен ссылкой на "решение".

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

 

В 17-м хорошо. По поводу первой очереди - не мне судить. У каждого, кто возьмется переводить mql4 на mql5, будет своя собственная очередь. Чтобы ничего не пропустить, я б заполнял просто по порядку сверху вниз, начиная с AccountFreeMarginCheck, AccountFreeMarginMode, ArrayCopyRates, ArrayDimension и т.д (их осталось всего 9).

 
Quantum:

Уважаемый Василий!

Спасибо Вам за замечания, функции раздела 18 обновлены. Просим Вас проверить текущий вариант.

Автор проделал огромную работу, могут быть ошибки, их мы исправим совместными усилиями.

Функция TFMigrate(int tf) нужна для подстановки корректных значений таймфреймов MQL5. Например в MQL4 численное значение константы PERIOD_H1 равно 60, а в MQL5 численное значение PERIOD_H1=16385, т.е. TFMigrate(60)=16385.

На мой взгляд для работы с ТФ в условиях миграции необходимы две функции:

1. Преобразует число секунд в ТФ - скажем ENUM_TIMEFRAMES SecondToPeriod(int Value);

2. Преобразует период в секунды - скажем int PeriodToSecond(ENUM_TIMEFRAMES Value).


Что в своем модуле миграции я с успехом и сделал еще в самом начале (при этом есть еще и вариант с DLL).


PS

Для максимального соответствия MQL4 лично я избавился от всех нестандартных для него периодов

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