предложения и вопросы по тестеру стратегий и не только

 

Здравствуйте.

Очень давно не писал на форумах, но как говорицо - накопилось.

Во первых, хочу выразить благодарность разработчикам МТ за их продукт. Всетаки (вспоминая свои первые эмоциональные впечатления после мт3) продукт получился качественным, функциональным и удобным.

Но у меня накопилась несколько вопросов, собственно которых ради и пишу.

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

например есть множество результатов оптимизатора. однако количество сделов варьируется от 500 до 50000, просадка и прибыль ессно тоже. например проход 1 дает +500 при просадке в 300(к=1.66) и 20 сделках, проход 2 дает 5000 при просадке в 1500 и 500 сделках(3.33), но самым правильным проходом будет +50000 при просадке в 5500 и 3000 сделках(9.1). Однако ни по одной колонке я не смогу найти этот результат в первой десятке - только визуально. Очень хотелось бы внести именно этот критерий оценки, а в идеале - возможность именно по нему проводить оптимизацию по . (очевидно [для меня], что делать оптимизацию по мо при разбросе количества сделок в десятки раз бесполезно).

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

допустим, есть некий диапазон (скажем ширина канала, примем ее за дельту), советник построен на том, чтобы при возврате в канал на некое растояние (пусть к1=0.4 от дельты) покупаем и определяем стоп как к2 (=0.6 дельты). запускаем оптимизатор и ставим диапазон параметров к1 = 0.2...0.7, к2 = 0.4...0.9. очевидно, что при оптимизации будут просчитываться все варианты, в том числе заведомо абсурдные, когда к1>к2. сейчас я ставлю в самом начале "проверку от дурака" типа

// защита от дурака и для оптимизации
   if (kInput>=kBreak-0.005) return(0);

но при моделировании 15269933 тиков операторы инит, сравнения и возврата сработают все 15269933 раз, что конечно же некисло замедлит работу. если же вместо этого поставить оператор, принудительно завершиющий текущий проход оптимизатора, то все будет намного проще :-). В заключении замечу, что в разрабатываемом мной в данный момент эксперте таких взаимно пересекающихся пар параметров - 4ре, и это еще не предел ;-).

3. При оптимизации по генетическому алгоритму некоторые проходы не выполняются, поэтому на итоговой зелененькой картинке встречаются белые квадратики. Как мне кажется, для наглядности отрицательные и отсеяные по условию (типа макс просадки или макс маржа) результыты всетаки следует отображать каким нить другим цветом, например красным (или сделать возможность отображать их также). Зачем? Затем, что часто вокруг и внутри предполагаемой оптимальной области есть эти белые пятна. если это просто непосчитанные варианты - можно допустить, что все в порядке и это реально оптимальная облать. однако если эта облать станет бурой изза отрицательных результатов - значит высокие результаты являются элементом подгонки или случайности.

С уважением за проделанную работу и надеждой быть услышанным :-)

GameOver.

 

мда.. :-(

так че, изменений не ждать?

там работы то на час (во всяком случае по 2-3 пунктам).. нетрудно ведь сделать...

 

и еще одна просьба, все забываю о ней.

когда работает оптимизатор, начинает тормозить винда (что вполне естественно), и в попытках облегчить систему по максимому начинаешь закрывать все остальные окна. изза тормозов окно терминала вдруг прорисовываеца в тот самый момент "нажатия на крестик", в результате.. :-) именно, терминал закрываецо вместе с половиной просчитанных вариантов...

возможно ли сделать, что бы при закрытии терминала с работающим, не завершившим работу оптимизатором выдавалось окно чтото типа "работа оптимизатора не завершена. выйти без сохранения результатов?"

раза четыре так попадал.. после 3-6 часов просчета.. мелочь, а неприятно.

и по предыдущим пунктам - неужто это такие сложные задачи?

 

разработчики, ответили бы уже чтоли

типа "да, сделаем" или "не сделаем, нам лениво"

форумяне, вам не нужны улучшения, описаные выше?

 
1. Как реализовать свой критерий оптимизации
2. Пока только так:
bool error = false;
void init()
{
   if ( condition ) error = true;
}
void start()
{
   if ( error ) return;
   // код эксперта
}
Все равно быстрее проверки сложного условия на каждом тике.
3. Согласен.
 
komposter:
1. Как реализовать свой критерий оптимизации
2. Пока только так:
bool error = false;
void init()
{
   if ( condition ) error = true;
}
void start()
{
   if ( error ) return;
   // код эксперта
}
Все равно быстрее проверки сложного условия на каждом тике.
3. Согласен.


1. да, я уже читал эту статью. написано здраво, но.

а) оперировать гланды через причинное место конечно же (не спорю) можно. но вот нужно ли? ведь разработчикам это сделать намного проще.

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

2. :-) забавно, именно до этого я додумался буквально пару дней назад. но увы, это не решает проблему 19 млн тиков для каждого некорректного прогона. :-(

добавили же функцию IsTesting() , вряд ли функция stopOptimizator() сложнее в реализации. (более того, подозреваю, она есть недокументированно, ибо как то же прекращается прогон при срабатывании условий ?)

3. :-) ну хоть ктото свои пять копеек внес.

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

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

кстати (не в тему), в ходе проведения чемпионата будет ли делаться апдейт терминала, или версия будет заморожена текущей (208 билд вроде)?

 
GameOver:

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

Согласен по обоим пунктам, но "МТ4 заморожен, и новая функциональность вноситься не будет".
Поэтому ищем обходные пути (вроде бы временные).

GameOver:

2. :-) забавно, именно до этого я додумался буквально пару дней назад. но увы, это не решает проблему 19 млн тиков для каждого некорректного прогона. :-(
добавили же функцию IsTesting() , вряд ли функция stopOptimizator() сложнее в реализации. (более того, подозреваю, она есть недокументированно, ибо как то же прекращается прогон при срабатывании условий ?)

Тоже согласен. Причина нереализации, думаю, та же.

GameOver:

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

Не сталкивался, но тоже согласен.

GameOver:
кстати (не в тему), в ходе проведения чемпионата будет ли делаться апдейт терминала, или версия будет заморожена текущей (208 билд вроде)?
209
 

блин... :-(((((((

ну вот, убил все розовые надежды.. чтож, будем надеяцо что разморозят. ...

 
Проект МТ4 заморожен - мы вносим только исправления старых багов и упущений.