Автоматический выбор диапазона параметров для оптимизации

 

Какие есть идеи по поводу автоматического выбора диапазона параметров и шага для оптимизации советника. Предположим, что нам не известен принцип работы советника, как можно в автоматическом режиме выбрать диапазоны параметров для оптимизации советника. Интересует не сам способ реализации в терминале, а только алгоритм/принцип.

Основные особенности и ограничения задачи:

  • есть параметры, при которых алгоритм анализа рынка в советнике выдаёт один и тот же ответ на протяжении всей истории, например, всегда отвечает утвердительно на вопрос, входить в рынок или нет;
  • тейкпрофит или стоплосс может быть очень большим, что практически аналогично отсутствию их, или вообще не реагировать на изменение параметров;
  • целые числа используются пока только в качестве индекса таймсерии при доступе к значениям индикаторов, максимальный "взгляд" в историю ограничен, поэтому тут всё понятно с диапазонами и шагом;

Или можно представить задачу в более расширенном виде. Стратегия в советнике состоит из определённых функций, которые между собой связаны, имеется доступ ко всем функциям и информации о связях между ними. Функции могут связываться с другими функциями, индикаторами и константами. Константы являются оптимизируемые параметры. Вопрос тот же, как определить в автоматическом режиме диапазон и шаг оптимизации параметров.

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

Жду интересные идеи, возможно они помогут взглянуть на задачу под другим углом, что может упростить её).

 
Aliaksandr Hryshyn:

Какие есть идеи по поводу автоматического выбора диапазона параметров и шага для оптимизации советника

Если значения напоминают гауссово по распределению, то находим область, близкую к вершине и постепенно отбрасываем невстречающиеся  минимумы до какого-то предела, одновременно увеличивая шаг или даже осталяя его прежним, т.о. уменьшая общее количество проходов.
 
Aliaksandr Hryshyn:

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

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

 
Aliaksandr Hryshyn:

Какие есть идеи по поводу автоматического выбора диапазона параметров и шага для оптимизации советника. Предположим, что нам не известен принцип работы советника, как можно в автоматическом режиме выбрать диапазоны параметров для оптимизации советника. Интересует не сам способ реализации в терминале, а только алгоритм/принцип.

Основные особенности и ограничения задачи:

  • есть параметры, при которых алгоритм анализа рынка в советнике выдаёт один и тот же ответ на протяжении всей истории, например, всегда отвечает утвердительно на вопрос, входить в рынок или нет;
  • тейкпрофит или стоплосс может быть очень большим, что практически аналогично отсутствию их, или вообще не реагировать на изменение параметров;
  • целые числа используются пока только в качестве индекса таймсерии при доступе к значениям индикаторов, максимальный "взгляд" в историю ограничен, поэтому тут всё понятно с диапазонами и шагом;

Или можно представить задачу в более расширенном виде. Стратегия в советнике состоит из определённых функций, которые между собой связаны, имеется доступ ко всем функциям и информации о связях между ними. Функции могут связываться с другими функциями, индикаторами и константами. Константы являются оптимизируемые параметры. Вопрос тот же, как определить в автоматическом режиме диапазон и шаг оптимизации параметров.

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

Жду интересные идеи, возможно они помогут взглянуть на задачу под другим углом, что может упростить её).

есть ещё нюанс на который многие(да почти все) наступают - величина периода оптимизации/тестирования. Чтобы получать более-менее достоверные результаты он должен быть не менее 10*произведение макс.периодов идикаторов. Это весьма большая величина, например если эксперт на минутках использует только Awessome Oscillator и CCI со стандартным периодом 13, выйдет 10*5*34*13=22100 минуток то есть почти месяц. И это всего два краткопериодных. Если добавите трендовую SMA с периодом 200, то дай бог чтобы хватило закаченной истории для прогонов :-)

 
Aliaksandr Hryshyn:

Какие есть идеи по поводу автоматического выбора диапазона параметров и шага для оптимизации советника. Предположим, что нам не известен принцип работы советника, как можно в автоматическом режиме выбрать диапазоны параметров для оптимизации советника. Интересует не сам способ реализации в терминале, а только алгоритм/принцип.

Основные особенности и ограничения задачи:

  • есть параметры, при которых алгоритм анализа рынка в советнике выдаёт один и тот же ответ на протяжении всей истории, например, всегда отвечает утвердительно на вопрос, входить в рынок или нет;
  • тейкпрофит или стоплосс может быть очень большим, что практически аналогично отсутствию их, или вообще не реагировать на изменение параметров;
  • целые числа используются пока только в качестве индекса таймсерии при доступе к значениям индикаторов, максимальный "взгляд" в историю ограничен, поэтому тут всё понятно с диапазонами и шагом;

