Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Скажите пожалуйста, на сколько глубокие знания в математике нужно иметь, перед тем как приступать к изучению ГА?
Спасибо!
4-6 классы школы.
Эт помним :)
Посоветуйте, какие книги прочитать и в какой последовательности?
Предлагаю в этой ветке писать о вопросах и достижениях сообщества в указанной области, делиться кодами.
У меня есть вопрос к специалистам. Кто-нибудь реализовал алгоритм дифференциальной эволюции для МТ(в виде универсальной функции)? Алгоритм предназначен для численного поиска минимума или максимума функции, когда сделать аналитически это трудно или нельзя. Алгоритм известен с 90х годов, довольно полезный и не сложный. В кодобазе он мне не встречался. Кто-то может поделиться? Если нет, то выложу свой вариант, когда напишу, но как скоро это будет - не знаю. Интересны и другие реализованные ГА, осуществляющие эту задачу (желательно попроще, без наворотов, чтобы каждый мог разобраться и под себя изменть). Также интересен опыт, насколько хорошо такие алгоритмы справляются с указанной задачей для много-экстремальных функций.
Так вот же: http://www.icsi.berkeley.edu/~storn/code.html
Можно длл скомпилировать, можно переписать на MQL почти один в один : есть код и для С, и для С++.
Эт помним :)
Посоветуйте, какие книги прочитать и в какой последовательности?
Не читайте книги о ГА, мой Вам добрый совет - воды много, а сути мало, будете только пудрить себе мозги и всё. Я ни одну из книг о ГА не дочитал и до середины по этой причине.
Прошу прощения, за нескромность (скромность не будет причиной моей смерти это точно), прочитайте лучше мою статью о ГА. Разберите код по косточкам - толку будет намного больше. А может быть даже найдете какие нибудь ещё ошибки/баги, как недавно очень помог мне Serj_Che, за что ему большое спасибо. Скоро обновлю библиотеку в статье и сдесь в кодабазе.
PS Просто удивительно, сколько людей качают из кодабазы но не смотрят в код. Иначе давно уже последняя из найденных ошибок была обнаружена, хотя, вполне возможно, человеков часто ломает написать автору об найденной ошибке.
Мой вклад - качественный генератор равномерно распределенных псевдо-случайных чисел из библиотеки сайта ALGLIB Project. Обращаю ваше внимание, что при продаже этого кода сторонним лицам, а не себе - необходимо связаться с автором проекта и получить лицензию. Код на MT5, 4-ку я не знаю, энтузиасты могут переписать.
Мой вклад - качественный генератор равномерно распределенных псевдо-случайных чисел из библиотеки сайта ALGLIB Project.
Еще вариант.
Гаусс, значит - неравномерное распределение? Тоже пригодится. Спасибо.
Гаусс, значит - неравномерное распределение? Тоже пригодится. Спасибо.
Нормальное распределение.
Простой генератор равномерного - MathRand().
Почему только двумерный?
1) Для алгоритмов оптимизации бессмысленно сравнивать время их работы, так как основное время уходит на вычисление ФФ.
Поэтому важнейшим показателем является количество запусков ФФ. Вторым показателем, связанным с первым, является сходимость алгоритма. Поэтому лучше говорить так: в среднем, при 1000 запусках ФФ в каждом испытании, при 100 испытаниях, нахождение точного значения экстремума составило 95%. Другими словами, вероятность нахождения точного значения экстремума составляет 95% и для этого понадобится 1000 запусков ФФ.
2) Размер популяции и их количество не корректно выставлять одинаковыми у сравниваемых алгоритмов, так как поисковые свойства алгоритмов зависят от свойств генетических операторов, реализованных в них, по большей части, а не от размера популяции. То есть, какой то алгоритм при меньшем размере популяции может сходится лучше и при меньшем количестве запусков ФФ чем другой.
3) В виду первых двух пунктов нет смысла сравнивать железо, так как оно никак не влияет на поисковые качества алгоритмов.
Подытоживая, можно использовать два варианта тестовых условий для алгоритма:
1) При каком наименьшем количестве запусков в среднем алгоритм сходится в 100% случаях?
2) Задать заведомо "жесткое" небольшое количество запусков ФФ, например 500, и сравнивать среднеквадратичную ошибку у алгоритмов. (алгоритм должен при не более 500 запусках показывать наименьшую ошибку)
Вот два четких критерия оценки, при которых получится полноценная и справедливая битва алгоритмов оптимизации.
Для тестовых испытаний предлагаю три функции.
1) Гладкая, непрерывная, с не дифференцируемыми экстремумами. Пример: Trapfall
2) Гладкая, непрерывная с дифференцируемыми экстремумами. Пример: Skin
3) Дискретная, непрерывная с не дифференцируемыми экстремумами. Пример: "Найти точки ZZ на на ценовом чарте, на заданном количестве баров с наибольшим суммарным количеством пунктов между точками"
PS Третья задача не по зубам "дифференциальной эволюции (дву-мерный вариант)", а возможно и первая тоже.