ВВЕДЕНИЕ
Рынок FOREX, как и биржа ценных бумаг привлекает все новых и новых людей. Это и понятно – делать деньги из воздуха хочется всем. Но, не все так просто.
Данные о том, что именно зарабатывающих трейдеров не более 5% встречаются повсеместно. Деньги остальных 95% делятся между первыми 5% и брокерами/диллинговыми центрами.
Чтобы попасть в число успешных трейдеров необходимо иметь четкую стратегию работы и железные нервы. В принципе, прибыльных торговых стратегий и систем существует не мало. Основная проблема работы заключается в психологии трейдера. Как правило, почти все трейдеры стартуют стабильно успешно. Немногим далее – постепенный или внезапный крах.
Дело в том, что, начиная торговать, трейдер выполняет условия своей торговой стратегии. После череды успешных сделок, последний расслабляется, начинает думать, что поймал удачу за бороду и жизнь обеспечена. Появляется чрезмерная уверенность в своих действиях и трейдер начинает отклоняться от торговой стратегии. Открываются сделки не по системе, а по «наитию». Пребывая в эйфории от череды успешно закрытых ордеров, трейдер увеличивает торговый лот. И уже скоро этот человек отправляется в число тех теряющих деньги 95% трейдеров.
Решить проблему психологической стороны торговли может ее автоматизация – использование торгового эксперта (советника, торгового робота), который будет работать на счете трейдера без вмешательства человека – хозяина счета.
Торговый робот лишен эмоций и способен монотонно выполнять свой алгоритм с приходом каждого нового ценового значения. Конечно, иногда трейдеру придется запрещать ему работу, например, во время крайне-важных финансово-политических новостей, когда волатильность возрастает в разы. Например, такими событиями в недавнем прошлом являлись Britain Exit – «Брекзит» – кампания сторонников выхода Великобритании из ЕС, выборы президентов США и Франции, авария на АЭС Фукусима-1, спровоцировавшая обвал японской национальной валюты и т. п. Надеюсь, мысль вам понятна.
В этой книге мы научимся делать торговых роботов для для самого распространенного и самого удобного торгового терминала MetaTrader4 от компании MetaQuotes. Если быть точнее, в этой книге мы по шагам создадим советника (Expert Advisor), полностью готового «к употреблению». Естественно, прибыльность конечного продукта я не обещаю, нам важно другое – научиться их делать.
После изучения этой книги Вы сможете воплощать свои самые смелые торговые идеи самостоятельно, не прибегая к услугам mql-программистов. Также, вы сможете и сами зарабатывать, программируя советники на заказ.
Пожалуй, уже к середине изучения данной книги вы будете отклоняться от нее и вносить свои коррективы в создаваемый нами советник. Так и должно быть. Поехали.
НЕМНОГО ТЕОРИИ
Типы данных
Торговый эксперт оперирует данными. Он работает с поступающими ценами, ценовыми значениями индикаторов, ведет подсчеты открытых ордеров, что-то печатает в Журнал торгового терминала.
В mql4 существуют следующие типы данных:
Основные типы данных:
целые числа (char, short, int, long, uchar, ushort, uint, ulong)
логические (bool)
литералы (ushort)
строки (string)
числа с плавающей точкой (double, float)
цвет (color)
дата и время (datetime)
перечисления (enum)
Сложные типы данных:
структуры;
классы.
На первых порах вам не понадобится и 70% из вышеперечисленного. Рассмотрим только то, что нам будет нужно в рамках разработки нашего торгового эксперта.
Тип int – целые числа, т. е. 1, 2, 5,100, 1425…
Тип double – числа с дробной частью (с запятой): 1,0254, 0,0547....
Тип bool – имеет только 2 значения – true (правда) и false (ложь).
Тип string – строковые значения, т. е. слова: “слово”, “предложение из четырех слов”…
Переменные
Переменные – это буквенные символы, содержащие в себе значения какого-либо типа. Переменные – это бочонки, в которых что-то лежит.
С типом
bool
все также, например переменная
bool
b
=
true
, означает, что бочонок с именем
b
содержит в себе
true
.
Перед тем как создавать переменную для последующей работы с ней, нужно обязательно объявить ее тип, чтобы компилятор редактора MetaEditor (в нем мы будем создавать нашего робота) знал, что в этой переменной будет храниться. Названия переменных не могут начинаться с цифры.
Объявлять переменную нужно только 1 раз. Позднее мы поговорим о том, где их можно объявлять и как это влияет на последующую работу.
Условные операторы if-else
Условные операторы if-else применяются всегда и везде. If – означает “если”, else – “если нет, то”.
Например:
if(x < y) // Если содержимое бочонка x меньше содержимого бочонка y
{
Что-то делаем, например, открываем ордер. Или закрываем другой ордер, да все что угодно!
}else // А если x не меньше y, делаем то, что ниже, в фигурных скобках
{
Делаем что-то здесь.
}
использование оператора else не обязательно, все зависит от конкретной задачи.
Два слеша (косые черты) - //, то что после них в коде советника означают комментарии. При компиляции вашего советника (превращения вашего кода в машинный код, понятный компьютеру), комментарии игнорируются. Комментарии желательно писать для себя, чтобы не забыть что куда и зачем сделано.
Блоки комментариев делаются так:
/* это
блок
комментария */
Все, что между символами /* и */ также компилятором игнорируется.
Циклы
В 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
– ее вам необходимо изучить (хотя, это громко сказано), чтобы в дальнейшем вы умели вызывать данные почти
любых не стандартных
индикаторов для