Недавно вдруг освоил MQL4. Просто безупречный язык. Владея программированием на уровне школы, без особых проблем написал пару роботов буквально за один день. Все предельно просто, предельно приспособлено под трейдерские задачи, логично, интуитивно понятно. Но. Metatrader 5 начинает свое шествие по планете. Четвертая версия, по идее, должна отойти на второй план и кануть в Лету.
С удивлением обнаружил, что мой недавно обретенный навык программирования на MQL4 абсолютно бесполезен в новой версии. Более того MQL5 мне показался откровенно бредовым, сложным и непонятным. Заинтересовавшись вопросом отличий этих языков наткнулся на такую таблицу:
Полная версия этого документа доступна по адресу:
http://ruforum.mt5.com/threads/12812-konverter-programm-iz-mql4-v-mql5
(вложение «Таблица основных различий MQL4to5_0.2.zip» во втором сообщении темы)
Объясните мне пожалуйста, зачем все так трудно? Какие преимущества и достоинства вытекают из такого невообразимого усложнения языка? Какая в этом культурно-историческая ценность? Спасибо.
так что развивайся
MT, Wealth-Lab и т.д.
1) скорость на этапе выполнения (~ в 20 раз быстрее)
2) контроль ошибок на этапе компиляции и отладки
3) гибкость конструкций языка. Написать можно почти всё и это удобно делать.
У меня индюк ~600 строк кода (сложные адаптивные функции с большим кол-вом расчётов в циклах на несколько буферов).
В МТ4 эта зверюга тормозит по 5-15 секунд перерисовывая историю таймфрейма (при любом переключении или обновлении ТФ). Так что приходилось dll вешать, что не есть удобно.
Кроме того, функции этого индюка универсальны, я их пытался подключать к другим вещам. В итоге наткнулся на кучу неудобств (отсутствие пространств имён, капсуляции и т.п.).
На MQL5 написал класс за час (вообще 1-й раз тогда в глаза видел MT5!). Всё лишнее убралось в капсулу, перегрузки методов дали красивый и интуитивный расклад. Код чистый, пользоваться удобно, писать удобно, отлаживать так себе, но всё же лучше mt4. А главное — ни каких тормозов на графиках и на тестах справляется приемлемо быстро.
1) Минимум ошибок: на самом деле ошибок МОРЕ! Но их маскирует среда. Их не видно лишь потому, что все ошибки кодера (то есть программиста) исправляет терминал на лету (во время выполнения). То есть вместо отладки жёсткий контроль всех действий бота. Это как я уже заметил процесс с большими издержками.
2) Максимум прозрачности: а вот её-то как раз и нет! Очень-очень часто в Mq4 было непонятно, что именно делает бот.
Даже на 5 строк кода у вас наверняка есть ошибка, но вы об этом можете и не узнать. Причём, хорошо если ещё логика не страдает, тогда — да, такой подход полезен для любителей. Но бывает и хуже. Тогда понимаешь, что прозрачность мнимая.
Если интересно, могу привести 2 простых примера, это грабли на которые наступают все в mq4 =).
Примеры будут очень интересны! Думаю, не только мне. Наверно, даже лучше отдельным постом. С удовольствием посмотрю, наступил я на Ваши грабли, или нет еще. :)
То есть:
1) вся рутина убирается с глаз долой. Грубо говоря «меньше буковок». С этим пунктом mq4 справляется лучше всех.
2) каждое выражение языка должно быть прозрачным. Кодер сходу(или из доки) может понять, что будет на выходе из конструкции при ЛЮБОМ входе. Вот тут начинаются грабли.
Создайте функции-обвертки или методы класса.
Также #define в помощь:
У меня другая проблема MQL5->MQL4, только освоился на MQL5, теперь пытаюсь понять 4-й.
MQL4 более дружелюбен для пользователя не программиста. В нем все необходимые трейдерские функции рализованы в виде конкретных команд и не требуют знаний массивов, указателей или структур. Соответственно, понять его просто — на каждую свою хотелку нужно найти в мануале соответствующую команду и прописать ее параметры, а не городить килобайты всяких объявлений, чтобы получит текущее значение скользящей средней или отправить ордер.
Да, разрабы еще те сволочи — не смогли разбить функции по сложности: упрощенные для новичков, а многостраничная херь для профи, плюс промежуточные уровни, но… есть то что есть.
До этого вникал в Quik+Lua - там еще веселее… разрабы умеют все довести до абсурда.
С другой стороны борясь с трудностями становишься сильнее, если правильно выбран подход. Так и с кодом — нужно научиться его структурировать и упорядочивать
Собственно стартовать получилось после просмотра видео:
MQL5 — работа с ордерами
Как написать советник для Metatrader 5