Описание и мониторинг советника Double Extremum + файлы

Описание и мониторинг советника Double Extremum + файлы

3 декабря 2017, 21:29
Aleh Rynh
0
450

The English version is here.

Double Extremum 2.7 - автоматический среднесрочный советник.

Работа эксперта основана на определении двух экстремумов, образуемых индикаторами, и сопоставлении их с экстремумами цены. Алгоритм же определения самих экстремумов построен на вложенных циклах, внутри которых происходит деление на зоны. Для анализа берется последние 40 баров, данный блок разбивается на две части, каждая из которых в свою очередь разбивается на 3 части. Найденные экстремумы нумеруются, нумерация смещается n баров, и затем сопоставляются с ценой. Сопоставление выявляет дивергенцию либо согласованность.

 

1.

Для экономии спреда, а также для оптимизации количества ордеров, существует функция проверки и закрытия противоположных ордеров. Работа ее построена просто: при появлении сигнала на продажу в рамках конкретного сета, при наличии ордеров на покупку, советник вместо открытия позиции на продажу закрывает одну позицию на покупку, выбирая для закрытия ордер с наибольшей текущей прибылью.

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

 

2.

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

На текущем баре происходит проверка следующих условий:

  1. Открыто более 3-х ордеров на покупку в рамках сета.
  2. Выбирается ордер с наибольшей текущей прибылью для проверки.
  3. Если от уровня открытия цена прошла расстояние, большее чем ATR*PartialCloseIfProfit_ATRs, ордер закрывается.

 На следующем баре проверка повторяется.

Таким образом, уменьшается риск, при этом фиксируется некоторая прибыль.

 

3.

Описанная в п.2 ситуация происходит, когда сетов достаточно много (больше шести). Ограничивать количество ордеров позволяет функция MaxOrders_InOneSet (максимальное количество ордеров в одном сете) и MaxOrders_InSymbol (максимальное количество ордеров по символу). Первый вариант предпочтительнее, так как позволяет сетам открыть хотя бы по одному ордеру, чем и обеспечивается большая сглаженность линии роста эквити.


4.

Также для достижения наиболее сглаженной линии роста Эквити мы используем комбинацию нескольких систем, или инструментов, которые слабо коррелируют друг с другом. Чтобы при просадке одной системы или инструмента другие могли ее компенсировать.

Этот эффект достигается путем внедрения нескольких различных сетов по символу. Сеты - это те наиболее выгодные комбинации значений параметров, которые мы видим в результатах оптимизации.

Если вы хотите улучшить торговлю, вы можете создать свои настройки посредством оптимизации под конкретную пару  (отобрать до 20-ти лучших результатов для каждой пары, желательно чтобы в них периоды спадов и подъемов не коррелировали друг с другом).

Это – как набор в команду. В команде обычно требуется: один с таким-то свойством, еще один – с другим, отличным от первого свойством, третий – с третьим свойством, не присущим первым. На практике подбора сетов это означает подбор минимально коррелирующих друг с другом, но при этом прибыльно работающих стратегий. Просадка одного сета в отдельно взятом периоде компенсируется хорошим ростом другого сета, и наоборот. Даже если по инструменту в целом возникла просадка (вы не поверите, но такое бывает:), то другие инструменты дадут хорошие результаты, и общий эквити (по всем инструментам) будет достаточно стабильным.

 

 Найдя такие сеты, достаточно записать их в обычный текстовый файл:

- "MetaTrader...\tester\files\DoubleExt.txt"  - для тестирования, затем скопируйте в

- "MetaTrader...\MQL4\Files\DoubleExt.txt" - для торговли.


После вставки напротив каждой строки пропишите название инструмента (без приставок и окончаний, т.е. 6 символов) и нажмите TAB.

Советник ищет указанный файл с настройками, затем в файле ищет строки, начинающиеся с названия инструмента, на котором он сейчас работает, производит извлечение значений и заносит их себе в массив.

Если же советник НЕ находит файл, ЛИБО в файле не находит ни одного сета по инструменту, то берет базовые значения из кода.

Поэтому, как вариант, можно закомментировать отдельные строки в файле, установив любой знак перед строкой (напр. «-», получится «-eurusd»), если Вы пока не хотите использовать их в торговле.

Чтобы не удалять файл, можно его переименовать аналогично вышеуказанному варианту, и тогда все сеты будут браться исключительно из кода. Уберите «-» перед названием – и торговля будет производиться снова с сетами из файла.

При торговле или при визуальном тестировании выводится комментарий, по которому можно определить, откуда он берет сеты:

«Советник в рабочем режиме. Настройки для торговли взяты ИЗ КОДА» (или «ФАЙЛА»)

 

Теперь приступим к описанию параметров советника.

Параметры для торговли

  • Start_lot – начальный лот. При выключенном динамическом лоте (risk=0) советник будет выставлять ордера с постоянным лотом, определенном данным параметром. При включенном динамическом лоте Start_lot определяет начальный размер лота, от которого будет расти его значение.
  • risk – включение динамического лота с заданным уровнем риска. Чтобы иметь представление о прибыли и просадке, значение risk лучше подобрать экспериментально в тестере. Рекомендуется 5. Размер лота не снижается при закрытии нескольких убыточных сделок, давая возможность следующим прибыльным сделкам восстановить баланс с тем же шансом. Последний размер лота хранится в глобальной переменной (Lots_581978359). При выводе прибыли эту переменную необходимо обнулить вручную.
  • MaxOrders_InOneSet - Максимальное количество ордеров в одном сете. По умолчанию – 0 (контроль отсутствует). Позволяет достаточно гибко ограничить общее количество ордеров, позволяя при этом открыть ордера (хотя бы по одному) всем сетам. Таким образом, обеспечивается баланс всех стратегий (эффект диверсификации).
  • MaxOrders_InSymbol - Максимальное количество ордеров по текущему символу (сумма всех сетов). По умолчанию – 0 (контроль отсутствует).
  • PartialCloseIfProfit_ATRs - Функция частичного закрытия. Закрытие прибыльных ордеров, если открыто больше 3-х в одном направлении по символу в целом. Закрытие самого прибыльного ордера срабатывает, если выполняются условия:
  • PartialCloseIfProfit_ATRs >0;
  • одновременно открытых ордеров в одном направлении открыто больше трех;
  • цена самого прибыльного ордера ушла на расстояние, большее чем ATR*PartialCloseIfProfit_ATRs.

Этих настроек достаточно для торговли. Наилучшие результаты советник показывает на EURUSD,GBPUSD,USDJPY,USDCAD,AUDUSD,EURJPY,GBPJPY.

 

Параметры для оптимизации советника

  • OptimizationMode – включение/выключение режима оптимизации. При включенном OptimizationMode оптимизируются параметры ForPeriod, Indicator, Ind_per, i3, i4,  SL_ATRs, TPSL_koef, BreakEven_ATRs, TrailDist_ATRs, Coef_expr. Наилучшие результаты тестирования помещаются в указанный текстовый файл (посредством копипаста), и оттуда при выключенном OptimizationMode советник берет параметры при торговле.
  • ForPeriod – Период графика (таймфрейм), под который производится оптимизация. Рекомендуется H1, отчасти M30 и H4. Если на текущем инструменте советник не показывает хороших результатов на H1, попробуйте протестировать на ближайших таймфреймах. При оптимизации ForPeriod должен совпадать с периодом графика, на котором она производится.

При торговле же, когда результаты тестов помещены в файл, необходимо, чтобы советник был помещен на один график, с наименьшим таймфреймом из прописанных.


  • Set_number – по умолчанию 0 (все сеты). Используется для анализа конкретного сета, одного из записанных в файл. На одну валютную пару может быть записано до 20 сетов, для разных таймфреймов, которые будут работать каждый по своим параметрам, при этом достаточно установить советника на один график (с наименьшим таймфреймом).
  • Indicator – Анализируемый индикатор для определения экстремумов: AO, RSI, CCI, Stochastic, MACD, RVI, WPR, Momentum.
  • Ind_per – период анализируемого индикатора (не актуален для AO).
  • i3 – способ определения двойной убывающей вершины. Может принимать значение от 0 до 3 (см.рисунок ниже).
  • i4 – способ определение двойной растущей вершины. Может принимать значение от 0 до 3 (см.рисунок ниже).


  • SL_ATRs – уровень первоначального стоп-лосса, выражается в количестве свечей (усреднённых). Здесь и далее размер средней свечи определяется индикатором ATR(200) для тестируемого тайфрейма. Рекомендуется от 5 до 10. Вы можете попробовать и другие значения (от 10 до 20).
  • TPSL_coef – коэффициент тейк-профита к стоп-лоссу. Рекомендуется от 1 до 10. Также при оптимизации можете попробовать диапазон 0,5-2 или 10-20.
  • BreakEven_ATRs – уровень безубытка в ATR-ах. Рекомендуется от 1 до 10.
  • TrailDist_ATRs – дистанция трейлинга в ATR-ах. Рекомендуется от 1 до 10.

  • Coef_expr - Выраженность двойного экстремума - соотношение наименьшего максимума к минимуму, с которого начинается зачет фигуры. Чем меньше коэффициент, тем более выражена фигура, и тем реже будет она найдена. Рекомендуемый диапазон при оптимизации: от 0,55 до 0,95. По умолчанию 0,95.

  • ShowProfitInfo – показать/скрыть информацию о текущих результатах торговли советником.

- В случае, если BreakEven больше TrailDist, трейлинг не начнется, пока цена не зайдет за уровень BreakEven. То есть BreakEven будет сдерживать трейлинг.

- В случае же, если BreakEven меньше TrailDist, то при достижении ценой уровня BreakEven произойдет перевод ордера в безубыток, и этот уровень будет неизменным, пока цена не зайдет за уровень TrailDist, лишь после этого начнется трейлинг.


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

Что можно сделать c пятисот на EURUSD

Риск 0



Риск 7



Другие пары (с 500$, риск 0):

         

 







Результат наложения результатов теста первых шести валютных пар:


Как видим, периоды просадки по одним парам компенсируются ростом других.

Объединим результаты тестов по 13 валютным парам в программе ReportManager:

Риск 0: 

  

Риск 3:



Советник  не требователен к спреду и скорости исполнения сделок, и результаты теста практически совпадают с результатами в реальной торговле.

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

 

Аскетичная информационная панель:


 

Следует отметить, что процедура оптимизации вовсе не обязательна (до конца 2018 года).

Достаточно  загрузить советник, открыть графики EURUSD, GBPUSD, USDJPY, USDCHF, USDCAD, AUDUSD, NZDUSD, EURGBP, EURJPY, GBPJPY, GBPCHF, EURCAD, EURAUD на тайфрейм M30, бросить на них советник, и установить уровень риска.

Да, и не забудьте про три правила успешной торговли:

Версия 2.7 доступна в Маркете с 29.01.2018 г. Ниже приложен файл настроек, которыми торгует советник. С файлом или без, советник торгует аналогично, так как настройки в коде совпадают с настройками в файле. Но если вы загрузите и измените этот файл (добавив или удалив/закомментировав некоторые сеты), вы измените торговлю по своему усмотрению.

Файлы:
Поделитесь с друзьями: