| / | Статьи |
Cтатьи
Тестер
Генетические алгоритмы в MetaTrader 4. Сравнение с прямым перебором оптимизатора
Авторизуйтесь или зарегистрируйтесь , чтобы добавить новую статью
|
Генетические алгоритмы в MetaTrader 4. Сравнение с прямым перебором оптимизатора [ en | cn ]1. Что такое генетические алгоритмы?В MetaTrader 4 стали доступны генетические алгоритмы оптимизации входных параметров экспертов. Они значительно сокращают время оптимизации, практически не искажая результаты тестирования. Принцип их работы подробно описан в статье Генетические алгоритмы - математический аппарат. Данная статья посвящена сравнению оптимизации входных параметров экспертов с использованием генетических алгоритмов и оптимизации с использованием прямого, полного перебора значений параметров.
2. ЭкспертДля проведения экспериментов я немного доработал уже знакомого вам по статье Управление ордерами - это просто эксперта CrossMACD:
Теперь это практически полноценный эксперт. Его будет удобно оптимизировать и использовать для торговли. Вы можете скачать эксперта CrossMACD_DeLuxe.mq4 к себе на компьютер и провести все тесты самостоятельно. 3. ОптимизацияМожно приступать к оптимизации. В рамках подготовки статьи будет проведено три теста с разным количеством переборов оптимизации. Это позволит сравнить выигрыш от использования генетических алгоритмов в разных ситуациях. После каждого теста я буду вручную удалять кэш тестера,
чтоб следующие тесты не использовали уже просчитанные варианты. Это
необходимо только для чистоты эксперимента - при обычном использовании
оптимизатора, автоматическое кэширование результатов только ускорит
процесс повторной оптимизации. Для сравнения результатов оптимизация с использованием генетических алгоритмов будет проводиться дважды: первый раз – с целью найти максимальную прибыль (Profit), а второй – с целью найти лучшую прибыльность (Profit Factor). После этого три лучшие результата для обоих методов оптимизации будут представлены в сводной таблице отчёта, отсортированной по указанным колонкам. Оптимизация несёт чисто экспериментальный характер. Цели найти параметры, приносящие максимальную прибыль, автор не преследовал. Тест 1
Стоит заметить, что при использовании генетических алгоритмов ожидаемое время
оптимизации примерно такое же, как и при оптимизации с прямым перебором
параметров. Отличие состоит в том, что генетический алгоритм, постоянно
отсеивая заведомо плохие варианты, сокращает количество необходимых
тестов в несколько (десятков, сотен, тысяч) раз. Поэтому
ориентироваться на предположительное время оптимизации при
использовании генетических алгоритмов не стоит. Реальное время
оптимизации будет всегда меньше: ![]() Прямой перебор ![]() Генетический алгоритм Как видите, вместо ожидаемых пяти с половиной часов, оптимизация с использованием генетических алгоритмов заняла меньше четырех минут ;) График оптимизации при этом тоже отличается от графика обычной оптимизации - поскольку плохие варианты отсеиваются, следующие тесты используют комбинации параметров, дающие большую прибыль. Поэтому график баланса устремлён вверх: ![]()
Таблица результатов:
Как видно из таблицы, скорость оптимизации с использованием генетических алгоритмов выше в несколько десятков раз! Результаты при этом практически идентичны. Результатов с максимальной прибыльностью равной 4.72 несколько, поэтому в отчёты попали разные комбинации параметров, но это не принципиально. Теперь попробуем уменьшить количество переборов, но увеличить время тестирования. Для этого будем использовать модель "все тики". Тест 2
Таблица результатов:
При таком количестве переборов скорость отличается в 25 раз, что тоже очень неплохо. Результаты совпадают практически на 100%, единственное отличие в значении СтопЛосс в третьем тесте. Прибыльность при этом опять же осталась максимальной. Теперь попробуем
уменьшить количество переборов и уменьшить время тестирования. Для
этого будем использовать модель "контрольные точки". Тест 3
Таблица результатов:
Тут ситуация изменилась. Время оптимизации совпадает (небольшая погрешность допускается), а результаты идентичны. Это связано с тем, что оптимизация состояла всего из 1331 перебора, а такого количества тестов для применения генетических алгоритмов просто мало. Они не успевают "разогнаться" - выигрыш в скорости оптимизации достигается за счёт отсеивания заведомо убыточных комбинаций параметров, а при таком количестве вариантов генетические алгоритмы не могут определить, какие "родители" (комбинации параметров) дадут плохое "потомство". Использовать их, соответственно, смысла нет. 4. ВыводыГенетические алгоритмы - прекрасное дополнение к оптимизатору стратегий МТ 4. Ускорение оптимизации при большом количестве переборов просто фантастическое, результаты совпадают с результатами обычной оптимизации.Теперь нет смысла использовать полный перебор параметров. Генетические алгоритмы найдут лучший результат быстрее и не менее качественно. 5. ПослесловиеУже после написания статьи я для удовлетворения собственного любопытства запустил оптимизацию CrossMACD_DeLuxe по всем параметрам. Количество комбинаций составило более ста миллионов (103 306 896). С использованием генетических алгоритмов оптимизация заняла всего 17 часов, в то время как оптимизация с перебором всех параметров закончилась бы, предположительно, через 35 лет (301 223 часа).Делайте выводы. Предупреждение:
все права на данные материалы
принадлежат MetaQuotes Software Corp. Полная или частичная перепечатка запрещена.
в тесте 1 я насчитал 11*16*11*6*6=69696 переборов,а в тесте2 результат сошелся,или я чего-то путаю?
интересно , а сколько переборов максимально может обработать оптимизатор? я пробовал 10^9 берёт, а 20^20 нет.
20.03.2008 20:14 valera66
nikkei писал(а): Когда я писал статью, генетические алгоритмы только появились.
Через некоторое время (кажется, в следующем билде) добавили
ориентировочное количество проходов именно для генетики, теперь
есть 2 цифры - общее кол-во и кол-во проходов до завершения.Komposter, получаеться что тестер посчитал суммарное время теста одинаково(сравнение прямого перебора и генетического алгоритма), а затем оптимизация завершилась раньше обозначенного максимального времени. nikkei писал(а): Когда мало памяти тестер так и говорит ;) Я сначала подумал что не хватает оперативки (но наверное в логах должно писаться- "мало памяти").
25.12.2006 13:16 komposter
Komposter, получаеться что тестер посчитал суммарное время теста
одинаково(сравнение прямого перебора и генетического алгоритма),
а затем оптимизация завершилась раньше обозначенного максимального
времени. Я сначала подумал что не хватает оперативки (но наверное
в логах должно писаться- "мало памяти").
2006.10.16 23:40:12 There were 6325 passes done during optimization, 1027 results have been discarded as insignificant 2006.10.16 23:40:12 MACD Sample: optimization stopped, 9291 cache records were used, 9291 cache records rejected У меня было написано, что- то подобное. А вот это уже пример логов правильной оптимизации.
25.12.2006 12:13 nikkei
Вот интересное обсуждение генетических алгоритмов:
75000 вариантов - 4GB оперативки и 4GB дискового кэша мало??? Желательно все дочитать до конца - масса полезной информации и подробностей о тестере стратегий МетаТрейдера.
17.10.2006 00:23 Renat
4 комментария
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||