Введение в MQL4 Учебник по MQL4

В старых программах MQL4 для надежности вы можете расставить круглые скобки для явного указания приоритета, если не уверены. В новом MQL4 все предопределенные функции должны точно соответствовать своим сигнатурам, то есть иметь четко определенный состав параметров и тип возврата. Предопределенные функции init(), deinit() и start() остались для совместимости, но вместо них теперь можно использовать OnInit(), OnDeinit(), OnStart(), OnCalculate(), OnTick(). Однако из-за сложности внутреннего представления данных с плавающей точкой они обрабатывается дольше, чем целочисленные. Для обработки данных двойной точности используется специальный сопроцессор.

Для скриптов в окне входных параметров показываются имена extern переменных При создании новой программы MQL4 с помощью Мастера MQL4 это свойство всегда добавляется в шаблон. Данные функции возвращают количество записанных байт или 0 в случае ошибки (в старой версии MQL4 в случае ошибки возвращалось отрицательное число). Старые EX4 программы и DLL, основанные на старом формате RateInfo, работать в новом терминале не будут. Изменилось поведение функции ArrayCopyRates() — в старой версии MQL4 эта функция производила копирование ценовых серий в массив double. Приоритет операций теперь приведен к стандартам языка Cи.

  • Всего в языке MQL4 насчитывается более 220 стандартных функций, кроме функций технических индикаторов.
  • Все операции по копированию файлов при обновлении записываются в Журнал терминала с указанием подробных путей.
  • При этом массив-приемник будет автоматически распределен под требуемое количество копируемых баров, даже если он был объявлен статически.
  • Для скриптов в окне входных параметров показываются имена extern переменных
  • MetaEditor — встроенный в MetaTrader 4 многофункциональный редактор для создания торговых программ, от самых простых до самых сложных.
  • Методически учебник составлен так, чтобы сделать обучение языку MQL4 максимально удобным и последовательным.

Программы MQL4

Старые программы на MQL4 можно будет прогнать через новый компилятор и легко исправить все такие ошибки по сообщениям компилятора. В старом MQL4 предопределенные функции могли иметь любые параметры и любой тип возврата, вызов этих функций осуществлялся не по сигнатуре, а по имени. Кроме того, добавились новые предопределенные функции-обработчики OnTimer(), OnChartEvent(), OnTester(). В старых программах MQL4 рекомендуется делать явное приведение данных этого типа к целевому типу, чтобы избежать ошибки переполнения типа. Это необходимо учитывать, если программа использует DLL и передает в них строковые переменные.

  • В разделе рассматриваются общие принципы построения простого эксперта и простого пользовательского индикатора, а также порядок совместного использования эксперта и различных индикаторов.
  • Приоритет операций теперь приведен к стандартам языка Cи.
  • Старые EX4 программы и DLL, основанные на старом формате RateInfo, работать в новом терминале не будут.
  • Основным достоинством прикладных программ является возможность совершать торговые операции в соответствии с алгоритмом, заданным трейдером по своему усмотрению.
  • Локальные массивы при выходе из функции не освобождаются
  • Всего в языке MQL4 насчитывается более 220 стандартных функций, не считая функцийтехнических индикаторов.

Все, что нужно для разработки торговых приложений в MetaTrader 4

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

Имена переменных не могут иметь спецсимволы и точки. Имена переменных практически любые (кроме зарезервированных слов), включая спецсимволы и точки Результат возврата из функций init() и OnInit() никак не анализируется исполняющей подсистемой

Методически учебник составлен так, чтобы сделать обучение языку MQL4 максимально удобным и последовательным. Основным достоинством прикладных программ является возможность совершать торговые операции в соответствии с алгоритмом, заданным трейдером по своему усмотрению. Благодаря развитию Интернета и увеличению мощности utrader com отзывы о компании современных компьютеров открылись новые возможности во многих областях деятельности. На нашем сайте вы сможете пообщаться с авторами статей и программ или задать коллегам вопрос в форуме, на который вам обязательно ответят. Начните создавать своего персонального робота или технический индикатор прямо сейчас! Он относительно прост и легко поддается изучению даже программистам начального уровня.

Это позволит легко переносить коды из других C++ подобных языков. Теперь в MetaTrader 4 можно создавать полноценные приложения с использованием ресурсов. Защита MQL4-программ поднимается на один Генезис Приват Фонд уровень с MQL5, в новых EX4/EX5-файлах очень серьезная и полностью переработанная защита по сравнению со старым EX4. То есть все мощные функции MQL5, включая ООП и компилятор в нативный код, станут доступны в MQL4. Разработчики торговых роботов оценят возможности нового тестера, которые описаны в статьях и документации.

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

Что нового в MQL4

Режим совместного использования нужно указывать явно с помощью FILE_SHARE_READ и/или FILE_SHARE_WRITE Для этого в конце функции компилятором автоматически проставляется return(0) Для совместимости осталось копирование в массив double, но это копирование росбанк ослабление рубля из за событий вокруг украины profinance ru не виртуальное, а реальное. ArrayCopyRates() производит виртуальное копирование в массив double

