Программирование на MQL 4: Торговые системы

FXWizard

Гуру форума
Программирование на MQL 4: Торговые системы

История торговли на финансовых рынках с использованием индикаторов имеет множество подтверждений того, что можно совершать выгодные сделки, опираясь только лишь на рекомендации технического анализа. Трейдеры такого сорта следуют одному из основных постулатов технического анализа, гласящего о том, что вся необходимая информация, в том числе и значимые фундаментальные факторы, уже отражены в рыночной цене. Суть их торговли сводится к отслеживанию сигналов для заключения сделки, подаваемых набором индикаторов.
Совокупность индивидуального набора индикаторов, чётких правил трактовки поданных ими сигналов и методология определения вовлечённости в сделку средств (размера позиции) принято называть "торговой системой" (ТС). Указанные правила ТС должны быть логично увязаны между собою, и их истинность должна быть подтверждена на истории котировок. Последнее требование обусловлено ещё одним из постулатов технического анализа, заключающегося в утверждении о том, что история повторяется.

Безусловно, для того чтобы выработать логичную торговую систему, трейдеру придётся понять принципы работы множества индикаторов и попробовать применить часть из них их на практике. Так как почти каждый индикатор имеет один или несколько параметров, они требуют подгонки под особенности выбранного рынка. Волатильность рынка, временной интервал, цикличность поведения цен, ликвидность торгуемого товара, вот лишь несколько факторов, которые можно отнести к особенностям рынка. Подгонка параметров индикаторов заключается в их осмысленном изменении и перепроверки на истории результатов работы ТС, построенной на тех же самых индикаторах, но уже с изменёнными параметрами.

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

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

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

Торгово-информационная система MetaTrader 4 позволяет писать и тестировать на исторических данных так называемые программы советники (Expert Advisors), которые идеально подходят для написания механических торговых систем (МТС).

Для написания советника следует в редакторе программ MetaEditor 4 выбрать в меню "Файл" пункт "Создать.". Перед нами появится "Мастер создания советника". Выбрав тип создаваемого объекта как "Советник" и нажав кнопку "Далее>" мы переходим к диалоговому окну, в котором нужно указать имя создаваемого советника, автора, ссылку на интернет ресурс и параметры советника.

Для определённости дайте советнику имя MyFirstExpert, графы "Автор" и "Ссылка" можно оставить неизменными.

Теперь добавим параметры советника. Они будут использоваться во время прикрепления советника к графику котировок для передачи в программу некоторых значений.

Справа от таблицы "Параметры" нажимаем кнопку "Добавить" и видим, что в списке появился параметр "Param1" типа int (целочисленный), не имеющий никакого начального значения. Нажав мышкой на поля таблицы, соответствующие этому параметру, мы сможем отредактировать его имя, тип или значение по умолчанию. Давайте изменим название параметра на StopLoss, его тип на double, а значение по умолчанию введём "5". После всего этого нажимаем на кнопку "Готово" и переходим к сгенерированному "Мастером создания советников" остову кода будущего советника.

В созданном остове присутствуют заголовок, в котором указаны вводимые нами на втором этапе "Мастера создания советников" "Имя", "Автор" и "Ссылка".

За заголовком следует объявление глобальной переменной и трёх пока ещё пустых функций "init", "deinit" и "start". Функция "init" имеет один параметр "StopLoss", который был указан нами на третьем этапе "Мастера создания советников". Он, также, имеет указанные нами тип double и значение по умолчанию "5".

Функция "init" сохраняет значение входного параметра "StopLoss" в глобальной переменной с очень похожим названием "g_StopLoss". Это сделано, для того, чтобы после завершения работы функции "init", значение её входного параметра не было потеряно. Так как параметр функции является переменной, видимой только внутри тела этой функции, то, не будь у нас глобальной переменной "g_StopLoss", другие функции не смогли бы получить значения входного параметра "StopLoss" функции "init". Сохранив же значение параметра "StopLoss" в глобальной переменной "g_StopLoss", мы обеспечили доступность значения входного параметра всем функциям советника на протяжении всего времени выполнения программы.

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

Значение функций "init", "deinit" и "start" уже было рассмотрено в предыдущих номерах Forex Magazine и, тем не менее, напомним ещё раз, что основной этап работы советника приходится на функцию "start". Именно она выполняется каждый раз, когда происходит изменение котировки торгуемого инструмента, и именно она ответственна за проведение анализа рыночной ситуации и заключение сделок, опираясь на сигналы индикаторов, входящих в описываемую ТС.

Теперь, дабы не перегружать статью лишними деталями, давайте отвлечёмся от созданного остова советника и перейдём к самостоятельному изучению примера советника "MACD.mq4", поставляемого с редактором программ MetaEditor 4. Предлагаем пошагово рассмотреть каждую из трёх функций и, поняв суть, составить общую схему работы советника, которую мы разберём в следующей статье.

Александр Иванов
для Forex Magazine
 
Верх