Доброго утра.
Вчера познакомил вас с формулами Кальмара. Нужно было добавить, что модифицированная версия хорошо работает с автолотом, так как справляется сразу с двумя негативными параметрами такими как отрицательная последовательность и максимальная просадка.
Сегодня решил добавить ещё несколько кодов по оптимизации.
Итак коэффициент Сортино:
С = (К-М)/В
К — средняя доходность
М — максимальная просадка
В — средний убыток
//+------------------------------------------------------------------------------------+
//| K*Сортино @Алексей Корольков http://axe44.opentraders.ru/bio/ |
//+------------------------------------------------------------------------------------+
double OnTester()
{
double SrPribul = 0;
double Sortino = 0;
double SrYbutok = 0;
double MaxYbutok = 0;
if (TesterStatistics(STAT_PROFIT_TRADES) > 0)
SrPribul = NormalizeDouble(TesterStatistics(STAT_GROSS_PROFIT ) / TesterStatistics(STAT_PROFIT_TRADES),Digits) ;
SrYbutok = NormalizeDouble(TesterStatistics(STAT_GROSS_LOSS ) / TesterStatistics(STAT_LOSS_TRADES),Digits) ;
MaxYbutok = NormalizeDouble(TesterStatistics(STAT_MAX_LOSSTRADE ),Digits) ;
Sortino = NormalizeDouble(((SrPribul-MaxYbutok)/-SrYbutok),Digits) ;
return(Sortino);
}
Коэффициент Вероятности:
Вычисляется путём деления количества прибыльных сделок на общее количество сделок. Как плюс — положительных сделок будет море. Как минус этой системы — это желание робота пересидеть убыток. Вот так всем свойственны минусы людей.
//+--------------------------------------------------------------------+
//| K*Вероятности @Алексей Корольков http://axe44.opentraders.ru/bio/|
//+--------------------------------------------------------------------+
double OnTester()
{
double PercentProfitTrades = 0;
if (TesterStatistics(STAT_PROFIT_TRADES) > 0)
PercentProfitTrades = TesterStatistics(STAT_PROFIT_TRADES) / TesterStatistics(STAT_TRADES) * 100;
if (PercentProfitTrades >= TesterMinPercentProfitTrades)
return(NormalizeDouble((TesterStatistics(STAT_PROFIT) / TesterStatistics(STAT_EQUITY_DD)), 2));
else return(0);
}
Коэффициент Трейнора:
Очень похож на коэффициент Шарпа, но в отличие от него, в данном показателе доходность соотносится не с общим риском, а только с систематическим (недиверсифицируемым). Этот коэффициент и Шарпа хорош тем, что систематизирует прибыль и не опирается на одноразовый успех в серии сделок.
//+------------------------------------------------------------------------------------+
//| K*Трейнора @Алексей Корольков http://axe44.opentraders.ru/bio/ |
//+------------------------------------------------------------------------------------+
double OnTester()
{
double SrPribul = 0;
double Triynor = 0;
double SrYbutok = 0;
double MaxPribul= 0;
if (TesterStatistics(STAT_PROFIT_TRADES) > 0)
SrPribul = NormalizeDouble(TesterStatistics(STAT_GROSS_PROFIT ) / TesterStatistics(STAT_PROFIT_TRADES),Digits) ;
SrYbutok = NormalizeDouble(TesterStatistics(STAT_GROSS_LOSS ) / TesterStatistics(STAT_LOSS_TRADES),Digits) ;
MaxPribul = NormalizeDouble(TesterStatistics(STAT_MAX_PROFITTRADE ),Digits) ;
Triynor = NormalizeDouble(((SrPribul-MaxPribul)/-SrYbutok),Digits) ;
return(Triynor);
}
Коэффициент Шарпа:
//+------------------------------------------------------------------------------------+
//| K*Шарпа @Алексей Корольков http://axe44.opentraders.ru/bio/ |
//+------------------------------------------------------------------------------------+
double OnTester()
{
double SrPribul = 0;
double Sharp = 0;
double ObYbutok = 0;
double MaxPribul = 0;
if (TesterStatistics(STAT_PROFIT_TRADES) > 0)
SrPribul = NormalizeDouble(TesterStatistics(STAT_GROSS_PROFIT ) / TesterStatistics(STAT_PROFIT_TRADES),Digits) ;
MaxPribul = NormalizeDouble(TesterStatistics(STAT_MAX_PROFITTRADE ),Digits) ;
ObYbutok = NormalizeDouble(TesterStatistics(STAT_GROSS_LOSS ),Digits) ;
Sharp = NormalizeDouble(((SrPribul-MaxPribul)/-ObYbutok),Digits) ;
return(Sharp);
}
Кажется всё. Если есть вопросы, заказы — то спрашивайте.
Комментарии (3)
Вероятность прибыли совсем забыл. Если можно, добавьте в текст
13 axe44 Автор Сообщений: 1149 - Алек
Сама формула критерия Келли:
utmagazine.ru/posts/10958-riski-i-matematicheskoe-ozhidanie-v-treydinge-ih-vzaimosvyaz
Редактирован: 20 января 2019, 07:40
13 axe44 Автор Сообщений: 1149 - Алек
Где я напутал? Или это просто вынос мозга?
Эксперимент продолжается… Редактирован: 20 января 2019, 19:38
13 axe44 Автор Сообщений: 1149 - Алек
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий