Советник FOREX: от идеи до результата

Редактор MetaEditor: первые шаги

Сегодня совершим первые шаги в написании кода.

Создание шаблона советника

Несколько кликов мышью – и шаблонный код готов.

Кстати сказать, подобные действия можно воспроизвести с помощью клавиатуры. Опытные программисты используют этот способ: быстро и профессионально.

Пошаговая инструкция

Данный пример действителен для Windows.

Меню: создание файла

Создаем новый файл, альтернативная комбинация клавиш Ctrl+N.

«Мастер MQL4: файл»
  1. В появившемся окне «Мастере MQL: Файл» клавишами Стрелки (Вниз/Вверх) выбираем необходимый пункт «Советник (шаблон)», нажимаем клавишу Enter.
  1. В следующем окне появится курсор в поле «Имя», набираем в нём соответствующие клавиши для названия советника, нажимаем клавишу Enter.
  1. Далее также нажимаем клавишу Enter.
  1. Готово. Нажимаем клавишу Enter.

Код шаблона: разбор

Изначально содержание шаблона состоит из 37 строк кода:

  • комментарии – строки 1-5, 10-12, 20-22, 25, 28-30, 33, 28-30, 33 и 36
  • свойства программы – строки 69
  • функции, встроенные в MQL4 – строки 1319, 2327, 3135

Комментарии

Комментарии серого цвета – не являются частью программы, их влияние отсутствует на столько, что их можно даже удалить.

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

Свойства программ (#property)

У каждой MQL4-программы можно указать дополнительные специфические параметры #property, которые помогают клиентскому терминалу правильно обслуживать программы без необходимости их явного запуска.

Если в качестве первого символа в строке программы используется символ #, то эта строка является директивой препроцессора.

В вышеприведенном коде указаны следующие свойства программы:

  • название компании-разработчика (copyright)
  • ссылка на сайт компании-разработчика (link)
  • версия программы (version)
  • режим проверки ошибок, при компиляции (strict)

См. полный список свойств программы препроцессора.

Свойство программы (#property description)

Давайте расширим свойства кратким текстовым описанием MQL4-программы (description) о том, что наш «Советник отслеживает цену закрытия дня».

Проверочное свойство (strict) выдало результат компиляции: «0 шибок, 0 предупреждений, 282 микросекунд прошло», см. в закладке «Инструменты».

Свойство программы (#property description): применение

В закладке «О программе», при инсталляции эксперта в Metatrader 4, мы увидим внесённые изменения.

Макроподстановка (#define)

Директива #define может быть использована для присвоения мнемонических имён выражениям или константам.

Какие задачи это поможет решить?

Допустим, кроме ордеров, с которыми будет работать советник, у нас на торговом счёте могут быть другие сделки. Необходимо, чтобы советник не трогал их. Как это сделать?

Например, можно мнемоническому идентификатору присвоить «магическое» число, по которому советник выберет «свой» ордер для дальнейшей работы.

Макроподстановка (#define): применение

В строке 11 – запись директивы #define присвоить идентификатору MAGIC_EA «магическое» (целое) число: 20201212.

Функции

В текущем шаблоне код содержит 3 функции – обработчики событий:

  • Функция OnInit() используется для инициализации.
  • Функция OnDeinit() вызывается при деинициализации.
  • Функция OnTick() обрабатывает событие NewTick, которое генерируется при поступлении новых котировок.

Наверняка вы заметили, что при создании шаблона «Мастере MQL: Файл» предлагает включить встроенные функции.

См. также список функций, используемых MQL4, расположенные в алфавитном порядке.

Наш экспресс-курс, или путеводитель по документации MQL4, покажет практическое применение готовых функций и написание новых пользовательских.

Что дальше?

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

{Продолжение следует}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *