<HELP> for explanation

Блог им. TTrade

MQL4 vs MQL5 Вопрос.

Недавно вдруг освоил MQL4. Просто безупречный язык. Владея программированием на уровне школы, без особых проблем написал пару роботов буквально за один день. Все предельно просто, предельно приспособлено под трейдерские задачи, логично, интуитивно понятно. Но. Metatrader 5 начинает свое шествие по планете. Четвертая версия, по идее, должна отойти на второй план и кануть в Лету.

С удивлением обнаружил, что мой недавно обретенный навык программирования на MQL4 абсолютно бесполезен в новой версии. Более того MQL5 мне показался откровенно бредовым, сложным и непонятным. Заинтересовавшись вопросом отличий этих языков наткнулся на такую таблицу: 
MQL4 vs MQL5 Вопрос.
Полная версия этого документа доступна по адресу:
http://ruforum.mt5.com/threads/12812-konverter-programm-iz-mql4-v-mql5
(вложение «Таблица основных различий MQL4to5_0.2.zip» во втором сообщении темы)

Объясните мне пожалуйста, зачем все так трудно? Какие преимущества и достоинства вытекают из такого невообразимого усложнения языка? Какая в этом культурно-историческая ценность? Спасибо.
 

Не знаю, связано ли это с усложнением языка, но тестирование проходит на много шустрее.
avatar

oldiol

oldiol, Полагаю, что дело в поддежке многопоточности/многоядерности. Metatrader4- совсем древний и использует только одно ядро процессора.
avatar

TT

TT, имея опыт MQL4, за неделю написал 1-го бота на MQL5 по аналогии.
oldiol, Да понятно, что проблема реашемая. Но зачем все так усложнять? Какой выигрыш? Семь дней против одного?
avatar

TT

Dale_DMT, A MQL4 разве не объектно-ориентированный? В любом случае ни слова не сказано о преимуществах ООП. Что я выиигрываю как разработчик торговых роботов?
avatar

TT

mql5 стал более С# подобным или практически идентичным языком
так что развивайся
avatar

vito333

vito333, Я трейдер, а не программист. Понятно, что с т.з. теории программирования MQL5 более правильный язык. Но мне надо ехать, а не шашечки.
avatar

TT

TT, да я согласен, просто это общая тенденция, переводить софт на С# или подобие
MT, Wealth-Lab и т.д.
vito333, Куда катится мир?! То ли дело старый добрый Fortran 77. :)
avatar

TT

TT, абсолютно точно! Сделали б хотя бы как квиковцы сейчас — 2 языка одновременно.
avatar

Vkt

Какие преимущества и достоинства вытекают из такого невообразимого усложнения языка?
1) скорость на этапе выполнения (~ в 20 раз быстрее)
2) контроль ошибок на этапе компиляции и отладки
3) гибкость конструкций языка. Написать можно почти всё и это удобно делать.

У меня индюк ~600 строк кода (сложные адаптивные функции с большим кол-вом расчётов в циклах на несколько буферов).
В МТ4 эта зверюга тормозит по 5-15 секунд перерисовывая историю таймфрейма (при любом переключении или обновлении ТФ). Так что приходилось dll вешать, что не есть удобно.
Кроме того, функции этого индюка универсальны, я их пытался подключать к другим вещам. В итоге наткнулся на кучу неудобств (отсутствие пространств имён, капсуляции и т.п.).

На MQL5 написал класс за час (вообще 1-й раз тогда в глаза видел MT5!). Всё лишнее убралось в капсулу, перегрузки методов дали красивый и интуитивный расклад. Код чистый, пользоваться удобно, писать удобно, отлаживать так себе, но всё же лучше mt4. А главное — ни каких тормозов на графиках и на тестах справляется приемлемо быстро.
Fry, Большое спасибо за развернутый ответ. Почувствовал себя трейдером (не программистом). :) Мой первый и пока единственный индикатор- 5 строчек кода, не считая описаний.
avatar

TT

TT, Собственно, лаконичность языка меня и впечатляет. То что нужно для прикладного программиста-любителя. Минимум ошибок, максимум прозрачности.
avatar

TT

TT, к сожалению, эта лаконичность mq4 была весьма дорогой по ресурсам машины.
1) Минимум ошибок: на самом деле ошибок МОРЕ! Но их маскирует среда. Их не видно лишь потому, что все ошибки кодера (то есть программиста) исправляет терминал на лету (во время выполнения). То есть вместо отладки жёсткий контроль всех действий бота. Это как я уже заметил процесс с большими издержками.
2) Максимум прозрачности: а вот её-то как раз и нет! Очень-очень часто в Mq4 было непонятно, что именно делает бот.

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

Если интересно, могу привести 2 простых примера, это грабли на которые наступают все в mq4 =).
Fry, Под прозрачностью я понимаю наглядность кода. Когда конструкции простые, грубо говоря, собранные из больших кусков, без лишних деталей, лучше видно суть программы. Это справедливо, конечно, когда вы понимаете логику работы этих кусков, иначе найти ошибку сложнее. У меня, естественно, было несколько затыков из-за того, что были непонятны детали того, как работает та или иная функция, но это довольно просто выясняется методом тыка.

Примеры будут очень интересны! Думаю, не только мне. Наверно, даже лучше отдельным постом. С удовольствием посмотрю, наступил я на Ваши грабли, или нет еще. :)
avatar

TT

TT, ок сделаю. Прозрачность должна быть «прозрачной» =)
То есть:
1) вся рутина убирается с глаз долой. Грубо говоря «меньше буковок». С этим пунктом mq4 справляется лучше всех.
2) каждое выражение языка должно быть прозрачным. Кодер сходу(или из доки) может понять, что будет на выходе из конструкции при ЛЮБОМ входе. Вот тут начинаются грабли.
а там можно длл-ки внешние подключать?
avatar

Spekyl

Spekyl, Не знаю. А зачем?
avatar

TT


Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

Залогиниться

Зарегистрироваться
....все тэги
Регистрация
UP