Или можно представить задачу в более расширенном виде. Стратегия в советнике состоит из определённых функций, которые между собой связаны, имеется доступ ко всем функциям и информации о связях между ними. Функции могут связываться с другими функциями, индикаторами и константами. Константы являются оптимизируемые параметры. Вопрос тот же, как определить в автоматическом режиме диапазон и шаг оптимизации параметров.

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

Жду интересные идеи, возможно они помогут взглянуть на задачу под другим углом, что может упростить её).

Мне кажется искомые диапазоны можно найти многомерной оптимизацией.

Допустим нужно найти максимальный профит при параметрах х1, х2, х3, ...хn.

Применяем метод координатного спуска. Сначало диапазоны максимальны. Ищем максимум поочередно.

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

Затем ищем значения х2, подставляя найденный х1 и фиксированные хn и т.д

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

 
Youri Tarshecki:
Если значения напоминают гауссово по распределению, то находим область, близкую к вершине и постепенно отбрасываем невстречающиеся  минимумы до какого-то предела, одновременно увеличивая шаг или даже осталяя его прежним, т.о. уменьшая общее количество проходов.
Мне нужны именно диапазоны и шаг. Оптимизация потом. Это связано с определённым разделением задачи автоматического поиска стратегии...
 
Yuri Evseenkov:

Мне кажется искомые диапазоны можно найти многомерной оптимизацией.

Допустим нужно найти максимальный профит при параметрах х1, х2, х3, ...хn.

Применяем метод координатного спуска. Сначало диапазоны максимальны. Ищем максимум поочередно.

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

Затем ищем значения х2, подставляя найденный х1 и фиксированные хn и т.д

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

может (и будет) сбоить если оптимумов больше 1-го. При большом числе параметров и их макс.диапазонах это почти всегда. Тут первым шагом или полностью строить DecisionCube (то есть пройти по всем параметрам с шагом скажем 1/10) или методы МонтеКарло, то есть более-менее лоцировать области в которые потом спускаться.
 
Alexey Navoykov:

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

Вот смотрите: есть некоторое множество функций которые могут иметь параметры, функции отвечают на вопрос, нужно ли входить в рынок, т.е. результатом их является значение да или нет, ещё этот же набор функций отвечает на вопрос о выходе с рынка, но мне нужно найти хорошее сочетание двух функций с набора. В таком случае диапазон можно искать не используя всю историю котировок, а, например 10% от её. И ещё, потом, можно посчитать некоторую статистику "срабатывания" чтобы на раннем этапе исключить функцию. Думаю, что уже видна экономия вычислительных ресурсов.
 
Maxim Kuznetsov:

есть ещё нюанс на который многие(да почти все) наступают - величина периода оптимизации/тестирования. Чтобы получать более-менее достоверные результаты он должен быть не менее 10*произведение макс.периодов идикаторов. Это весьма большая величина, например если эксперт на минутках использует только Awessome Oscillator и CCI со стандартным периодом 13, выйдет 10*5*34*13=22100 минуток то есть почти месяц. И это всего два краткопериодных. Если добавите трендовую SMA с периодом 200, то дай бог чтобы хватило закаченной истории для прогонов :-)

Надо присмотреться)).
 
Maxim Kuznetsov:
может (и будет) сбоить если оптимумов больше 1-го. При большом числе параметров и их макс.диапазонах это почти всегда. Тут первым шагом или полностью строить DecisionCube (то есть пройти по всем параметрам с шагом скажем 1/10) или методы МонтеКарло, то есть более-менее лоцировать области в которые потом спускаться.

L Да можно хоть полным перебором , если ресурсы и время позволяет. Просто по координатному спуску можно ранжировать по очереди параметры и скорость на порядки больше. Да и тут есть возможные подвохи. Можно пропустиь какой то локальный оптимум по какой то переменной.

Но топикстартер, как я понял, ставит задачу поиска диапазона не зондируя почву, или взяв пробы на ограниченном участке.

 
Alexey Navoykov:
Можно обойтись и без математики, а обычным генетическим алгоритмом. В качестве целевой функции берём максимум/минимум какого-то параметра.  Итого нужно будет провести 2xN таких оптимизаций (где N - количество параметров)

можно, но (по крайней мере) на 4-ке генетика как-то неравномерно по периоду работает..подгоняет к началу/концу и потом при тесте это на графике видно - рост,плато/просадка, снова рост..и отсюда приходится гонять back/forward чтобы проверить её результаты

PS/ получилось ответить на едва мелькнушее и сразу удалённое сообщение :-)