Обсуждение статьи "Популяционные алгоритмы оптимизации: Алгоритм растущих деревьев (Saplings Sowing and Growing up — SSG)" - страница 6

 
Andrey Dik #:
вот! как раз пытаюсь донести, что можно избежать пяти оптимизаций и сразу, в течении одной оптимизации попасть в зелёную область. для этого нужно ввести главную ФФ над младшей ФФ. главная ФФ как раз должна описать зелёную область и является глобальным максимумом.
тоесть, ФФ на картинке не является тем что нам нужно, нам нужно ФФ где нужно искать глобальный максимум.
сложно это на пальцах обьяснить. но можно, в статье))

Понятно, что при грамотном подходе никто по тому же критерию баланса не оптимизирует. Стараются учесть отсутствие пересидок, статистически значимое количество сделок и т.д.

Немного по теме писал здесь.

Должна получиться подобная картинка из сделок в каждом проходе. Здесь видны сделки-изгои и кирпичи ТС.


Для формирования критерия оптимизации желательно выкидывать сделки-отщепенцы.

Но это тема формирования удобной ФФ. При этом даже если она будет полностью без пиков и иметь холмистую природу, то эти холмы одним завершенным проходом найдены не будут. Поэтому и делаю так.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Обсуждение статьи "Популяционные алгоритмы оптимизации: Алгоритм растущих деревьев (Saplings Sowing and Growing up — SSG)"

fxsaber, 2023.03.22 00:32

Косвенно нахожу локальные через принудительное прерывание оптимизации при задействовании большого количества ядер. Грубо говоря, в Тестере 20 агентов, прерываю оптимизацию после 2000 проходов.

Но это очень грубо. Надежнее выбрасывать лучший холм и повторять оптимизацию.
Уменьшаем выборку - увеличиваем стат. значимость?
Уменьшаем выборку - увеличиваем стат. значимость?
  • 2022.01.28
  • www.mql5.com
Торговый робот должен (условно) удовлетворять следующим условиям: Совершать достаточно много сделок на интервале настройки (оптимизации). Показывать столь же стабильный результат вне интервала
 
fxsaber #:

Отличная визуализация того, что можно видеть во время полного перебора ТС. Конечно, здесь 3D - два входных параметра. Но наглядно видны горки/шипы. Для ТС шипы, как правило, зло. А вот вершины холмов - самое интересное.

forest

По поводу шипов зла. Для ТС это случайности - жесткая подгонка (вне зависимости от критерия оптимизации).

Если вы будете для ТС с двумя параметрами каждый день в течении года или двух производить полную оптимизацию с получением подобного кадра, а потом из этих кадров сформируете видео, то получится что-то вроде такого:


Было бы наивно полагать что поверхность будет оставаться статичной. 
Поэтому напрашиваеся вопрос:
А смысл?

 
Andrey Dik #:
для подобных специфических задач можно подумать о механизме "выкидывания", когда из слишком разросшейся группы выпинывают собратьев, которые вынуждены создавать кучковпния в отдельных екстремумах.

Честно говоря, это не специфическая хотелка, а инструмент, который обязан быть штатно в серьезном софте для алготрейдинга - Тестере.

Но реально самому затюнинговать

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Обсуждение статьи "Популяционные алгоритмы оптимизации: Алгоритм растущих деревьев (Saplings Sowing and Growing up — SSG)"

fxsaber, 2023.03.23 19:51

при наличии данных вырезаемой области можно очень легко (даже в штатном Тестере) проводить оптимизацию без этого места пространства.

Но мне совсем не хватает компетенции, как определить область вокруг найденного глобального максимума в результатах ГА.

Алгоритмы ГА совсем разные. Допускаю, что если за 1000 проходов найден максимум и алгоритм остановился, то последние 100 проходов - точки вокруг найденного максимума. Тогда просто берем эти 100 точек и сразу формируем область для выбрасывания в будущих оптимизациях.

В принципе, если тот же штатный ГА запущен только один раз, то последние 100 записей в opt-файле и должны быть этими точками. Однако, я не уверен, что это так при многоядерном подходе. Поэтому нужна какая-то кластеризация. Статей на эту тему довольно много, нужно изучать.

 
Nikolai Semko #:

Было бы наивно полагать что поверхность будет оставаться статичной.

Мне нужна относительно статичная точка в этой бурлящей поверхности. Такие находил...

И все же не стоит сводить тему к умению и смыслу варить. Нужна кастрюля для варки.

 
fxsaber #:

И все же не стоит сводить тему к умению и смыслу варить. Нужна кастрюля для варки.

+++

 
fxsaber #:

Честно говоря, это не специфическая хотелка, а инструмент, который обязан быть штатно в серьезном софте для алготрейдинга - Тестере.

Но реально самому затюнинговать

Алгоритмы ГА совсем разные. Допускаю, что если за 1000 проходов найден максимум и алгоритм остановился, то последние 100 проходов - точки вокруг найденного максимума. Тогда просто берем эти 100 точек и сразу формируем область для выбрасывания в будущих оптимизациях.

В принципе, если тот же штатный ГА запущен только один раз, то последние 100 записей в opt-файле и должны быть этими точками. Однако, я не уверен, что это так при многоядерном подходе. Поэтому нужна какая-то кластеризация. Статей на эту тему довольно много, нужно изучать.


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

 
Последние 100 записей не будут соответствовать разным пикам,   они все будут сосредоточены вокруг одного последнего найденого пика
 
Andrey Dik #:

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

посему, нахожу полезным идею создания такой рейтинговой таблицы.

За рейтинг! Больше объективности. Но я пока слабо въехал. Все же исхожу их практических задач, с которыми сталкиваюсь.

специфической задачи - имел ввиду конкретно такой, а не редкой. есть потребность, значит это должно быть учтено в платформе, желательно.

В Тестере добавил бы галочку "выбросить области найденных максимумов предыдущих оптимизаций".

Тогда первый запуск без этой галки, остальные - с включенной. Сделали 20 оптимизаций - получили 20 пиков.

Далее зарядили их в OOS-проверку (20 одиночных прогонов) и дали им оценку, заодно и оценку всей ТС/ФФ.

 
fxsaber #:

Мне нужна относительно статичная точка в этой бурлящей поверхности. Такие находил...

но все же, думаю, нахождение таких точек имел вероятностный характер.
Мой посыл в том, что не должно быть на входе ТС входных параметров, требующих "оптимизации". Такие параметры превращают ТС в монетку.
Даже внутренняя самооптимизация внутренних параметров - тоже самообман.

 
fxsaber #:

В Тестере добавил бы галочку "выбросить области найденных максимумов предыдущих оптимизаций".

Самостоятельная реализация:

  1. Считал последний opt-файл и сформировал область из последних 100 проходов (понятно, что это не совсем правильно).
  2. Дозаписал эту область в Common-файл.
  3. В советнике в OnInit идет считывание этих областей из Common-файла. И там же проверка, что если входные попали в эти области, делаем INIT_FAILED.
Bсе готово! Важно только правильно сформировать область в п.1.