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

Andrey Khatimlianskii | 10 июля, 2006


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

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

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

 

2.     Эксперт

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

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


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

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

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

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

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

Тест 1


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

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

Шаг

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

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

 

 

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

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

Шаг

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

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

 


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

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

Шаг

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

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 часа).

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