Примеры реализации Программа на MQL4 Учебник по MQL4

Как и все включаемые файлы, он находится в папке \experts\include. Содержимое поля «Автор» будет отображаться рядом с именем советника в тестере стратегий и в виде всплывающей подсказки при наведении указателя мыши на имя советника программирование mql4 в окне навигатора. Поле «Ссылка» — это URL-адрес вашего веб-сайта, но он не появится нигде за пределами файла исходного кода. Вы можете создавать индикаторы, скрипты, библиотеки и включать файлы с помощью мастера.

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

Панель инструментов в MetaEditor содержит стандартное дополнение к файлам и функциям редактирования. Кнопка «Скомпилировать» компилирует текущий файл в редакторе. Если есть какие-либо ошибки компиляции, они также будут показаны. Кнопка «Терминал» открывает торговый терминал для тестирования советников. Вкладка «Файлы» в окне «Навигатор» — это простой файловый браузер, который позволяет открывать и редактировать любые файлы MQL в папке \experts.

Обновление на новый MetaTrader 4 билд 600 и выше

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

MQL4: Пишем советник по торговле заданных паттернов

Функция будет выставлять рыночный ордер на покупку на текущий символ с указанным размером лота, стоп-лоссом и тейк-профитом. Изучение того, как создавать функции для общих торговых задач, важно для продуктивного программирования. Индикаторы, эксперты, библиотеки и скрипты имеют общее расширение .mq4. Единственный способ отличить их друг от друга — либо по месту сохранения, либо открыв файл и изучив его исходный код. Некоторые трейдеры, возможно, мысленно готовятся к затруднениям приобучении программированию, имея в виду, что они лишь с большим трудоммогут представить сложные процессы, происходящие в недрах ихкомпьютеров.

Область видимости

Сервер позволяет лишь обрабатывать приказы, поступающие со стороны клиентского терминала. Если клиентский терминал отключён от Интернета или запущенная в нём прикладная программа (эксперт или скрипт) по каким-то причинам не генерирует управляющие воздействия, то на сервере ничего происходить не будет. В этом примере мы присваиваем возвращаемое значение OpenBuyOrder() переменной GetTicket, в которой указан номер заявки только что размещенного нами ордера.

Благодаря развитию Интернета и увеличению мощности современных компьютеров открылись новые возможности во многих областях деятельности. Ещё десять лет назад торговля на финансовых рынках была доступна только банкам и узкому кругу специалистов. Сегодня любой желающий может приобщиться к миру профессиональных трейдеров и самостоятельно осуществлять торговлю.

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

  1. Если вы интересуетесь программированием на MQL4, вы, вероятнее всего, уже знакомы с клиентскимтерминалом.
  2. Объектно-ориентированное программирование позволяет легко создавать и использовать АТД.
  3. Выражение может занимать несколько строк, но в конце должна стоять точка с запятой.

Составление прикладных программ для торгового терминала MetaTrader 4 требует знания языка MQL4. Настоящее учебное пособие представляет собой вводный курс, освоив который, можно самостоятельно создавать эксперты, скрипты и индикаторы, воплощая в них свои идеи – алгоритмы прибыльной торговли. Методически учебник составлен так, чтобы сделать обучение языку MQL4 максимально удобным и последовательным. MetaQuotes Language 4 основан на концепции широко распространенного языка программирования С++. MQL4 также является языком объектно-ориентированного программирования высокого уровня. Благодаря своей скорости и гибкости этот язык позволяет создавать очень сложные торговые программы с большим объемом вычислений и детально контролировать практически все параметры экспертов и индикаторов.

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

MQL является языком относительно низкого уровня, поэтому программисту необходимо создавать собственные процедуры для обработки торговых функций. Например, написание кода чего-то такого простого, как трейлинг-стоп, может быть пугающим для начинающего MQL-программиста. Торговый терминал MetaTrader 4 по достоинству оценили сотни тысяч трейдеров во всем мире. Использование встроенного языка программирования MQL4 выводит трейдеров на качественно новый уровень торговли – автотрейдинг. Таким образом, такая простая в понимании игра требует создания нескольких моделей – модель фигуры, модель стакана, модель движения фигуры в стакане и так далее.

