Скачать MetaTrader 5

Считаем фактор восстановления RECOVERI FACTOR

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нужен приватный мониторинг счета? В Сигналах есть такая возможность!
Yuriy Zaytsev
13697
Yuriy Zaytsev 2008.09.15 17:46 
// (C)YURAZ 2008

// 1-необходимо найти самого большого лося

// 2-необходимо вычислить ФВ

double BegBalanc=10000;

void start()

{

double maxloss = getMaxLoss( );

double FR = AccountBalance() - BegBalanc / MathAbs(maxloss);

Comment("FR="+FR);

}


//
// ищем сильнейшего лося
//
double getMaxLoss( )
{
int i;
i = 0; 

while ( true )
{
if ( OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) == true )
{ 
if ( OrderProfit() < 0 && OrderProfit() <= _MaxLoss )

_MaxLoss = OrderProfit() ;

if ( OrderType() == 6 )

BegBalanc = OrderProfit(); // поднимем из истории счета баланс

i++;
} 
else
break;
}


if ( IsTesting() == true && i == 0)
{
_StartBalance = AccountBalance(); // если еще нет ордеров в истории и тестирование - то баланс взять просто
}

return( MaxLoss ) ; 
}

https://championship.mql5.com/2012/ru/news/

Yuriy Zaytsev
13697
Yuriy Zaytsev 2008.09.15 17:58  

проблема нет усреднения ФВ

т е получаем всегда статическое значение в конкретный ммомент времени

( что не показывает среднее значение которое будет наверно более качественным показателем ТС )

наверно логично усреднить сие значение

делаем просто

необходимо бежать по истории

считать - суммировать ФВ затем делить на количество операций при которых происходит изменения ФВ

Комбинатор
15918
Комбинатор 2008.09.15 18:03  
YuraZ писал (а) >>

проблема нет усреднения ФВ

т е получаем всегда статическое значение в конкретный ммомент времени

( что не показывает среднее значение которое будет наверно более качественным показателем ТС )

наверно логично усреднить сие значение

делаем просто

необходимо бежать по истории

считать - суммировать ФВ затем делить на количество операций при которых происходит изменения ФВ

Зачем? Правда, не знаю как народ, а меня интересует только финальное значение в конце промежутка тестирования.

Промежуточные значения не столь информативны.


Хмм, пересмотрел еще раз, появилось два вопроса.

1. У меня дикое подозрение, что код с вычислением ВФ ничего общего не имеет.

2. Зачем напрягаться, если по прогону тестера мы получаем прибыль и макс. просадку и остается лишь поделить одно на другое?

Yuriy Zaytsev
13697
Yuriy Zaytsev 2008.09.15 19:01  
TheXpert писал (а) >>

Зачем? Правда, не знаю как народ, а меня интересует только финальное значение в конце промежутка тестирования.

Промежуточные значения не столь информативны.


Хмм, пересмотрел еще раз, появилось два вопроса.

1. У меня дикое подозрение, что код с вычислением ВФ ничего общего не имеет.

2. Зачем напрягаться, если по прогону тестера мы получаем прибыль и макс. просадку и остается лишь поделить одно на другое?

я хотел среднее получить на самом деле...

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

у меня тоже подозрение что мах просадка не есть мах лос :-)

Игорь Корепин
582
Игорь Корепин 2008.09.15 19:24  

Интересно наблюдать за ФВ в режиме реального времени. В тестере прогнать например.

Вот такой код, думаю правильно. Просадка через эквити считается. Начальный депозит нужно задать или вынести во внешнюю переменную.

int start()
{
 static double maxprofit=0.0,maxloss=0.0;
 double rf;
 
 if (IsVisualMode())
 {
  if (maxprofit<AccountEquity()) maxprofit=AccountEquity();
  if (maxloss<(maxprofit-AccountEquity())) maxloss=maxprofit-AccountEquity();
  if (maxloss>0) rf=(AccountEquity()-10000)/maxloss;
  GlobalVariableSet("value1",rf);
  //GlobalVariableSet("value2",rf);
 }
 //ваш код
}
Когда начнется тестирование, набросить на график визуализации этот индикатор...
Файлы:
Александр
801
Александр 2010.12.03 14:22  
Xupypr:

Интересно наблюдать за ФВ в режиме реального времени. В тестере прогнать например.

Вот такой код, думаю правильно. Просадка через эквити считается. Начальный депозит нужно задать или вынести во внешнюю переменную.

Когда начнется тестирование, набросить на график визуализации этот индикатор...

Если считать так как Вы предлогаете, то ВФ зависит от первоначальной суммме на балансе. Тогда как везде идет речь о профите/на макс. просадку. или я не прав?
Игорь Корепин
582
Игорь Корепин 2010.12.04 18:41  
001:

Если считать так как Вы предлогаете, то ВФ зависит от первоначальной суммме на балансе. Тогда как везде идет речь о профите/на макс. просадку. или я не прав?

rf=(AccountEquity()-10000)/maxloss;

ФВ=(Текущие средства - Первоначальный баланс)/Максимальная просадка

Вот как раз и получается уход от зависимости от начального баланса - только чистый профит делённый на просадку.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий