75000 вариантов - 4GB оперативки и 4GB дискового кэша мало??? - страница 7

 
Я провел тесты на IBM с начала 1970 по начало 2000 года, история корректная и нормализована с учетом многократных сплитов. Зазипованный файл с историей символа в HST формате приаттачен, его можно импортировать в терминал через History Center (F2) - > Import.

Вот какие первичные результаты:
  • я взял наилучшие результаты от 401 прогона и прогнал тест в МТ4 с теми же параметрами





    Что получилось (полные отчеты в приаттаченном архиве StrategyTester_Mak. zip):



    Есть серьезные расхождения в сделках - это отдельная тема. Но чистая прибыль $1664 в МТ4 более или менее похожа на чистую прибыль $1884 в Омеге.

  • далее я запустил перебор параметров с генетикой в МТ4 и получил вот такие результаты:



    Вот какой список результатов (заархивированный отчет в файле OptimizationReport.zip):



    МТ4 прошел перерасчет за 3 мин 34 сек, перебрав 15 616 вариантов из 35 млрд возможных:



    Должен уточнить, что из 15616 вариантов было 9291 повторяющихся (при скрешивании можно получить повторения) последовательностей, а из оставшихся 6325 было отброшено как бесполезные 1027 проходов. Повторяющиеся последовательности не занимают ресурсов и не требуют повторных перерасчетов, так как берутся из временного кеша. Финальные записи из логов:

    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


  • почему МТ4 вытянул профит на 3600, а TSGO в два раза меньше 1800 ?

    Я думаю, это прямое следствие сверхэкономичного подхода к оптимизации в TSGO, когда во главу угла поставлено снижение проходов. Все очень просто - TSGO провел 1000 проходов, а МТ4 - чистых 6000 (9000 из 15000 были повторными и были пропущены). Кроме того, в отчете TSGO меня сильно заинтересовал оптимизируемый параметр MATrendPeriod, где в 100 лучших вариантах этот параметр намертво залег на значении 100 (несколько раз проскальзывает 97, но это мелочи). Видно, как генетический оптимизатор попал в локальный экстремум и банально не смог оттуда вылезти. Это обычная ситуация в генетическом переборе и прямое следствие загрубления области поиска.



    А МТ4 был в тех краях, где обитают такие значения? Да, многократно был и ничего особенного там не нашел:



    Кроме математических результатов и отчетов, всегда хочется своими глазами увидеть картину распределения лучших результатов. И МетаТрейдер легко это демонстрирует при режиме визуализации "Двумерная поверхность", где по осям можно выбрать любые оптимизируемые параметры. Например, тут видно, что значение MATrendPeriod в области значений 100 явно хуже, чем значения в 12-14.



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

  • На фоне показанного завала в локальный экстремум при 1000 проходах, мысль о 100-200 оценочных прогонах никак не может приниматься серьезно.

  • Когда мы выбирали механизм достаточного перебора для своей генетики, то проводили исследования и остановились на такой простой формуле: всегда делаем 30 полных прогонов популяций, а потом в течение последующих 10 полных прогонов популяций дожидаемся гарантированного затухания приращения целевой функции. То есть, если начальная популяция 256, то первый этап - это 256 * 30 = 7680 проходов, затем еще как минимум 256 * 10 = 2560 уточнений и потом уже дополнительно до затухания. Такой избыточный механизм позволяет нам в большинстве случае вылезать из локальных экстремумов.

Возможно, мы делаем переборов чуть больше чем надо, но для обычных пользователей это более или менее гарантированный вариант работы.

Спасибо Юрию (Mak) за поднятую тему - очень интересно ее обсуждать + мы ошибки у себя поправили.
Прошу комментировать.
Файлы:
 
Ренат, я не нашел параметров вашего лучшего варианта.
Приведите их, и я проверю в Омеге какие результаты там получатся.
Подозреваю, что есть большая разница в том, что получается при тестировании в двух платформах.
А пока запущу тест в Омеге на много больше 1000 прогонов.
 

Извините, не указал параметров. Вот они:

TakeProfit=819; Lots=0.6; TrailingStop=248; MACDOpenLevel=8; MACDCloseLevel=8; MATrendPeriod=12;

Параметры можно увидеть во всплывающей подсказке у номера прохода в отчете тестера:

 
Ренат, вы опять спешите с выводами.

Сделал в TSGO 7000 прогонов.
Картинка ниже.

Обратите внимание, на номера прогонов, которые находятся в верхней части популяции.
Лучшим за 7000 прогонов оказался прогон № 618 (т.е. после 700 прогонов уже небыло никаких улучшений)




Прогнал в Омеге ваши лучшие найденные параметры.
Получилось вот что :((



Видимо есть существенная разница в работе систем или тестеров или в данных.
Возможно я не совсем корректно перенес систему в Омегу ...
Тут нельзя перенести один в один, Омега работает по другому.

Но в любом случае ваш выводы о том,
что TSGO не нашел в два раза лучшее решение и застрял в локальном максимуме неверны.
TSGO и не мог найти такую систему, поскольку она в моем тесте с Омегой убыточна.
 
Да, я заметил, что у Вас позиции открываются там, где им не нужно открываться. Проверьте вручную пять первых сделок - сразу заметите.
IBM я взял с яху, мне пришлось самостоятельно просплитовать 4 или 5 раз дробление акций, чтобы получить нормализованные данные. Они полностью совпали с Вашей историей.

Видимо, надо начинать заново.
 
Renat:
Да, я заметил, что у Вас позиции открываются там, где им не нужно открываться. Проверьте вручную пять первых сделок - сразу заметите.
IBM я взял с яху, мне пришлось самостоятельно просплитовать 4 или 5 раз дробление акций, чтобы получить нормализованные данные. Они полностью совпали с Вашей историей.

Видимо, надо начинать заново.
Мне кажется что несовпадение результатов не принципиально.
Разные тестеры и в общем разные системы ..

Любой генетический алгоритм - это случайный поиск.
От просто случайного поиска генетика отличается тем,
что функция распределения параметров равномерная в простом случайном поиске
в генетике является неравномерной и меняющейся по мере поиска.

Это значительно увеличивает скорость поиска в генетике по сравнению с просто случайным поиском.
В этом смысле все генетические оптимизаторы одинаковы.
 
Привет, уважаемые!

Прошу прощения за off-topic, но от непонятных терминов у меня начинается сильная зевота и головная боль. Не могли бы Вы, Renat, в двух словах пояснить, что такое конь в сферическом вакууме и за что его туда посадили?

Тема крайне интересна для меня, так как и сам недавно начал юзать GO для оптимизации собственного эксперта и очень желаю понять пределы применения GO. Только у меня не совсем MACD, а просто два мувинга на основе Zero Lag MA и с двумя гистерезисами ("люфтами" по терминологии статьи 'Генетические алгоритмы в MetaTrader 4. Сравнение с прямым перебором оптимизатора') на вход и выход из позиции. Пока результаты не слишком вдохновляют, но надежда есть. Думаю вскоре дополнить своего эксперта новыми фильтрами. Ну а пока оптимизатор мне нравится...
 
Mathemat:

... что такое конь в сферическом вакууме и за что его туда посадили?

Ну вообще-то тут Renat высказался немного утрированно. Реально конечно не столь принципиально конь или лошадь. А по поводу сферического вакуума, то тут все просто - берется сфера достаточно большого диаметра (и достаточной прочности), туда помещается конь/лошадь и откачивается воздух. Вакуум внутри сферы принимает сферическую форму - отсюда термин сферический вакуум. Естественно надо учитывать погрешности измерений, ибо вакуум реально не получается абсолютным и сфера не абсолютно сферически-гладкая, но в принципе погрешность не сильно влияет на результаты измерений.
Да, не следует забывать что конь/лошадь в результате эксперимента естественно дохнет. Увы нет ничего идеального в этом мире. :)

P.S. Ну а посадили естественно ради эксперимента. Цель эксперимента не раскрывается, так сказать ноу-хау. :)
 
Странно, я воспринимал как сферический конь в вакууме. То есть, он и так круглый, а в вакууме вообше не реально разобрать где у него что :)
 

"Сферический конь в вакууме" - это идиома, возникшая в сети ФИДО в 90-е годы прошлого столетия. Обозначает труднодостижимые идеальные условия эксперимента или эксплуатации.

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

А знаете ли вы, что...

  • У сферического коня абсолютно чёрное тело.
  • Сферический конь дышит идеальным газом.
  • Ржание сферического коня представляет собой одиночную гармонику и распространяется без рассеяния.
  • Сферический конь пасётся на однородных полях.
  • Когда сферический конь скачет, его траектория описывается циклоидой.
  • Копыта сферического коня соударяются с плоской горизонтальной поверхностью абсолютно упруго.
  • Сферический конь с вероятностью единица за конечное время выберется из потенциальной ямы, в которую угодил.
  • Чтобы сесть на сферического коня верхом, нужно найти седловую точку. Сопротивление коня в этом случае пренебрежимо мало.
  • Если смотреть с бесконечно удалённой трибуны, сферический конь представляется материальной точкой.
  • Задача о причёсывании шерсти сферического коня неразрешима.
  • Сферический конь движется в вакууме равномерно и прямолинейно.
  • Сферический конь не нуждается в сферической лошади, так как существует в умозрительном пространстве неограниченно долго.
  • Проекция единичного сферического коня на n-мерное пространство описывается уравнением r2 = 1.
  • Лошадиная сила — Сила, которую развивает сферический конь диаметром 1 метр и массой 1 кг.
  • Причина обращения: