Генетические алгоритмы в MetaTrader 4. Сравнение с прямым перебором оптимизатора

Автор: lexy Среда, Сентябрь 10th, 2014 Нет комментариев

Рубрика: Разное

1.     Что такое генетические алгоритмы?

В MetaTrader 4 стали доступны генетические алгоритмы оптимизации входных параметров экспертов. Они значительно сокращают время оптимизации, практически не искажая результаты тестирования. Принцип их работы подробно описан в статье Генетические алгоритмы — математический аппарат.

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

 

2.     Эксперт

       Для проведения экспериментов я немного доработал уже знакомого вам по статье Управление ордерами — это просто  эксперта CrossMACD:

  • Добавил к устанавливаемым позициям СтопЛосс и ТейкПрофит.
  • Добавил сопровождение позиций ТрейлингСтопом.
  • Для фильтрации сигналов ввел параметр OpenLuft: теперь сигналом будет пересечение нулевой линии на определённое количество пунктов (с точностью до одной десятой пункта).
  • Добавил параметр CloseLuft для аналогичной фильтрации сигналов закрытия.
  • Вынес во внешние переменные периоды быстрой и медленной скользящих средних, используемых при расчёте индикатора MACD.

Теперь это практически полноценный эксперт. Его будет удобно оптимизировать и использовать для торговли. Вы можете скачать эксперта  CrossMACD_DeLuxe.mq4 к себе на компьютер и провести все тесты самостоятельно.

 

3.     Оптимизация

Можно приступать к оптимизации. В рамках подготовки статьи будет проведено три теста с разным количеством переборов оптимизации. Это позволит сравнить выигрыш от использования генетических алгоритмов в разных ситуациях.

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

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

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

Тест 1

  • Символ графика – EURUSD;
  • Период графика – Н1;
  • Период тестирования – 2 года;
  • Режим моделирования – «По ценам открытия«;
  • Перебираемые параметры:

 

Имя переменной

Стартовое значение

Шаг

Конечное значение

StopLoss

0

10

100

TakeProfit

0

10

150

TrailingStop

0

10

100

OpenLuft

0

5

50

CloseLuft

0

5

50

Количество переборов

234 256

 

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

Прямой перебор

 

Генетический алгоритм

Как видите, вместо ожидаемых пяти с половиной часов, оптимизация с использованием генетических алгоритмов заняла меньше четырех минут ;)

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

Теперь подробно рассмотрим результаты обоих методов оптимизации.

Таблица результатов:

Прямой перебор

Генетический алгоритм

Общее время
оптимизации

4 ч. 13 мин. 28 сек.

3 мин. 50 сек.

SL

TP

TS

Open Luft

Close Luft

Profit

SL

TP

TS

Open Luft

Close Luft

Profit

1

70

140

0

20

30

1248.08

70

140

0

20

30

1248.08

2

70

140

0

20

35

1220.06

70

140

0

20

35

1220.06

3

70

150

0

20

30

1176.54

70

150

0

20

30

1176.54

SL

TP

TS

Open Luft

Close Luft

Profit Factor

SL

TP

TS

Open Luft

Close Luft

Profit Factor

1

100

50

40

50

5

4.72

0

50

40

50

5

4.72

2

90

50

40

50

5

4.72

90

50

40

50

5

4.72

3

80

50

40

50

5

4.72

80

50

40

50

0

4.72

 

Как видно из таблицы, скорость оптимизации с использованием генетических алгоритмов выше в несколько десятков раз! Результаты при этом практически идентичны. Результатов с максимальной прибыльностью равной 4.72 несколько, поэтому в отчёты попали разные комбинации параметров, но это не принципиально.

Теперь попробуем уменьшить количество переборов, но увеличить время тестирования. Для этого будем использовать модель «все тики».

Тест 2

 

  • Символ графика – EURUSD;
  • Период графика – Н1;
  • Период тестирования – 2 года;
  • Режим моделирования – «Все тики«;
  • Перебираемые параметры:

