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

 
Aliaksandr Hryshyn:
Мне нужны именно диапазоны и шаг. Оптимизация потом. Это связано с определённым разделением задачи автоматического поиска стратегии...
Я и говорю про диапазон и шаг. Вы же сами  казали, что мы ничего не знаем про советник, значит, единственный способ - пробовать и атвоматически определять результат.
 
Yuri Evseenkov:

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

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

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

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

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

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

Наверное так и будет)).
 
Maxim Kuznetsov:
 

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

Да я просто написал, не подумав как следует )  А именно, что надо будет взять в качестве фитнес-функции при генетической оптимизации в данном случае.  Что-то не соображу.
 
Aliaksandr Hryshyn:
Наверное так и будет)).

И как получилось реализовать задачу? Я сейчас тоже бьюсь над подобной, при этом задача определения граничных условий стоит даже если советник не закрыт как черный ящик, а вы сами его писали)

Т.е. некоторые параметры модели имеют возможный диапазон слишком широкий, при этом диапазон на котором модель имеет смысл гораздо уже, определить второй можно только экспериментами и анализом работы модели.

Ищу метод определения диапазона ГУ до прогонов модели на выборке.

 

НУ вариант первый - Допустим есть переменная double Factor0  = 10.0. Перебор можно сделать с коэффициентом например 1.2  Т.е. пишем input double Factor  = 0.2 и в расчет подставляем Factor0= Factor *1.2. Можно вынести и 2 переменные. и все умножать на коэффциент чтоб провести грубую оптимизацию, а потом коэффциент ставим 1 и выставляем параметры близкие к максимальным результатам. 

2. Пишем что-то типа input double Factor__0_1__10_0 = 0.5; Соответсвенно юзверь видит что ркомендованый  диапазон для оптимимзации с 0,1 до 10,0.

3. Пользуем комментарии Пишем типа - input double Factor= 0.5 // Opmization 0.1/0.1/10/ 

4. Пользуем ParameterGetRange Прописываем все что нужно в OnTesterInit(), При этом есть возможность создавать собственные сценарии оптимизации. 


 
Dmitiry Ananiev, вашу бы инструкцию в правила местного МарГета, это бы приблизило его к Макету. Но вопрос остаётся - как самому разрабу правильно их определить.
 
Aleksey Mavrin:
Dmitiry Ananiev, вашу бы инструкцию в правила местного МарГета, это бы приблизило его к Макету. Но вопрос остаётся - как самому разрабу правильно их определить.

так это зависит от идеи которая заложена в робот. Если я использую в роботе какйото коэффициент то я уже предтсавляю какой он примерно должен быть. 
Если это параметр индикатора МА, то врядли счет пойдет на тысячи. Поэтому оптимизацию можно ставить от 1 до 300 к примеру. А чаще и до 100 достаточно при этом разумно применять перебор с коэффциентом. Не думаю что период МА 178 сильно будет отличаться от периода в 179 или в 177. Тут уже можно делать перебор с шагом 5 или даже 10. ЗА счет этого можно сэкономить очень много времени Одно дело перебирать параметр 200 раз - другое дело - 50 раз. 
Опять же можно использовать вариант 1.2. Т.е. ввести коэффицент для всех перменных для грубой оптмимзации. 

 
Aleksey Mavrin:
Dmitiry Ananiev, вашу бы инструкцию в правила местного МарГета, это бы приблизило его к Макету. Но вопрос остаётся - как самому разрабу правильно их определить.

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

 
Dmitiry Ananiev:

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

Я видел что не всегда и не совсем. видимо сейчас требования послабляют, деньги  то всем нужны)

Dmitiry Ananiev:

так это зависит от идеи которая заложена в робот. Если я использую в роботе какйото коэффициент то я уже предтсавляю какой он примерно должен быть. 
Если это параметр индикатора МА, то врядли счет пойдет на тысячи. Поэтому оптимизацию можно ставить от 1 до 300 к примеру. А чаще и до 100 достаточно при этом разумно применять перебор с коэффциентом. Не думаю что период МА 178 сильно будет отличаться от периода в 179 или в 177. Тут уже можно делать перебор с шагом 5 или даже 10. ЗА счет этого можно сэкономить очень много времени Одно дело перебирать параметр 200 раз - другое дело - 50 раз. 
Опять же можно использовать вариант 1.2. Т.е. ввести коэффицент для всех перменных для грубой оптмимзации. 

Вот тот вариант чесгря не совсем понял, чем отличие от задания шага перебора? 

А вообще вы всё верно указали - ГУ (граничные условия) зависят от сути модели и заложенных в неё гипотез. Вот только обычно сформулировать гипотезы получается несколько расплывчато, вы ведь тоже ТОЧНО не сможете сказать максимальный период МА в вашем примере, не так ли? 300? Почему? т.е. сформулируйте гипотезу :) Я к тому что есть ведь вероятность что эта ваша стратегия "вдруг" при периоде МА 1000 покажет супер-результат, Уверены что этого не может быть? Сможете доказать теоретически?

Если нет, то единственный выход проверить практически, вот мы и пришли обратно к перебору? Это простейший пример, но на практике модели ведь куда сложнее, чувствую есть путь верный, заключающийся в первоначальном определение взаимной корреляции параметров и грубого определения (предположения) характера зависимостей. Так мы можем найти ГУ после которых функции зависимостей с высокой вероятностью затухают. Верный путь, но не факт что более быстрый чем брут-форс)

 
Aleksey Mavrin:


Вот тот вариант чесгря не совсем понял, чем отличие от задания шага перебора? 


Вот формула не совсем правильная тут наверно лучше число 1.05 возводить в степень 5-10 -20 - т.д. 
 Суть в том чтоб в начале перебор шел 1-2-3-4-5-6- с 50 до 100 :   55-60-65-70 с 200 : 210-220 - 230 и т.д.

Вообщем по уму прописать условия через case: или через if

Т.е. если парметр равен 10  то реальное значение = 10. Если парамтер = 20, то значение равно 50 и т.д. 

Причина обращения: