Русский

Учебник по MQL4  Простые программы на MQL4

Простые программы на MQL4


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

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

  • Использование технических индикаторов.
    В терминале MetaTrader 4 есть несколько десятков встроенных индикаторов, которые называются техническими. Название технический происходит из разделения двух видов анализа рынка: фундаментальный анализ (ФА) - анализ макроэкономических показателей в контексте торгуемого инструмента, рынка, страны и так далее; и технический анализ (ТА) - анализ непосредственно цены с помощью ценовых графиков и разнообразных преобразований цены. Язык MQL4 позволяет получать значения технических индикаторов через соответствующие функции. При вызове функции технического индикатора необходимо указать требуемые параметры.
  • Простой эксперт.
    При написании эксперта (торгового робота) необходимо провести предварительные работы: определить торговую стратегию, задать критерии, и на основе этого построить структуру. Торговые критерии обычно задаются в одной или нескольких функциях, которые являются блоками выдачи торговых сигналов. Размер открываемой торговой позиции зачастую является отдельной задачей, и также может быть оформлен в отдельной функции. Приказы на открытие, закрытие и модификацию ордеров могут приводить к появлению ошибок, которые необходимо обрабатывать. Эти операции обычно также выносят в соответствующие пользовательские функции.
  • Программирование пользовательских индикаторов.
    Создание пользовательского индикатора не является сложным, если знать устройство последнего. Каждый пользовательский индикатор может содержать от 1 до 8 индикаторных буферов, с помощью которых терминал отображает информацию на графиках инструментов. Необходимые буферы объявляются в виде массивов типа double на глобальном уровне программы, и затем в функции init() происходит уточнение/установка параметра каждого буфера: стиль отображения, цвет и толщина линии, и так далее. Так как запуск функции start() происходит в индикаторе с приходом каждого тика, то организация экономных вычислений выходит на первый план. Для создания оптимального алгоритма индикатора служит функция IndicatorCounted(), которая содержит данные о количестве баров, которые не изменились с последнего вызова функции start().
  • Пользовательский индикатор скорости изменения цены.
    Создание пользовательского индикатора лучше всего освоить на примере с подробными объяснениями. Детальные комментарии в тексте индикатора будут полезны вам самим и в дальнейшем, когда вы захотите изменить ранее написанное. Хорошие программы - это хорошо документированные программы.
  • Совместное использование программ.
    Чтобы использовать значение пользовательского индикатора в других индикаторах, скриптах или экспертах, достаточно включить в код программы вызов пользовательского индикатора с помощью функции iCustom(). При этом не производится проверка физического наличия вызываемого пользовательского индикатора в соответствующем каталоге при компиляции. Поэтому параметры вызова пользовательского индикатора должны быть заданы корректно, в противном случае вычисленные значения могут отличаться от ожидаемых. Возможность вызова пользовательского индикатора позволяет существенно разгрузить код эксперта.

Советники в MQL5

Новая платформа позволяет тестировать советников на реальных тиках, при этом максимально точно воспроизводится всё торговое окружение, синхронизируются тики по всем используемым инструментам с точностью до миллисекунд. Тестер стратегий является мультипоточным и позволяет использовать все ядра локального компьютера, агентов из локальной сети и сеть MQL5 Cloud Network. Это позволяет в десятки и сотни раз ускорить разработку и отладку торговых стратегий.

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