Имя переменной

Стартовое значение

Шаг

Конечное значение

StopLoss

0

10

100

TakeProfit

0

10

150

TrailingStop

0

10

100

OpenLuft

0

10

50

Количество переборов

11 616

 

Таблица результатов:

Прямой перебор

Генетический алгоритм

Общее время оптими
зации

32 ч. 32 мин. 37 сек.

1 ч. 18 мин. 51 сек.

SL

TP

TS

Open Luft

Profit

SL

TP

TS

Open Luft

Profit

1

50

0

0

20

1137.89

50

0

0

20

1137.89

2

70

0

0

20

1097.87

70

0

0

20

1097.87

3

60

0

0

20

1019.95

60

0

0

20

1019.95

SL

TP

TS

Open Luft

Profit Factor

SL

TP

TS

Open Luft

Profit Factor

1

50

90

60

50

4.65

50

90

60

50

4.65

2

50

140

60

50

4.59

50

140

60

50

4.59

3

100

90

60

50

4.46

70

90

60

50

4.46

 

При таком количестве переборов скорость отличается в 25 раз, что тоже очень неплохо. Результаты совпадают практически на 100%, единственное отличие в значении СтопЛосс в третьем тесте. Прибыльность при этом опять же осталась максимальной.

Теперь попробуем уменьшить количество переборов и уменьшить время тестирования. Для этого будем использовать модель «контрольные точки».

Тест 3

 

  • Символ графика – EURUSD;
  • Период графика – Н1;
  • Период тестирования – 2 года;
  • Режим моделирования – «Контрольные точки«;
  • Перебираемые параметры:

 

Имя переменной

Стартовое значение

Шаг

Конечное значение

StopLoss

0

10

100

OpenLuft

0

5

50

CloseLuft

0

5

50

Количество переборов

1 331

 

Таблица результатов:

Прямой перебор

Генетический алгоритм

Общее время оптими
зации

33 мин. 25 сек.

31 мин. 55 сек.

SL

Open Luft

Close Luft

Profit

SL

Open Luft

Close Luft

Profit

1

0

0

45

1078.03

0

0

45

1078.03

2

70

20

15

1063.94

70

20

15

1063.94

3

70

20

25

1020.19

70

20

25

1020.19

SL

Open Luft

Close Luft

Profit Factor

SL

Open Luft

Close Luft

Profit Factor

1

80

50

15

2.73

80

50

15

2.73

2

70

50

15

2.73

70

50

15

2.73

3

90

50

15

2.65

90

50

15

2.65

 

Тут ситуация изменилась. Время оптимизации совпадает (небольшая погрешность допускается), а результаты идентичны. Это связано с тем, что оптимизация состояла всего из 1331 перебора, а такого количества тестов для применения генетических алгоритмов просто мало. Они не успевают «разогнаться» - выигрыш в скорости оптимизации достигается за счёт отсеивания заведомо убыточных комбинаций параметров, а при таком количестве вариантов генетические алгоритмы не могут определить, какие «родители» (комбинации параметров) дадут плохое «потомство». Использовать их, соответственно, смысла нет.

 

4.     Выводы

Генетические алгоритмы — прекрасное дополнение к оптимизатору стратегий МТ 4. Ускорение оптимизации при большом количестве переборов просто фантастическое, результаты совпадают с результатами обычной оптимизации.

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

5.     Послесловие

Уже после написания статьи я для удовлетворения собственного любопытства запустил оптимизацию CrossMACD_DeLuxe по всем параметрам. Количество комбинаций составило более ста миллионов (103 306 896). С использованием генетических алгоритмов оптимизация заняла всего 17 часов, в то время как оптимизация с перебором всех параметров закончилась бы, предположительно, через 35 лет (301 223 часа).

Делайте выводы.

Прикрепленные файлы:
 CrossMACD_DeLuxe.mq4 (6.7 Kb)
Источник: mql4.com

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты