Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5. Издание 2-е, исправленное и дополненное - Тимур Машнин
Шрифт:
Интервал:
Закладка:
Мин. депозит = Максимальная просадка по средствам * 2
Correlation (Profits, MFE) — связь между результатами позиций и MFE (Maximum Favorable Excursion — максимальный размер потенциальной прибыли, наблюдаемый за время удержания позиции).
MFE показывает максимальное движение цены в благоприятном направлении.
Чем ближе показатель Correlation (Profits, MFE) к единице, тем лучше эксперт реализует потенциальную прибыль.
Correlation (Profits, MAE) — связь между результатами позиций и MAE (Maximum Adverse Excursion — максимальный потенциальной убыток, наблюдаемый за время удержания позиции).
MAE показывает максимально неблагоприятное движение цены.
Чем ближе показатель Correlation (Profits, MAE) к единице, тем лучше эксперт использует защитный Stop Loss.
Correlation (MFE, MAE) — связь между MFE и MAE.
Чем ближе показатель Correlation (MFE, MAE) к единице, тем лучше эксперт реализует максимальную прибыль и максимально защищает позицию на всем протяжении ее жизни.
Среднее время удержания позиции — показатель рассчитывается как общее время удержания, деленное на количество сделок.
Время удержания позиции увеличивает риск, потому что просадка, очевидно, может быть большей при позициях, удерживаемых в течение большего периода времени.
Создание эксперта с помощью мастера MQL5
Мастер MQL5, который открывается с помощью кнопки Создать панели инструментов редактора MetaEditor, позволяет сгенерировать код эксперта на основе готовых модулей — сигналов, модулей управления капиталом и трейлинг-стопа.
И модуль сигнала здесь добавляется с помощью кнопки Добавить.
Файлы модулей сигналов — это включаемые файлы Include (*.mqh), расположенные в папке MQL5IncludeExpertSignal.
В качестве примера выберем сигнал MACD и сигнал PSAR.
Если посмотреть файлы SignalMACD.mqh и SignalSAR.mqh папки MQL5IncludeExpertSignal, сигнал MACD имеет 5 моделей прогноза цены.
Модель 0 — «осциллятор имеет необходимое направление» — значимость 10.
Модель 1 — «разворот осциллятора в нужном направлении» — значимость 30.
Модель 2 — «пересечение основной и сигнальной линии» — значимость 80.
Модель 3 — «пересечение главной линией нулевого уровня» — значимость 50.
Модель 4 — «дивергенция осциллятора и цены» — значимость 60.
Модель 5 — «двойная дивергенция осциллятора и цены» — значимость 100.
Сигнал SAR имеет 2 модели прогноза цены:
Модель 0 — «параболик находится на нужной стороне цены» — значимость 40.
Модель 1 — «параболик переключается на другую сторону цены» — значимость 90.
Если модель дает сигнал на падение цены — значимость отрицательная, если на рост цены — значимость положительная.
Итоговый прогноз двух модулей будет рассчитываться по следующей формуле.
Итоговый Прогноз = (Прогноз MACD + Прогноз SAR) /2
Где Прогноз MACD = Вес сигнала MACD * значимость Модели MACD,
Прогноз SAR = Вес сигнала SAR * значимость Модели SAR
В нашем случае мы установили весы сигналов равными единице.
Если итоговый прогноз превысит пороговое значение, эксперт совершит сделку на покупку или продажу.
После определения сигналов эксперта определяется алгоритм сопровождения открытой позиции.
Это
— Сопровождение открытой позиции на фиксированном «расстоянии» (в пунктах) — уровни Stop Loss и Take Profit открытой позиции перемещаются на фиксированное расстояние по движению цены в направлении открытой позиции.
Когда цена перемещается в направлении открытой позиции на расстояние, которое превышает количество пунктов, соответствующих уровню Trailing Stop Level, эксперт изменяет значения уровней Stop Loss и Take Profit (если Trailing Profit Level> 0).
— Сопровождение открытой позиции по значениям скользящей средней на предыдущем баре.
— Сопровождение открытой позиции по значениям индикатора Parabolic SAR на предыдущем баре.
И файлы реализации алгоритма сопровождения открытой позиции находятся в папке MQL5IncludeExpertTrailing.
После определения алгоритма сопровождения открытой позиции устанавливается алгоритм управления капиталом и рисками.
Это
— Торговля с фиксированным лотом.
— Торговля с фиксированным уровнем маржи.
И здесь значение лота вычисляется функцией MaxLotCheck, которая возвращает максимально возможный объем торговой операции на основе доли свободной маржи (здесь по умолчанию 10 %).
— Торговля с фиксированным уровнем риска.
И здесь значение лота вычисляется как отношение доли баланса, выделенной для риска, к StopLoss.
— Торговля минимальным лотом.
— И торговля объемом, определяемым результатами предыдущих сделок.
Здесь сначала значение лота вычисляется функцией MaxLotCheck, которая возвращает максимально возможный объем торговой операции на основе доли свободной маржи (здесь по умолчанию 10 %).
Затем в случае получения убытка лот уменьшается на фактор Decrease Factor (по умолчанию 3).
Если образуется убыток, равный указанному проценту от текущего капитала, производится принудительное закрытие убыточной позиции.
Файлы реализации алгоритма управления капиталом и рисками находятся в папке MQL5IncludeExpertMoney.
После выбора алгоритма управления капиталом и рисками генерируется код эксперта.
Код эксперта основан на использовании экземпляра класса CExpert, файл которого находится в папке MQL5IncludeExpert.
Пороговые значения Signal_ThresholdOpen и Signal_ThresholdClose итогового прогноза сигналов по умолчанию равны 10.
Тестирование этого эксперта с сигналами MACD и PSAR на часовом графике EUR/USD с разными алгоритмами трейлинга и манименеджмента дает отрицательное матожидание выигрыша.
Ничего не дает и оптимизация таких параметров, как Trailing_FixedPips_StopLevel, Signal_MACD_Weight и Signal_SAR_Weight.
Эксперт остается убыточным.
Попробуем создать эксперт и включить в него все стандартные сигналы мастера MQL5 Wizard.
При тестировании на часовом графике EUR/USD такой эксперт с равными весами сигналов также покажет отрицательное матожидание выигрыша.
Однако при оптимизации весов сигналов, эксперт выйдет в плюс, и будут видны комбинации сигналов со значимыми весами, дающие наилучший результат.
Также можно провести оптимизацию пороговых значений прогноза вместе с оптимизацией весов сигналов.
На основании полученных комбинаций сигналов, выводящих советник в прибыль, уже можно строить торговые системы.
Модульная структура эксперта, генерируемого мастером MQL5 Wizard, позволяет включить в советник свой собственный модуль сигналов торговой системы.
В качестве примера рассмотрим создание модуля сигналов на основе торговой системы Сидуса.
В редакторе MetaEditor нажмем кнопку Создать и в мастере MQL5 создадим включаемый файл.
Который поместим в папку MQL5IncludeExpertSignal.
Включаемый файл должен содержать класс, расширяющий класс CExpertSignal.
Поэтому в код необходимо включить файл ExpertSignal.mqh класса CExpertSignal, используя директиву include.
Далее должна присутствовать информация о модуле сигналов, предназначенная для мастера MQL5, которая используется для распознавания модуля сигналов мастером MQL5 при создании эксперта в окне добавления сигналов, а также при