Оптимизация по двум результатам

 
Нужно оптимизировать робота так, чтобы сразу два результата были наиболее оптимальными, а не только один из них. В качестве этих результатов у меня выступают, количество выигрышей из 100 сделок и отношение выигрыша к проигрышу. Когда хорошим является один из них, например профит/убыток равен 2 к 1, в то же время, количество выигрышей из 100 составляет только 44, что очень плохо. Повышаю количество выигрышей из 100 больше 50, падает прибыль/убыток. Все это на форвард тесте дает не очень хороший результат. Как оптимизировать эксперта, чтобы оба результата являлись оптимальными, то есть, выбрать золотую середину? Возможно, есть известные способы?
 
Mihail Matkovskij:
Нужно оптимизировать робота так, чтобы сразу два результата были наиболее оптимальными, а не только один из них. В качестве этих результатов у меня выступают, количество выигрышей из 100 сделок и отношение выигрыша к проигрышу. Когда хорошим является один из них, например профит/убыток равен 2 к 1, в то же время, количество выигрышей из 100 составляет только 44, что очень плохо. Повышаю количество выигрышей из 100 больше 50, падает прибыль/убыток. Все это на форвард тесте дает не очень хороший результат. Как оптимизировать эксперта, чтобы оба результата являлись оптимальными, то есть, выбрать золотую середину? Возможно, есть известные способы?

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

 
Vladimir:

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

вот вы и замудрили)))))
у меня подобный вопрос, и той же области, в тестере не работает генетический алгоритм, ссылается на функцию онТестер, которой в коде нет.
задача, оптимизировать значения индюков. есть ли на форуме обсуждение данного вопроса? просто я новичёк. написал советник на мт4, потом изза оптимизации переписал его на мт5. и решение новой задачи, которая посложнее, извините, сначала гуглю, потом у людей спрашиваю... что примерно должно быть в коде? и как онТестер расположен в советнике? или для тестера отдельный советник надо написать?

 

Mihail Matkovskij:

Как оптимизировать эксперта, чтобы оба результата являлись оптимальными, то есть, выбрать золотую середину? Возможно, есть известные способы?

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

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

 
Sergey Lobzankin:

вот вы и замудрили)))))
у меня подобный вопрос, и той же области, в тестере не работает генетический алгоритм, ссылается на функцию онТестер, которой в коде нет.
задача, оптимизировать значения индюков. есть ли на форуме обсуждение данного вопроса? просто я новичёк. написал советник на мт4, потом изза оптимизации переписал его на мт5. и решение новой задачи, которая посложнее, извините, сначала гуглю, потом у людей спрашиваю... что примерно должно быть в коде? и как онТестер расположен в советнике? или для тестера отдельный советник надо написать?

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

 
Georgiy Merts:

Ты почитай документацию. OnTester()

...

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

У вас нигде не завалялось банального примера, ну с той же машкой, как к ней обращаться в онТестере, по хенду? или фунция соответствующая для обращения?
ААААаааааа,... погодите, так можно же код советника в терминале той же МА посмотреть)))))
спасибо)))

А.. нет))) во встроенном советнике нет онТестер
зато на глобальном уровне ещё до онИнит есть:
double TradeSizeOptimized(void)

и прочее бла бла бла


 

мужчины наимудрейшие, подскажите пожалуйста, почему оптимизатор не запускается? говорит шо не выбраны параметры или критерии оптимизации
дословно:  "FS 2 23:37:09.668 Tester no optimized parameter selected, please check input(s) to be optimized and set start, step and stop values"

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


double OnTester()
  {
 double  ret1 =   MA_1_Period  ;       
 double  ret2 =   MA_1_Shift   ;       
 double  ret3 =   MA_2_Period  ;      
 double  ret4 =   MA_2_Shift   ;       
 double  ret5 =   Stoch_K      ;      
 double  ret6 =   Stoch_D      ; 
 double  ret7 =   Stoch_Slow   ;
     


   return ret1 && ret2 &&ret3 && ret4 && ret5 && ret6 && ret7;
  }

пробовал возвращать другим способом

return (ret1+ret2+ret3+ret4+ret5+ret6+ret7);

так компилятор тоже не ругается, но ругается тестер стратегии, не запускает оптимизер


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

так вот, там такой вкладки не появилось когда я добавил онТестер

 

я понимаю, мои вопросы могут звучать для вас несколько диковато, ибо я ведь действительно ничего не понимаю, 
но у меня постепенно появляются подозрения о том что все эти параметры, которые я вынес, нужно оптимизировать относительно тех критериев, которые представлены в тестере: максимальный баланс+профит, баланс+просадка... и тд. 
допустим, вы так и посоветуете, но как мне привести мои параметры к соотношению этих критериев? из справки всё очень непрозрачно, такое ощущение, что справка это такая же номинализация как слово УЮТ или КОМФОРТ, понятно что это термины из позитивного мироощущения, но для каждого  ума это лишь оболочка... пустая... для наполнения собственным смыслом.
вот и фигачу я в эту оболочку из справки всё что ни попадя, только всё это не работает за частую. это ж компьютер, которому нужно объяснять на конкретном языке, ты туда, а ты вот сюда.

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

 
Почитайте тут для начала, и в терминале хорошая справка.
 
Sergey Lobzankin:

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

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

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

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 

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

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