Читаем MQL4-программирование: торговый робот за один вечер полностью

Два слеша (косые черты) - //, то что после них в коде советника означают комментарии. При компиляции вашего советника (превращения вашего кода в машинный код, понятный компьютеру), комментарии игнорируются. Комментарии желательно писать для себя, чтобы не забыть что куда и зачем сделано.

Блоки комментариев делаются так:

/* это

блок

комментария */

Все, что между символами /* и */ также компилятором игнорируется.

Циклы

В mql4 существуют циклы for и while. Чаще используется for, но, нередко и while.

for (int i=0; i <100; i++)

{

      что-то считаем 100 раз.

}

inti = 0 – объявляем переменную, которая будет работать в пределах данного цикла; i < 100 – цикл прокрутится 100 раз, от 0 до 99; i++ (инкремент) означает, что при каждой прокрутке (итерации) цикла, переменная i будет увеличена на единицу.

bool x = false; //присваиваем переменной х типа bool значение false

while(x==false) //пока x равен false. Два символа равно “==” означают сравнение

{

/*

здесь будут выполняться какие-то условия.

Как только x станет true, цикл прекратится.

*/

//например

x = true;//после первого же прохода делаем x равным true

//и цикл прекращается

}

В процессе написания советника мы будем использовать оба этих цикла, и вы без труда с ними разберетесь.

ТЕХНИЧЕСКОЕ ЗАДАНИЕ

Опишем, что и когда должен делать наш будущий советник:

Торговые сигналы будут

формировать два

стандартных индикатора

Envelopes

и

ZigZag

. Эти индикаторы встроены в

MetaTrader

4 и дополнительно скачивать их не нужно. Я выбрал два именно этих индикатора, т. к. их значения вызываются разными способами. Для

Envelopes

– с помощью стандартной функции iEnvelopes, а

ZigZag

вызывается функцией

iCustom

– ее вам необходимо изучить (хотя, это громко сказано), чтобы в дальнейшем вы умели вызывать данные почти

любых не стандартных

индикаторов для

MetaTrader

4.

Составим краткое техническое задание:

1) Если верхний пик индикатора

ZigZag

(далее -

ZZ

) сформировался выше верхней линии индикатора

Envelopes

(с параметром

Shift

= 10, остальные – стандартные), выставляем ордер на продажу фиксированным лотом, определенным в настройках советника.

2) Если нижний

пик

ZZ

сформировался ниже нижней

Envelopes

– сигнал на покупку (т. е. наоборот от

buy

–сигнала).

3) Путем модификации (почему модификации, а не сразу при установке ордера – позже, когда будем писать этот код) советник должен устанавливать у ордеров Стоп-Лосс и Тейк-Профит.

4) Добавить возможность закрывать ордера при касании ценой противоположной линии Envelopes. Эту функцию можно выключать в настройках.

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

А теперь, переведите свой терминал на английский язык! Если уж вы решили заняться программированием, привыкайте к английскому, без этого никуда! Сам редактор кода MetaEditor лучше оставить на русском, т. к. при переводе его на английский язык, Справка (F1) получается тоже на английском языке. Не всем это удобно.

ПОЛУЧАЕМ ДАННЫЕ ИНДИКАТОРОВ

Открываем свой MetaTrader4 и нажимаем кнопку F4 на клавиатуре, или левой кнопкой мыши здесь:

В открывшемся редакторе кода нажимаем

New

(Создать), затем

Expert

Advisor

(

template

), потом Далее, в поле

Name

после

Experts

\ дописываем

MyFirstEA

– это будет названием вашего первого советника. Получится Experts\MyFirstEA. Поля

Autor

,

link

нам в этом учебном советнике не важны. Нажимаем

кнопку

Далее

.

Появится

окошко

Event Handles of the Expert Advisor.

Здесь ничего отмечать не нужно и просто нажмем Далее. В появившемся окошке

Tester

event

handless

of

the

Expert

Advisor

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

На изображении в комментариях указано, какие блоки за что отвечают.

Чтобы узнать ценовые значения индикаторов нам нужно объявить глобальные переменные типа double для верхней и нижней линии индикатора Envelopes. Назовем их enveUP и enveDW. Эти названия можно придумывать самим. То же самое надо сделать и для получения ценового значения индикатора ZZ. Назовем эту переменную ZZ. Почему именно глобальные переменные? Для того, чтобы эти значения мы могли вызывать в любом месте программы (т. е. советника). Дело в том, что мы будем вызывать значения индикаторов не на каждом приходящем тике, а один раз на одной свече. Это существенно повысит производительность, т. к. терминалу не нужно будет выполнять одну и ту же операцию на каждом тике. Если мы обернем в фигурные скобки вызов наших индикаторов с записью их значений НЕ в глобальные переменные, то эти значения будут видны только в рамках этих же фигурных скобок. И за пределами их мы получим ошибку. Более подробно постараюсь описать на рисунке ниже.

Перепишите этот код в свой редактор:

//+–+

//| MyFirstEA.mq4 |

//| Copyright 2017, |

//+–+

#property copyright "Copyright 2017"

Перейти на страницу:

Похожие книги

1С: Управление небольшой фирмой 8.2 с нуля. 100 уроков для начинающих
1С: Управление небольшой фирмой 8.2 с нуля. 100 уроков для начинающих

Книга предоставляет полное описание приемов и методов работы с программой "1С:Управление небольшой фирмой 8.2". Показано, как автоматизировать управленческий учет всех основных операций, а также автоматизировать процессы организационного характера (маркетинг, построение кадровой политики и др.). Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, формировать разнообразные отчеты, выводить данные на печать. Материал подан в виде тематических уроков, в которых рассмотрены все основные аспекты деятельности современного предприятия. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов. Все приведенные в книге примеры и рекомендации основаны на реальных фактах и имеют практическое подтверждение.

Алексей Анатольевич Гладкий

Экономика / Программное обеспечение / Прочая компьютерная литература / Прочая справочная литература / Книги по IT / Словари и Энциклопедии