Самостоятельная модификация программ для MetaTrader4 (часть 1)

В процессе повседневной торговли большинство из нас регулярно сталкивается с различными программами, написанными для терминала MetaTrader 4. Скрипты, индикаторы, советники – их суть – помочь нам принять решение о выставлении или закрытии ордера (а то и вообще полностью автоматизировать этот процесс). 90% времени они работают абсолютно нормально, и нас это устраивает. Однако в оставшиеся 10% возникают ситуации, когда программы не передают полностью ситуацию на рынке. В такие моменты возникает непреодолимое желание заняться их оптимизацией (читай – улучшением): добавить новое условие входа или выхода, немного подправить поведение, в конце концов, просто вывести предупреждающее сообщение – вот лишь некоторые примеры из большого числа тех различных мелких правок, которые иногда так хочется (или даже необходимо) внести.

metatrader 4

Все не так сложно, как кажется

Однако большинство трейдеров совершенно не знакомо с программированием. Зачастую они думают, что это сложный и совершенно неподъемный навык, изучение которого потребует очень много сил и средств, а отдача от него не принесет желаемой выгоды. В итоге они вынуждены обращаться к сторонним программистам (платя, разумеется, за это деньги), на форумы (где нередко начинающие программисты вместо грамотной модификации лишь добавляют очередной «костыль», который рано или поздно приведет к сливу всего депозита), либо просто отказываются от идеи что-то менять.

Что ж, не буду вас разубеждать. Сразу скажу: программирование в общем – это очень сложная наука, и написать что-то наподобие MS Word, не говоря уже MS Windows – сложная задача для большого коллектива разработчиков, требующая огромного количества человеко-часов опытных программистов. Однако большинство программ для MT4 не настолько сложны, и одному, даже начинающему программисту, вполне под силу разобраться в них.

Для разработки программ для терминала MetaTrader 4 используется приложение, называемое средой разработки, MetaEditor. Вы можете запустить её либо из папки с терминалом, либо нажав на значок восклицательного знака в желтом ромбике на панели инструментов MetaTrader 4. Для того, чтобы передать свои мысли компьютеру (т.е. написать программу), используется специальный язык, называемый языком программирования. В терминале MetaTrader 4 – это MQL4. Это Си-подобный функциональный компилируемый язык.

Давайте чуть подробнее разберем, что значат все эти слова. «Си-подобный» означает, что он очень похож на язык программирования Си (не путать с C++), придуманный Деннисом Ритчи и Кеном Томпсоном в 1969 – 1973 годах. Впрочем, для начинающих программистов это скорее занятный факт, чем какая-то инструкция к действию. «Функциональный» означает, что в его основе лежит принцип разбиения задачи на подзадачи, и это разбиение реализуется через специальную конструкцию языка, называемую «функцией». Однако мы не будем говорить об этом в рамках данной статьи.

«Компилируемый» — это, пожалуй, самое важное для нас слово. Оно означает, что после того, как мы написали программу, прежде чем её запустить, требуется произвести «компиляцию», т.е. превратить текст на языке программирования непосредственно в программу. Для этого используется команда «компиляция» пункта «Файл» меню программы MetaEditor (либо просто горячая клавиша F5).

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

Важный шаг к пониманию программы на MQL 4

Итак, у нас есть программа, которую мы хотим модифицировать. У нас уже «чешутся руки», и хочется что-то сделать. С чего же следует начать?

Для начала, стоит убедиться, что у программы есть исходный код. Многие программы, которые вы скачиваете из Интернета, поставляются уже в готовом виде (т.е. после компиляции), файлы с ними имеют расширение «.ex4». Модификация таких программ невозможна. Файлы с исходным кодом имеют расширение «.mq4», и для большинства программ их реально найти в Интернете. Ключевые слова для поиска «Название программы + исходники», «Название программы + sources», «Название программы + mq4».

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

После того, как вы скачали файл с исходным кодом, его требуется расположить в правильной папке. Иначе он не будет подхвачен вашим терминалом. Эксперты должны располагаться в папке experts, скрипты в папке experts\scripts, а индикаторы в папке experts\indicators. Папка experts расположена в каталоге установки клиентского терминала.

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

Внимание! Во избежание различных конфликтов рекомендую переименовывать файлы с исходным кодом, добавляя в начало слово «My», например «MovingAverage.mq4» в «MyMovingAverage.mq4».

Если же компиляция завершится неудачей, об этом появится сообщение на вкладке «Ошибки» окна «Инструментарий» в MetaEditor. Текст ошибки (или ошибок) будет написан на английском языке с указанием строчки, где возникла ошибочная ситуация.

Запустив и убедившись, что все работает как надо, можно приступать к самому сложному… И нет, это не исправление исходного кода. Самое сложное – это полностью, досконально разобраться с алгоритмом работы программы. Вы должны кристально ясно понимать, по какому принципу она работает, что делает, какие у неё принципиальные этапы.

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

В этом очень помогает изучение материалов, найденных по ключевым словам «название программы + алгоритм работы».

Понимание алгоритма – один из самых важных шагов к пониманию программы!

Структура скриптов, индикаторов и советников, написанных на языке MQL 4

После того, как мы разобрались с алгоритмом – перед нами встает следующая задача – соотнести текстовое описание с тем, что написано на языке программирования. Однако для этого требуется хотя бы примерно представлять структуру программы. И именно о ней мы поговорим в этом разделе.

Для MT4 существует 3 типа программ – советники, индикаторы и скрипты. Самая простая структура – у скриптов. У них есть некая заголовочная информация, после чего следует функция старт. Выглядит в коде она так:

int start()

{

   А тут располагаются какие-то команды

}

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

Советники и индикаторы работают по чуть более сложной схеме. У них целых три функции – init, deinit и start. Выглядят они точно так же, как и функция start у скрипта, а вот работают немного по-другому. Функция init вызывается при присоединении программы к графику, здесь обычно производится первичная инициализация ресурсов программы (наиболее ярко это выражено в случае со скриптом), затем вызывается функция start. Они вызывается каждый раз при поступлении нового тика. Это позволяет динамически обновлять индикаторы и советников. При отсоединении программы от графика вызывается функция deinit, которая производит деинициализацию программы. Внимание! Функции init и/или deinit могут отсутствовать в программе. В таком случае предполагается, что они ничего не делают.

Таким образом, структура программы уже начинает приобретать некие, пусть и размытые, но формы.

Комментарии – признак умного программиста

В этой статье хочется затронуть ещё одну тему. В хорошем исходном коде, написанном грамотными программистами, есть специальные элементы, упрощающие понимание того, что делает тот или иной участок кода. Эти элементы называются «Комментарии». Они могут выглядеть двумя способами:

1). «//» — Двойная наклонная черта. Все, что расположено после нее и до конца строчки считается комментарием

2) «/*» и «*/» — Все, что расположено между этими символами так же считается комментарием. При этом такой комментарий может быть многострочным.

Примеры:

// Однострочный комментарий

/* Многострочный

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

В коде комментарии обычно подсвечиваются серым цветом.

В комментариях может содержаться совершенно любой текст – он все равно не компилируется и не входит в результирующую программу. Однако наличие грамотного комментария всегда упрощает чтение и понимание программы. Вы сами убедитесь, что пара строчек комментариев порой экономит несколько часов на попытках понять «зачем нужен этот код?».

Поэтому правило №1: когда вы беретесь модифицировать программу, не поленитесь и поставьте комментарий с описанием того, что же вы на самом деле хотите сделать. Это существенно упростит вашу дальнейшую работу с этой программой!

В следующем номере журнала мы начнем разбираться с азами языка программирования MQL 4. Не пропустите!

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

Кнопка возврата к началу