Рождение эксперта. Введение.

Опубликовано: 01.01.2007

Данная статья открывает целый цикл статей под названием "Рождение эксперта". В статьях наглядно будет показано, как создаются эксперты, индикаторы или скрипты на MQL4 для MetaTrader 4. Читателю не обязательно иметь какой-либо опыт в программировании на MQL4, чтобы разобраться в примерах приведенных в статьях. Таким образом, начинающий MQL4-программист может познакомиться с основами программирования, а так же проследит за созданием, или рождением, программы от начала (создание торговых правил), и до конца (тестирование стратегии на исторических данных).

Появлению данного цикла послужил личный опыт программирования автора статей и владельца сайта www.autoforex.ru, а так же ограниченное количество, а порой и отсутствие подобной информации в Интернете.

Каждый раз, когда начинаешь изучать новый язык программирования, будь то MQL4, Си, Pascal или Assembler, первым делом ищешь примеры программ на этом языке. Возьмем, например, MQL4. В сети есть множество разобранных примеров кода на MQL4, создано множество Форумов (один из них на моем сайте www.forum.autoforex.ru) по обсуждению проблем связанных с программированием на MQL4. И это хорошо.

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

Написать эксперта или индикатор, зная синтаксис MQL4, зная набор встроенных в него функций - дело не сложное, а вот заставить его работать правильно, так как задумано – это уже не так просто как кажется. Отладка программы на MQL4 занимает львиную долю времени работы над экспертом или индикатором. Вся проблема в том, что в MetaTrader 4 нет отладчика программ, нет дебаггера (debugger). Отладка программы на MQL4 сводится к тому, чтобы вручную, шаг за шагом, просматривать результаты работы эксперта, просматривать log-файлы, и затем корректировать код. Хорошо, если эксперт простой и содержит всего несколько правил для совершения сделок. Но бывают эксперты, которые описывают Механическую Торговую Систему (МТС) небывалой сложности. Такие эксперты содержат в себе несколько тысяч строк программного кода на MQL4 и отладка таких "монстров" - дело не из легких.

Я придерживаюсь принципа – чем проще МТС и чем проще программа на MQL4, тем лучше. Тем больше шансов на то, что эксперт будет торговать по тому алгоритму, который был задуман трейдером изначально. И Вам советую придерживаться этого принципа.

Написание программы на MQL4, равно как и на любом другом языке программирования, есть процесс творческий. Любой программист ответит Вам, что о не просто пишет программы, а создает их, вынашивает в своей голове. Большинство процессов связанных с созданием программы происходит, как это не странно, не за компьютером. Программист постоянно находится в процессе создания своих творений, чем бы он не занимался. За компьютером же, в основном, происходит отладка программы, проверка работоспособности придуманных накануне алгоритмов.

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

Затем начинается отладка готового эксперта на исторических данных. Это самый скучный и требующий много времени процесс. Ведь необходимо проверить правильность работы эксперта при всевозможных условиях. Проверить правильность выполнения всех заложенных в эксперта правил торговли. Если это индикатор, то проверить правильность вычисления и отображения индикатора на всем диапазоне ценового графика, особенно на проблемных участках, где есть обрывы графиков цены или другие артефакты. В общем, постараться предусмотреть все те условия, с которыми придется столкнуться эксперту или индикатору во время реальной торговли. А это, порой, бывает очень сложно.

Но не все так страшно. Из цикла статей "Рождение эксперта" Вы познакомитесь, как создаются эксперты на MQL4, как пишутся индикаторы и скрипты. Я попытаюсь подробно описать, как можно с нуля создать программу, не торопясь - шаг за шагом. При этом Вы увидите, как легко наступить на "грабли", программируя на MQL4. Такая информация поможет Вам избежать этих трудностей, хотя и не избавит Вас от них.

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

И, напоследок, несколько советов от автора статьи и бывалого программиста:

- Обязательно ознакомьтесь с документацией по MQL4 и справкой по языку в MetaEditore.
- При написании программы всегда старайтесь идти от простого к сложному.
- Как только появляется возможность протестировать готовый кусок кода или функцию, делайте это сразу, пока программа не разрослась до больших размеров.
- Часто повторяющиеся куски кода оформляйте отдельными функциями.
- Не стремитесь сразу написать оптимальный код на MQL4, для начала напишите что-то, что работает правильно, пусть даже, если код будет не красивым или громоздким. В последствии это все будет исправлено во время оптимизации кода.
- Не стесняйтесь использовать свои собственные алгоритмы, даже если есть готовые и более совершенные, главное это ПРАВИЛЬНО работающая программа.
- Всегда прислушивайтесь к мнению других, но делайте по-своему.

Помните – нет ничего невозможного, просто некоторые вещи требуют больше времени.