Оценка качества торговли методами Ван Тарпа и Сортино

Genry_05

Отдыхает
Хм, что то я не могу выбрать период истории для примера. Или вся история или ближайшая до 6 мес. Жаль я бы смог проиллюстрировать свою мысль лучше.
По умолчанию скрипт берет данные из терминала - не из стейта.
А периодом оценки будет выставленный в "История счета" интервал.
Можно использовать конкретные даты в настройках диапазона History и сделать по ним стейт.
1618399136799.png
 

PIRANHAfx

Элитный участник
По умолчанию скрипт берет данные из терминала - не из стейта.
А периодом оценки будет выставленный в "История счета" интервал.
В самой истории в терминале я не могу выставить нужный промежуток истории. Почему то не хочет выбирать период, только Стандартный, за 3 дня, неделю, месяц , 6 мес или вся история.
 

Genry_05

Отдыхает
В самой истории в терминале я не могу выставить нужный промежуток истории. Почему то не хочет выбирать период, только Стандартный, за 3 дня, неделю, месяц , 6 мес или вся история.
Надо в окне даты делать выбор, тогда он сбросит надпись "Стандартный, за 3 дня, неделю, месяц , 6 мес или вся история"
Я показал на скрине выше
 

PIRANHAfx

Элитный участник
Надо в окне даты делать выбор, тогда он сбросит надпись "Стандартный, за 3 дня, неделю, месяц , 6 мес или вся история"
Дружище, ну я ж не даун то совсем.))) Ясен красен что я ставлю дату с -по. Но не ставится, сбрасывается. Я не знаю почему.
 

PIRANHAfx

Элитный участник
Вот ставлю в истории период с 26 сентября 2018 по 31 декабря 2019.
Сбрасывает на сегодняшнюю дату и все на этом.
2021-04-14_13-21-11.png
 

PIRANHAfx

Элитный участник
О как!
Это уже по работе терминала. Скрипт-то даты не проставляет, съедает то что ему дают :)
Да терминал что то как то не так работает, ну или на стороне МТ администратора (компании) есть ограничение.
 

kudinoff

Почетный гражданин
В формуле Сортино в знаменателе должно быть количество убыточных сделок, а не всех. Нулевые доходности тоже нужно учитывать (если стратегия стагнирует на каких то периодах, это тоже не хорошо). Ну и нежелательно совсем откидывать безрисковую ставку. У нас 6% инфляции в среднем в год. В пересчете на сделку копейки, но все таки.
Вообще обычно Шарп и Сортино считаются по периодам (сутки/неделя/месяц), а не по сделкам. Нужен сопоставимый измеритель для разных стратегий (высокочастотники и долгосрок как сравнивать посдельно?)
Как раз опчу по Сортино сейчас. Genry_05, критерии по параметру quality откуда взяты?
1621673687573.png
 
Последнее редактирование:

kudinoff

Почетный гражданин
Раз такая пьянка, вот расчет по MFE/MAE в OnTester для советников

