TT
TT личный блог
17 марта 2013, 20:03

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» во втором сообщении темы)

Объясните мне пожалуйста, зачем все так трудно? Какие преимущества и достоинства вытекают из такого невообразимого усложнения языка? Какая в этом культурно-историческая ценность? Спасибо.
25 Комментариев
  • Олег Чунихин
    17 марта 2013, 20:16
    Не знаю, связано ли это с усложнением языка, но тестирование проходит на много шустрее.
      • Олег Чунихин
        17 марта 2013, 20:29
        TT, имея опыт MQL4, за неделю написал 1-го бота на MQL5 по аналогии.
  • vito333
    17 марта 2013, 20:21
    mql5 стал более С# подобным или практически идентичным языком
    так что развивайся
      • vito333
        17 марта 2013, 20:34
        TT, да я согласен, просто это общая тенденция, переводить софт на С# или подобие
        MT, Wealth-Lab и т.д.
      • Vkt
        17 марта 2013, 21:00
        TT, абсолютно точно! Сделали б хотя бы как квиковцы сейчас — 2 языка одновременно.
  • Антон Денисков (Fry)
    17 марта 2013, 21:03
    Какие преимущества и достоинства вытекают из такого невообразимого усложнения языка?
    1) скорость на этапе выполнения (~ в 20 раз быстрее)
    2) контроль ошибок на этапе компиляции и отладки
    3) гибкость конструкций языка. Написать можно почти всё и это удобно делать.

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

    На MQL5 написал класс за час (вообще 1-й раз тогда в глаза видел MT5!). Всё лишнее убралось в капсулу, перегрузки методов дали красивый и интуитивный расклад. Код чистый, пользоваться удобно, писать удобно, отлаживать так себе, но всё же лучше mt4. А главное — ни каких тормозов на графиках и на тестах справляется приемлемо быстро.
        • Антон Денисков (Fry)
          17 марта 2013, 23:40
          TT, к сожалению, эта лаконичность mq4 была весьма дорогой по ресурсам машины.
          1) Минимум ошибок: на самом деле ошибок МОРЕ! Но их маскирует среда. Их не видно лишь потому, что все ошибки кодера (то есть программиста) исправляет терминал на лету (во время выполнения). То есть вместо отладки жёсткий контроль всех действий бота. Это как я уже заметил процесс с большими издержками.
          2) Максимум прозрачности: а вот её-то как раз и нет! Очень-очень часто в Mq4 было непонятно, что именно делает бот.

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

          Если интересно, могу привести 2 простых примера, это грабли на которые наступают все в mq4 =).
            • Антон Денисков (Fry)
              18 марта 2013, 02:58
              TT, ок сделаю. Прозрачность должна быть «прозрачной» =)
              То есть:
              1) вся рутина убирается с глаз долой. Грубо говоря «меньше буковок». С этим пунктом mq4 справляется лучше всех.
              2) каждое выражение языка должно быть прозрачным. Кодер сходу(или из доки) может понять, что будет на выходе из конструкции при ЛЮБОМ входе. Вот тут начинаются грабли.
            • -- Leonid --
              01 июня 2019, 11:10
              TT, посмотрите статью: https://www.mql5.com/ru/articles/81 
              Создайте функции-обвертки или методы класса.
              Также #define в помощь:


              У меня другая проблема MQL5->MQL4, только освоился на MQL5, теперь пытаюсь понять 4-й.
                • -- Leonid --
                  04 июня 2019, 15:27
                  TT, я такой же чайник в программировании, но освоился с MQL5 и простенькие задачки могу решать.  В мануалах — тяжело и не наглядно, поэтому искал нормальные статьи, на них и научился.  define и обвертки сам стал писать, когда замучался искать смысл в своем же коде.
                  Да, разрабы еще те сволочи — не смогли разбить функции по сложности: упрощенные для новичков, а многостраничная херь для профи, плюс промежуточные уровни, но… есть то что есть.
                  До этого вникал в Quik+Lua - там еще веселее… разрабы умеют все довести до абсурда.
                  С другой стороны борясь с трудностями становишься сильнее, если правильно выбран подход. Так и с кодом — нужно научиться его структурировать и упорядочивать
                • -- Leonid --
                  05 июня 2019, 08:59
                  TT, в MQL5 есть для упрощения библиотечные классы Trade, например:
                     trader.Buy(1.0);                    // купить по рынку
                     Print( position.Volume() );      // позиция
                     Print( position.PriceOpen() );   // цена по позиции

                  Собственно стартовать получилось после просмотра видео:
                    MQL5 — работа с ордерами
                    Как написать советник для Metatrader 5
  • Spekyl
    17 марта 2013, 21:21
    а там можно длл-ки внешние подключать?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн