Новая платформа позволяет тестировать советников на реальных тиках, при этом максимально точно воспроизводится всё торговое окружение, синхронизируются тики по всем используемым инструментам с точностью до миллисекунд. Тестер стратегий является мультипоточным и позволяет использовать все ядра локального компьютера, агентов из локальной сети и сеть MQL5 Cloud Network. Это позволяет в десятки и сотни раз ускорить разработку и отладку торговых стратегий. Для функций FileWrite(), FileWriteArray(), FileWriteDouble(), FileWriteInteger() и FileWriteString() изменен тип возвращаемого значения с int на uint. Данные функции возвращают количество записанных байт или 0 в случае ошибки (в старой версии MQL4 в случае ошибки возвращалось отрицательное число).
Программирование на алгоритмическом языке
Вместе с тем,каждый водитель, прежде чем выехать на дорогу соживлённым движением, проходит обучение. Приблизительно то женеобходимо сделать и начинающему программисту – освоить некоторыепростые принципы построения программ,и – можно начинать потихоньку “ездить”. Некоторые трейдеры, возможно, мысленно готовятся к затруднениям приобучении программированию, имея в виду, что они лишь с большим трудоммогут представить сложные процессы, происходящие в недрах ихкомпьютеров.
После того как программист овладеет навыками программирования торговых операций, он может приступать к созданию простых программ. В разделе рассматриваются общие принципы построения простого эксперта и простого пользовательского индикатора, а также порядок совместного использования эксперта и различных индикаторов. В частности, описывается порядок передачи данных из пользовательского индикатора в эксперт.
К счастью, разработчики языка MQL4 постарались сделать егодоступным широкому кругу таймс форекс пользователей. Новый тестер также является мультирыночным – он позволяет тестировать стратегии, которые торгуют одновременно на нескольких финансовых инструментах. При запуске мультивалютного тестирования с торгового сервера автоматически загружается вся необходимая история по всем используемым символам, корректно обрабатываются события таймера и вызовы функции Sleep(). Таким образом, вы пишете один и тот же код как для тестирования, так и для реальной торговли – теперь нет никаких ограничений со стороны тестера и вам не придется тестировать каждый инструмент мультивалютного советника по отдельности.
В настоящее время персональный компьютер стал незаменимым помощником в жизни каждого человека. Благодаря развитию Интернета и увеличению мощности современных компьютеров открылись новые возможности во многих областях деятельности. Ещё десять лет назад торговля на финансовых рынках была доступна только банкам и узкому кругу специалистов. Сегодня любой желающий может приобщиться к миру профессиональных трейдеров и самостоятельно осуществлять торговлю. Для совместимости осталось копирование в массив double[][6], но это копирование не виртуальное, а реальное. Для этого мы разработали единый компилятор, который автоматически поддерживает оба языка MQL4 и MQL5.
Скоростной, гибкий и мощный язык программирования торговых роботов
- Составление прикладных программ для торгового терминала MetaTrader 4 требует знания языка MQL4.
- При компиляции библиотек в режиме strict для каждой экспортируемой функции необходимо добавлять модификатор export.
- Синтаксис языка MQL4 подобен синтаксису С++, и это позволяет легко переносить на него программы из современных языков программирования.
Изменилась также работа с функциями, областью видимости переменных и освобождением памяти в локальных массивах. Так как изменений оказалось достаточно много, то для обеспечения максимальной совместимости со старым подходом к написанию программ MQL4 было решено ввести новое свойство #property strict. При создании новой программы MQL4 с помощью Мастера MQL4 это свойство всегда добавляется в шаблон.
В файловых операциях количество одновременно открытых файлов теперь может достигать 64, в старом MQL4 было не более 32. При этом раньше файлы всегда открывались в режиме FILE_SHARE_READ, FILE_SHARE_WRITE, теперь желательный режим открытия нужно указывать явно. Для совместимости со старыми MQL4 программами сохранился и старый формат вызова, но теперь производится реальное копирование данных в массив типа double. Всего в языке MQL4 насчитывается более 220 стандартных функций, кроме функций технических индикаторов.
Составление прикладных программ для торгового терминала MetaTrader 4 требует знания языка MQL4. Настоящее учебное пособие представляет собой вводный курс, освоив который, можно самостоятельно создавать эксперты, скрипты и индикаторы, воплощая в них свои идеи – алгоритмы прибыльной торговли. Учебник рассчитан на широкий круг читателей, не имеющих навыков программирования и желающих научиться самостоятельно создавать прикладные программы для автоматического трейдинга с использованием клиентского терминала MetaTrader 4. Методически учебник составлен так, чтобы сделать обучение языку MQL4 максимально удобным и последовательным. Имена переменных теперь не могут содержать спецсимволы и точки, а также именами не могут быть новые ключевые слова языка MQL4.
Практическое программирование на языке MQL4
MetaQuotes Language 4 (MQL4) – встроенный язык программирования торговых стратегий, разработанный компанией MetaQuotes Software Corp. на основе своего многолетнего опыта в создании торгово-информационных платформ. Этот язык позволяет писать собственные программы-эксперты (Expert Advisors), автоматизирующие управление торговыми процессами и идеально подходящие для реализации собственных торговых стратегий. Кроме того, на MQL4 можно создавать собственные технические индикаторы (Custom Indicators), скрипты (Scripts) и библиотеки функций (Libraries). При программировании торговых операций необходимо учитывать требования и ограничения, связанные с характеристиками ордеров и правилами, принятыми в дилинговом центре, а также особенности технологии исполнения торговых приказов. В разделе подробно рассматривается порядок проведения торговых операций и приводится достаточно примеров, поясняющих назначение всех торговых функций, с помощью которых формируются различные торговые приказы.
Предопределенная переменная Volume теперь имеет тип long, таймсерии для доступа к объемам также представлены массивами типа long. В старых программах MQL4 рекомендуется делать явное приведение данных этого типа к целевому типу, чтобы избежать ошибки переполнения типа. Начиная с билда 600 язык программирования MQL4 полностью переработан и достиг уровня MQL5 – теперь писать торговых роботов на MQL4/MQL5 можно в единой среде разработке MetaEditor и используя единые стиль, библиотеки и инструменты отладки.
Поэтому мы решили перенести в него максимум функций и возможностей языка MQL5, полностью сохраняя функционал MQL4. То есть все мощные функции MQL5, включая ООП и компилятор в нативный код, станут доступны в MQL4. MetaQuotes Language 4 (MQL4) — встроенный язык программирования торговых стратегий, позволяющий создавать торговых роботов, технические индикаторы, скрипты и библиотеки функций для торговой платформы MetaTrader 4. Все эти инструменты серьезно расширяют возможности трейдеров при торговле на Форексе. Он позволяет не только писать разнообразные экспертные системы, предназначенные для работы в режиме реального времени, но и создавать собственные графические инструменты, помогающие принимать торговые решения.
Старые программы на MQL4 можно будет прогнать через новый компилятор и легко исправить все такие ошибки по сообщениям компилятора. Добавлены новые типы данных char, short, long, uchar, ushort, uint, ulong и double. Однако из-за сложности внутреннего представления данных с плавающей точкой они обрабатывается дольше, чем целочисленные. Кроме того, в язык MQL4 добавлены новые графические объекты и новые функции по работе с графиками.
Основы языка
В старом MQL4 предопределенные функции могли иметь любые параметры и любой тип возврата, вызов этих функций осуществлялся не по сигнатуре, а по имени. В новом MQL4 все предопределенные функции должны точно соответствовать своим сигнатурам, то есть иметь четко определенный состав параметров и тип возврата. MQL4 основан на концепции широко распространенного языка программирования С++, в нем присутствуют перечисления, структуры, классы и обработка событий. Благодаря расширению числа встроенных основных типов, взаимодействие исполняемых программ на MQL4 с другими приложениями посредством dll максимально облегчено. Синтаксис языка MQL4 подобен синтаксису С++, и это позволяет легко переносить на него программы из современных языков программирования.
С самого начала следует заметить, что программирование на языке MQL4вполне по силам обычному человеку, хотя и требует внимания иопределённых знаний.