Скачать MetaTrader 5

Библиотеки: CTradeStatistics

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Automated-Trading
Админ
106523
Automated-Trading  

CTradeStatistics:

Класс для расчета показателей из перечисления ENUM_STATISTICS

Автор: Andrey Voytenko

forexman77
2496
forexman77  
Automated-Trading:

CTradeStatistics:

Автор: Andrey Voytenko

Добрый день!

Интересует, возможно ли LR Correlation, поместить в функцию OnTester(), для того, чтобы провести оптимизацию советника  по данному критерию, через Custom max?

Andrey Voytenko
24861
Andrey Voytenko  
forexman77:

Интересует, возможно ли LR Correlation, поместить в функцию OnTester()...

В описании приведен пример с OnTrade(). Ничего не мешает перенести расчеты в OnTester().

forexman77
2496
forexman77  
avoitenko:

В описании приведен пример с OnTrade(). Ничего не мешает перенести расчеты в OnTester().

Мало знаком с mql5, поэтому прошу извинить за явные ошибки.

Пробую делать в коде советника  перед OnDeinit так:

double OnTester()
{
double lrk=TesterStatistics(STAT_LR_CORRELATION);
  return(lrk);
}

Выходит ошибка "'STAT_LR_CORRELATION' - can't convert enum".

Если так:

double OnTester()
  {
//--- block repeated requests at same sec.
   static datetime time_on_trade;
   if(time_on_trade==TimeTradeServer())return;
   time_on_trade=TimeTradeServer();

//--- update statistics
   if(!m_stat.Calculate())Print(m_stat.GetLastErrorString());

  }

Ошибки: "return' - function must return a value", " '}' - not all control paths return a value".

1 и 2 строкой в советнике:

#include <CTradeStatistics.mqh>
CTradeStatistics m_stat;

Скажите, что не так? 

forexman77
2496
forexman77  

Методом проб и ошибок сделал так:

double OnTester()
{
CTradeStatistics m_stat;  
if(m_stat.Calculate()) PrintFormat("LR Correlation: %.2f",m_stat.LRCorrelation());
else Print(m_stat.GetLastErrorString());
double LRC=(double)m_stat.LRCorrelation();
return(LRC);
}
Вроде получилось..?
o_o
Модератор
24300
o_o  

Андрей, есть замечания.

1. строка 500   

if(m_balance_data.At(i)!=0.0) исправь на if(m_balance_data.At(i-1)!=0.0)


2. Строка 511
нет проверки знаменателя m_initial_deposit  на 0

3. Обязательно укажи, что ты используешь вычисление m_sharpe_ratio  по варианту Annual Sharpe Ratio с безрисковой ставкой RiskFreeRate

так как это только один из вариантов и он конкретно отличается от стандартного

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий