Соответствие синтаксиса функций MQL4 и MQL5

 

Добрый день!
Кто знает какие функции из MQL5 имеют возможность использования аналогичного синтаксиса в MQL4 (и где посмотреть).
Интересуют в основном те функции, описания которых отсутствует в стандартной справке по языку, но тем не менее они корректно работают в MQL4.

Например, "новая" конструкция:

   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,Period);

отсутствует в описании MQL4, но работает в MQL4 аналогично "старой" конструкции

   SetIndexDrawBegin(0,Period);

Интересует по возможности полный список таких соответствий.

Есть конкретный случай - написан индикатор на MQL5 и нужно с наименьшими изменениями в синтаксисе перенести его на MQL4. 

Меня интересует: какие конструкции из MQL5 будут в том же синтаксисе работать в MQL4.  

MQL5 функцияНаписание в MQL4 (в синтаксисе MQL5) Написание в MQL4 (в синтаксисе MQL4)MQL5 функция работает/не работает в MQL4
PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,Period);PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,Period); SetIndexDrawBegin(0,Period);Работает


 


 


 


 
 
вот вам в помощь https://www.mql5.com/ru/articles/81
Переход с MQL4 на MQL5
Переход с MQL4 на MQL5
  • 2010.05.11
  • Sergey Pavlov
  • www.mql5.com
Данная статья, построенная в форме справочника по функциям MQL4, призвана помочь переходу с MQL4 на MQL5. Для каждой функции языка MQL4 приведено описание и представлен способ ее реализации на MQL5, что позволит вам значительно ускорить перевод своих программ с MQL4 на MQL5. Для удобства функции разбиты на группы, как в документации по MQL4.
 
Yurij Izyumov:
вот вам в помощь https://www.mql5.com/ru/articles/81
Увы это никак не проясняет вопроса об использовании функций в синтаксисе MQL5 в программах для MQL4. В материале по ссылке можно только найти замену функций MQL5 на функции "старого" формата MQL4. А это совсем не то, что нужно. Нужна не замена на старый формат, а список функций в "новом" MQL5 формате, работающих и в MQL4. Это соответствие практически не отражено в документации, поэтому и возник такой вопрос.
 
Yury Kirillov:

Добрый день!
Кто знает какие функции из MQL5 имеют возможность использования аналогичного синтаксиса в MQL4 (и где посмотреть).
Интересуют в основном те функции, описания которых отсутствует в стандартной справке по языку, но тем не менее они корректно работают в MQL4.

Например, "новая" конструкция:

   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,Period);

отсутствует в описании MQL4, но работает в MQL4 аналогично "старой" конструкции

   SetIndexDrawBegin(0,Period);

Как Вы определили, что новая конструкция работает аналогично старой?

Вы проверили код возврата PlotIndexSetInteger? Он наверняка false. Вы проверили код ошибки? Она наверняка 4014 (неизвестная функция)

 
Slawa:

Как Вы определили, что новая конструкция работает аналогично старой?

Вы проверили код возврата PlotIndexSetInteger? Он наверняка false. Вы проверили код ошибки? Она наверняка 4014 (неизвестная функция)

Спасибо за дополнительные замечания, сейчас перепроверю.
 
Slawa:

Как Вы определили, что новая конструкция работает аналогично старой?

Вы проверили код возврата PlotIndexSetInteger? Он наверняка false. Вы проверили код ошибки? Она наверняка 4014 (неизвестная функция)

Всё именно так, как Вы написали. То есть при синтаксисе формально проходящем проверку функция не работает вовсе? Тогда ещё интереснее: как узнать (где прочитать) какие синтаксически правильные функции формата MQL5, использованные в MQL4 априори неработоспособны? Или теперь проверка синтаксиса - формальная процедура, и каждую функцию нужно всесторонне тестировать самостоятельно? 
 

В пятёрке индикаторы реализованы совсем по-другому, чем в четвёрке. Совсем разные архитектуры.

Но есть и хорошая новость - одинаковое исполнение OnCalculate второй формы.

Для четвёрки и пятёрки будут отличаться только функции инициализации. Смотрите примеры индикаторов в клиентском терминале MT4, смотрите примеры тех же индикаторов в MT5 - там запрограммированы практически все случаи жизни

 
Slawa:

В пятёрке индикаторы реализованы совсем по-другому, чем в четвёрке. Совсем разные архитектуры.

Но есть и хорошая новость - одинаковое исполнение OnCalculate второй формы.

Для четвёрки и пятёрки будут отличаться только функции инициализации. Смотрите примеры индикаторов в клиентском терминале MT4, смотрите примеры тех же индикаторов в MT5 - там запрограммированы практически все случаи жизни

Вопрос теперь немного о другом. Есть ряд синтаксически правильных в MQL4 конструкций, например:

   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,Period);

Каким путём можно выяснить не прибегая к тестированию работоспособности самой функции, что её нельзя использовать в MQL4?
Как можно выявить такие ситуации на этапе компиляции?
Почему такие неработоспособные функции компилятор распознает как правильные конструкции?

 
Yury Kirillov:

Вопрос теперь немного о другом. Есть ряд синтаксически правильных в MQL4 конструкций, например:

   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,Period);

Каким путём можно выяснить не прибегая к тестированию работоспособности самой функции, что её нельзя использовать в MQL4?
Как можно выявить такие ситуации на этапе компиляции?
Почему такие неработоспособные функции компилятор распознает как правильные конструкции?

Все ответы сводятся к тому, что нужно писать отдельный код инициализации для четвёрки и отдельный код инициализации для пятёрки. Автоматизация здесь неприменима.

В документации все функции приведены. Если в четвёрочной документации нет функции PlotIndexSetInteger (а её там нет потому что в четвёрке нет понятия plot), то и использовать её не надо

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

 
Slawa:

Все ответы сводятся к тому, что нужно писать отдельный код инициализации для четвёрки и отдельный код инициализации для пятёрки. Автоматизация здесь неприменима.

В документации все функции приведены. Если в четвёрочной документации нет функции PlotIndexSetInteger (а её там нет потому что в четвёрке нет понятия plot), то и использовать её не надо

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

Спасибо за подробный комментарий!
 
Slawa:

Все ответы сводятся к тому, что нужно писать отдельный код инициализации для четвёрки и отдельный код инициализации для пятёрки. Автоматизация здесь неприменима.

В документации все функции приведены. Если в четвёрочной документации нет функции PlotIndexSetInteger (а её там нет потому что в четвёрке нет понятия plot), то и использовать её не надо

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

Вячеслав ,  можно вопрос отвлеченный от темы.

     Планируется ли слияние MQL4 -> в MQL5  т е  с поглощением   платформы MT4  платформой MT5 ?

     Ведь понятно что сопровождение двух платформ накладно  , и требует больше ресурсов компании.


Почему возник такой вопрос:

Давно наблюдая  за изменениями  MQL4 -  замечается как  плавно и постепенно MQL4  получает улучшения  близкие к  MQL5.

а МТ5  получает функционал ранее присущий  только платформе МТ4  ( Хедж )...

Возникает  ощущение что платформы двигаются друг к другу,  видимо для слияния.