Результат возврата из функции init() никак не анализируется исполняющей подсистемой Так как изменений оказалось достаточно много, то для обеспечения максимальной совместимости со старым подходом к написанию программ MQL4 было решено ввести новое свойство #property strict. Изменилась также работа с функциями, областью видимости переменных и освобождением памяти в локальных массивах. Для функций FileWrite(), FileWriteArray(), FileWriteDouble(), FileWriteInteger() и FileWriteString() изменен тип возвращаемого значения с int на uint.

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

Сервер позволяет лишь обрабатывать приказы, поступающие со стороны клиентского терминала. 1 видно, что прикладная программа имеет те же средства доступа к информационной среде клиентского терминала, что и встроенные средства для ручной торговли (синие стрелки), а также может формировать управляющие воздействия (красные стрелки),сообщаемые в клиентский терминал. Для получения подробной информации о работе клиентского терминала необходимо обратитьсяк “Руководству пользователя” (каталог_терминала\Terminal_russian.chm). MQL4 также является языком объектно-ориентированного программирования высокого уровня. Все приложения для MetaTrader 4 пишутся на специализированном языке программирования MQL4. В данном разделе рассматриваются наиболее употребляемые стандартные функции, приводятся примеры их использования.

Язык MetaQuotes Language 4

Для того чтобы эксперт прекратил свою работу, его необходимо удалить с графика. Компиляция должна пройти без ошибок (допускаются предупреждения, которые необходимо проанализировать). Библиотеки EX4, скомпилированные новым компилятором,  могут вызываться только из программ EX4, также скомпилированных в новой версии. Все операции по копированию файлов при обновлении записываются в Журнал терминала с указанием подробных путей. Дополнительно созданные пользователем внутри стандартных папок дочерние папки с файлами никак не обрабатываются, их необходимо самостоятельно скопировать в новое место, если они необходимы. При обновлении терминала MetaTrader 4 с 509 билда на новую версию все файлы MQ4, MQH и EX4 из стандартных корневых папок старого местоположения автоматически копируются и раскладываются в соответствующие папки.

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

Скрипты выполняются однократно и удаляются автоматически по завершению своей работы, либо по закрытию или изменению состояния текущего графика, либо по завершению работы клиентского терминала. Mql4-программы могут работать только при включенном клиентском терминале. Важно запомнить, что сейчас корневой папкой для редактора MetaEditor является папка \MQL4\, все программы должны находиться в правильных дочерних подпапках. Для скриптов в режиме show_inputs в окне входных параметров показываются строчные комментарии вместо имен extern- и input-переменных Для скриптов в режиме show_inputs в окне входных параметров показываются имена extern и input-переменных

Синтаксис языка MQL4 подобен синтаксису С++, и это позволяет легко переносить на него программы из современных языков программирования. Учебник рассчитан на широкий круг читателей, не имеющих навыков программирования и желающих научиться самостоятельно создавать прикладные программы для автоматического трейдинга с использованием клиентского терминала MetaTrader 4. MetaQuotes Language 4 (MQL4) – встроенный язык программирования индикаторов и торговых стратегий для бесплатного информационно-торгового терминала MetaTrader 4. Благодаря своей скорости и гибкости этот язык позволяет создавать очень сложные торговые программы с большим объемом вычислений и детально контролировать практически все параметры экспертов и индикаторов. Этот язык позволяет писать собственные программы-эксперты (Expert Advisors), автоматизирующие управление торговыми процессами и идеально подходящие для реализации собственных торговых стратегий. Как правило, после самостоятельного программирования нескольких простых прикладных программ на MQL4, программист переходит к более сложному проекту – созданию удобной программы для практического использования.

В разделе “Построение обычных программ” представлен пример программы, который может быть принят за основу при проектировании собственного обычного эксперта для использования в реальной торговле. Пользовательские индикаторы и советники работают до тех пор, пока их явно не удалят с графика; информация о прикрепленных советниках и пользовательских индикаторах сохраняется между запусками клиентского терминала. Эксперты, пользовательские индикаторы и скрипты прикрепляются к одному из открытых графиков путем перетаскивания мышью из окна “Навигатор” клиентского терминала на соответствующий график (технология Drag’n’Drop). Для того чтобы mql4-программа могла работать, она должна быть скомпилирована (кнопка “Компилировать” или клавиша F7).

Имена переменных теперь не могут содержать спецсимволы и точки, а также именами не могут быть новые ключевые слова языка MQL4. Приступая к изучению программирования на языке MQL4, необходимо обозначить общиеграницы наших интересов. MQL4 основан на концепции широко распространенного языка программирования С++, в нем присутствуют перечисления, структуры, классы и обработка событий. Составление прикладных программ для торгового терминала MetaTrader 4 требует знания языка MQL4. Использование встроенного языка программирования MQL4 выводит трейдеров на качественно новый уровень торговли – автотрейдинг.