enum test { res_mfe = 0, // RES/MFE mfe_mae = 1, // MFE/MAE res_mae = 2, // RES/MAE }; input test OnTesterMod = 0; int BAR; double MAE,MFE, RES, Qex, Qen, Qua; void OnTick() { Quality(); } void Quality() { int bar; double op,cp, mae, mfe, QEntry,QExit, atr,res; int ot,oc; for(int i=OrdersHistoryTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic) { cp = OrderClosePrice(); op = OrderOpenPrice(); oc = iBarShift(_Symbol,_Period,OrderCloseTime()); ot = iBarShift(_Symbol,_Period,OrderOpenTime()); if(oc==1) { if(OrderType()==OP_BUY) { mae = (op-iLow(_Symbol,_Period,iLowest(_Symbol,_Period,MODE_LOW,ot-oc,oc))); if(mae<0) mae = 0; mfe = (iHigh(_Symbol,_Period,iHighest(_Symbol,_Period,MODE_HIGH,ot-oc,oc))-op); if(mfe<0)mfe=0; res = (cp-op); if(res > 0) QEntry = 1/(1+mae/(res)); else QEntry = 0; if(mfe >0 && res>0) QExit = (res)/mfe; else QExit = 0; // Print("QEntry "+DoubleToStr(QEntry,2)+" QExit "+DoubleToStr(QExit,2)); if(mfe>0 && mae>0)Print((res/mfe)*(mfe/mae)); MFE += mfe; MAE += mae; Qex += QExit; Qen += QEntry; RES += res; BAR += ot-oc; if(MAE>0)Qua += MFE/MAE;} if(OrderType()==OP_SELL){ res = (op-cp); mfe = (op-iLow(_Symbol,_Period,iLowest(_Symbol,_Period,MODE_LOW,ot-oc,oc))); if(mfe<0) mfe=0; mae = (iHigh(_Symbol,_Period,iHighest(_Symbol,_Period,MODE_HIGH,ot-oc,oc))-op); if(mae<0) mae = 0; if(res > 0)QEntry = 1/(1+mae/(res)); else QEntry = 0; if(mfe >0 && res>0) QExit = (res)/mfe; else QExit = 0; if(mfe>0 && mae>0)Print((res/mfe)*(mfe/mae)); MFE += mfe; MAE += mae; Qex += QExit; Qen += QEntry; RES += res; BAR += ot-oc; if(MAE>0)Qua += MFE/MAE;} } } } } double OnTester() { int a, c= 0; double trades = TesterStatistics(STAT_TRADES); double sharp_ = TesterStatistics(STAT_SHARPE_RATIO); double profit = TesterStatistics(STAT_PROFIT); double depo = TesterStatistics(STAT_INITIAL_DEPOSIT); double DD = TesterStatistics(STAT_EQUITY_DDREL_PERCENT); //if(trades<MinTrades) a = 1/c; Print("MAE "+DoubleToStr(MAE/trades,3)+" MFE "+DoubleToStr(MFE/trades,3)+" RES "+DoubleToStr(RES/trades,3)+" QEntry "+DoubleToStr(MFE/MAE,3)+" QExit "+DoubleToStr(RES/MFE,3)+" Bars "+DoubleToStr(BAR/trades,3)); if(OnTesterMod == res_mae) return(RES/MAE); if(OnTesterMod == res_mfe) return(RES/MFE); if(OnTesterMod == mfe_mae) return(MFE/MAE); }
 

Genry_05

Отдыхает
В формуле Сортино в знаменателе должно быть количество убыточных сделок, а не всех. Нулевые доходности тоже нужно учитывать (если стратегия стагнирует на каких то периодах, это тоже не хорошо).
День добрый!
Да, нулевые доходности - слабая сторона метода Сортино. В теории так:
1621723560495.png

Вообще обычно Шарп и Сортино считаются по периодам (сутки/неделя/месяц), а не по сделкам. Нужен сопоставимый измеритель для разных стратегий (высокочастотники и долгосрок как сравнивать посдельно?)
По умолчанию в скрипте используется вариант "По истории счета".
Для расчета по периодам (сутки/неделя/месяц) можно анализировать нужные временные интервалы торгового счета, выставляя соответствующий промежуток дат.
Как раз опчу по Сортино сейчас. Genry_05, критерии по параметру quality откуда взяты?
Таблицу Игорю дал Stoletov - заказчик скрипта. Сам я видел другие критерии оценки, правда для фондового рынка, где при показателе 0.89 работа трейдера оценивалась как:
"Это не очень высокий показатель, характеризующий недостаточно эффективную работу трейдера при повышенных рисках. " Заключение было дано при доходности в 10% годовых для пакета гособлигаций.
Хорошим считается значение от единицы и выше. А если показатель принимает значение от 3-х единиц, инвестиционная стратегия считается оптимальной (то есть, минимальный риск при максимально возможной прибыли).
По форе рекомендации были такие:
Так же, как и для фондовых инвестиций, – на Форекс оптимальное значение показателя должно составлять несколько единиц. Например, значение 3,83 говорит о том, что для данной категории сделок вероятность получения убытка по итогам анализируемого периода менее одного процента. Минимальное значение – единица. Если же полученное значение менее 1, трейдеру предпочтительнее отказаться от данной сделки, т.к. высока вероятность уйти в минус.

Эти рекомендации расходятся с таблицей Столетова, которая заложена в скрипте.
Некоторые рассуждение по Форекс и ПАММ можно прочесть здесь:
stolf.today/sortino-ratio.html
 
Последнее редактирование:

kudinoff

Почетный гражданин
Разные трактовки получаются. Я использовал только отрицательные сделки или нулевые (эквити за день не менялось). Положительные не считал вообще для stddev. Сейчас не упомню, где именно такую схему расчета вычитал.
Сейчас проверил, цифры похожие по двум схемам, зависит от соотношения прибыльных сделок. Если присваивать плюсам нули, Сортино чуть ниже. Если у стратегии редкие но меткие стопы, то по моей схеме Сортино будет резко меньше.
 

scalper

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

AlexeNP

Гуру форума
здесь между формулами и их описанием явное противоречие...
пусть Rp - результаты выигрышных сделок, Rm - проигрышных, а N - общее количество сделок. Тогда, приведенная выше формула превращается

K = [ (Rp + Rm) / N ] / sqrt( Rm*Rm /N )

нормализуем, это выражение, заменим sqrt( Rm*Rm) на абсолютное значение

K = 1/sqrt ( N ) * (Rp + Rm) / abs(Rm)

в итоге получаем:

K = 1/sqrt ( N ) * (Rp / abs(Rm) - 1)

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

Genry_05

Отдыхает
Соратники,
я дал ссылку на описание метода Сортино: stolf.today/sortino-ratio.html

Насколько я помню, расчет из скрипта соответствовал расчету из какого-то эконометрического пакета. Заказчик скрипта брал оттуда описание, но прошло уже 7 лет я просто забыл откуда... Звиняйте ;)

1621779993680.png
 

kudinoff

Почетный гражданин
Сделал машку с такими же принципами расчета, как у этих критериев. Цвет меняется, если дельта i и i+1 баров больше стандартного отклонения по периоду машки. Можно выбрать порог, способ расчета дельты (по МА, по цене, по разнице цена и МА). Сигналы с порогом 1 редкие.
Может по таким сигналам стейты будут граальными))
 

Вложения

yanagida

Прохожий
Сделал машку с такими же принципами расчета, как у этих критериев. Цвет меняется, если дельта i и i+1 баров больше стандартного отклонения по периоду машки. Можно выбрать порог, способ расчета дельты (по МА, по цене, по разнице цена и МА). Сигналы с порогом 1 редкие.
Может по таким сигналам стейты будут граальными))

Большой!
Однако изменение типа скользящей средней ничего не меняет.
 

kudinoff

Почетный гражданин
Большой!
Однако изменение типа скользящей средней ничего не меняет.
Там машка по другому считается (3*LWMA-2*SMA, что-то из разряда нерисующей TMA). Во внешних переменных по запаре оставил, звиняйте. Можете удалить из кода 23-25 строки, чтоб не мозолили. Если прям нужны дефолтные машки с настройками типа, цены и сдвига, то могу переделать.
Тут главное все таки не сама машка, а то как она ходит и как ходит относительно нее цена в пересчете на стандартное отклонение (во сколько раз больше/меньше). Топикстартер поднял тему критериев относительно графика баланса (правильнее считать по эквити), смысл индикатора выяснить: а сама цена подчиняется вообще этим критериям? На практике очень редко, проще сказать никогда. Где бы мы не вошли, наше эквити будет соответствовать цене, которая не умеет ходить далеко и быстро, в разы превышая свое же стандартное отклонение (намек на то, достижимы ли критерии на практике?)
 
Последнее редактирование:
Верх