24.11.2024

Միջին դպրոց

«Մխիթար Սեբաստացի» կրթահամալիր

Обновленный MQL4 Основы языка Справочник MQL4

программирование mql4 для чайников

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

В старом MQL4 предопределенные функции могли иметь любые параметры и любой тип возврата, вызов этих функций осуществлялся не по сигнатуре, а по имени. В новом MQL4 все предопределенные функции должны точно соответствовать своим сигнатурам, то есть иметь четко определенный состав параметров и тип возврата. MQL4 основан на концепции широко распространенного языка программирования С++, в нем присутствуют перечисления, структуры, классы и обработка событий. Благодаря расширению числа встроенных основных типов, взаимодействие исполняемых программ на MQL4 с другими приложениями посредством dll максимально облегчено. Синтаксис языка MQL4 подобен синтаксису С++, и это позволяет легко переносить на него программы из современных языков программирования.

Изменения в языке MQL4

Старые EX4 программы и DLL, основанные на старом формате RateInfo, работать в новом терминале не будут. Новый формат функции также производит виртуальное копирование, то есть реального копирования не происходит, а при обращении к скопированным значениям  происходит обращения прямо к ценовым данным. Краткий справочник содержит разбитые на категории функции, операции, зарезервированные слова, другие конструкции языка и позволяет узнать описание каждого используемого элемента, входящего в язык.

Практическое программирование на языке MQL4

программирование mql4 для чайников

Представлено несколько готовых к использованию скриптов, ориентированных на узкую область применения. MetaQuotes Language 4 основан на концепции широко распространенного языка программирования С++. MQL4 также является языком объектно-ориентированного программирования высокого уровня. Благодаря своей скорости и гибкости этот язык позволяет создавать очень сложные торговые программы с большим объемом вычислений и детально контролировать практически все параметры экспертов и индикаторов. Предопределенные функции init(), deinit() и start() остались для совместимости, но вместо них теперь можно использовать OnInit(), OnDeinit(), OnStart(), OnCalculate(), OnTick(). Кроме того, добавились новые предопределенные функции-обработчики OnTimer(), OnChartEvent(), OnTester().

Основы языка MQL4

Торговый терминал MetaTrader 4 по достоинству оценили сотни тысяч трейдеров во всем мире. Использование встроенного языка программирования MQL4 выводит трейдеров на качественно новый уровень торговли — автотрейдинг. Теперь трейдер может реализовать свои идеи в виде прикладной программы — самостоятельно написать пользовательский индикатор, скрипт для выполнения разовых операций или создать советник — автоматическую торговую систему (торговый робот). ООП позволяет писать программы с использованием классов,  что облегчает отладку и разработку больших программ, позволяет многократно использовать наработки благодаря наследованию. Но это не означает, что теперь нельзя писать на MQL4 в процедурном стиле, как это было раньше.

В разделе “Построение обычных программ” представлен пример программы, который может быть принят за основу при проектировании собственного обычного эксперта для использования в реальной торговле. Это означает, что при изменении значений в таймсерии (добавлении новых баров, перестройке, обновлении цены Close последнего бара), необходимо заново скопировать нужные данные в массив dest_array[][]. При этом массив-приемник будет автоматически распределен под требуемое количество копируемых баров, даже если он был объявлен статически. В старых программах MQL4 для надежности вы можете расставить круглые скобки для явного указания приоритета, оптион фикс обзор если не уверены.

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

Скоростной, гибкий и мощный язык программирования торговых роботов

  1. MQL4 пользуется заслуженной популярностью среди разработчиков автоматических торговых систем благодаря простоте изучения и огромному количеству кода, наработанного за многие годы использования терминала MetaTrader 4.
  2. Несовершенство кода простых программ затрудняет возможность дальнейшего их наращивания с целью получения большего сервиса.
  3. Вместе с тем,каждый водитель, прежде чем выехать на дорогу соживлённым движением, проходит обучение.
  4. При создании новой программы MQL4 с помощью Мастера MQL4 это свойство всегда добавляется в шаблон.
  5. Данные функции возвращают количество записанных байт или 0 в случае ошибки (в старой версии MQL4 в случае ошибки возвращалось отрицательное число).

В настоящее время персональный компьютер стал незаменимым помощником в жизни каждого человека. Благодаря развитию Интернета и увеличению мощности современных компьютеров открылись новые возможности во многих областях деятельности. Ещё десять лет назад торговля на финансовых рынках была доступна только банкам и узкому кругу специалистов. Сегодня любой желающий может приобщиться к миру профессиональных трейдеров и самостоятельно осуществлять торговлю. Для совместимости осталось копирование в массив double[][6], но это копирование не виртуальное, а реальное. Для этого мы разработали единый компилятор, который автоматически поддерживает оба языка MQL4 и MQL5.

программирование mql4 для чайников

Предопределенная переменная Volume теперь имеет тип long, таймсерии для доступа к объемам также представлены массивами типа long. В старых программах MQL4 рекомендуется делать явное приведение данных этого типа к целевому типу, чтобы избежать ошибки переполнения типа. Начиная с билда 600 язык программирования MQL4 полностью переработан и достиг уровня MQL5 — теперь писать торговых роботов на MQL4/MQL5 можно в единой среде разработке MetaEditor и используя единые стиль, библиотеки и инструменты отладки.

Новая платформа позволяет тестировать советников на реальных тиках, при этом максимально точно воспроизводится всё торговое окружение, синхронизируются тики по всем используемым инструментам с точностью до миллисекунд. Тестер стратегий является мультипоточным и позволяет использовать все ядра локального компьютера, агентов из локальной сети и сеть MQL5 Cloud Network. Это позволяет в десятки и сотни раз ускорить разработку и отладку торговых стратегий. Для функций FileWrite(), FileWriteArray(), FileWriteDouble(), FileWriteInteger() и FileWriteString() изменен тип возвращаемого значения с int на uint. Данные функции возвращают количество записанных байт или 0 в случае ошибки (в старой версии MQL4 в случае ошибки возвращалось отрицательное число).

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

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