Все операции по копированию файлов при обновлении записываются в Журнал терминала с указанием подробных путей. При компиляции библиотек в режиме strict для каждой экспортируемой функции необходимо добавлять модификатор export. В файловых операциях количество одновременно открытых файлов теперь может достигать 64, в старом MQL4 было не более 32. При этом раньше файлы всегда открывались в режиме FILE_SHARE_READ, FILE_SHARE_WRITE, теперь желательный режим открытия нужно указывать явно. Кроме того, в язык MQL4 добавлены новые графические объекты и новые функции по работе с графиками.

То, что объект сам отвечает за свое поведение, значительно упрощает задачу программирования для пользователя этого объекта. Переменной Price будет присвоено последнееизвестное значение текущей цены Bid (например, на первом тике цена финансовогоинструмента окажется равной 1.2744). Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie. К сожалению, бесполезно.Нам нужно как-то добраться до реальных данных! Например, текущихцен, времени, количества свободных денег и так далее. Это всё очень хорошо, но вы при выполнении подобных скриптовможете только догадываться, правильно всё работает или нет,так как на экране ничего не происходит.

В этом примере мы можем использовать постоянный идентификатор MYCONSTANT вместо текстовой строки в нашем коде. Существуют и другие директивы #property, но почти все они связаны с индикаторами и скриптами. Единственная директива #property, которую вы должны включить в свой советник, это #property copyright, которая идентифицирует советника как ваше творение. Шаблон советника по умолчанию довольно минимален, но он содержит базовую структуру советника.

Попробуйтесамостоятельно написать несколько циклов, которые бы выводилизначения счётчика функцией MessageBox(). Попробуйте написать бесконечныйцикл и посмотрите, что произойдет, если его запустить. Эта серия статей рассчитана на трейдеров, которые ничего незнают о программировании, но хотят изучить язык MQL4 максимальнобыстро с минимальными усилиями и затратами времени. Если выбоитесь таких словосочетаний, как “объектная ориентация”или “трёхмерный массив”, эта статья – то что вам нужно.

Если вы знакомы с программированием на таких языках, как C ++, PHP или на одном из многих языков, синтаксис которых является производным от C, вам будет удобно программировать на MQL. Шаблоны используются для создания новых файлов с помощью MetaEditor. Скрипт — это упрощенный советник, который выполняет одну задачу, такую как установка отложенного ордера или закрытие всех ордеров на графике. Несовершенство кода простых программ затрудняет возможность дальнейшего их наращивания с целью получения большего сервиса.

На вкладке «Словарь» имеется встроенная ссылка на MQL, а на вкладке «Поиск» — функция поиска. Одна из самых полезных функций редактирования — Помощник. Просто введите первые несколько символов функции MQL, оператора или другого элемента языка, и появится раскрывающийся список. Нажмите Enter, чтобы принять выделенное предложение и автоматически завершить ввод части кода. Окно редактора позволяет открывать сразу несколько файлов. Вы можете свернуть, развернуть и перейти между несколькими открытыми окнами.

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

Для совместимости со старыми MQL4 программами сохранился и старый формат вызова, но теперь производится реальное копирование данных в массив типа double. Мы должны запрограммировать новую функцию, которая позволит нашему советнику одновременно открывать только одну сделку. MQL4 уже имеет свои предопределенные функции, например, OrderSend(). Но мы также можем написать свою собственную функцию, в которой мы можем вызвать другие пользовательские или предопределенные функции. Для ручного управления торговлей используется панель управления ордерами. С помощьюэтой панели трейдер может открывать, закрывать и модифицировать ордера.

Изменилась также работа с функциями, областью видимости переменных и освобождением памяти в локальных массивах. Так как изменений оказалось достаточно много, то для обеспечения максимальной совместимости со старым подходом к написанию программ MQL4 было решено ввести новое свойство #property strict. При создании новой программы MQL4 с помощью Мастера MQL4 это свойство всегда добавляется в шаблон.

Новый формат функции также производит виртуальное копирование, то есть реального копирования не происходит, а при обращении к скопированным значениям  происходит обращения прямо к ценовым данным. Для этого мы помещаем торговую логику и OpenOrder / ModifyOrder в пользовательскую функцию и вызываем ее в области OnTick(). Если свеча слишком длинная, советник открывает вторую сделку на покупку непосредственно после того, как первая сделка на покупку закрывается с помощью StopLoss или TakeProfit. //Ордер на покупку — это подсказка для нас, что мы создали здесь функцию открытия ордера на покупку.

Leave a Reply

Your email address will not be published. Required fields are marked *