MetaTrader 5 Strategy Tester! - страница 86

 

Вот пример оптимизации системы:

 

Никому ничего не напоминает? 

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

 
Andrey Dik:

Попробуем такую функцию.

#import "testGora2Param.ex5" // https://www.mql5.com/ru/forum/852/page86#comment_3872689
  int    GetParamCount ();
  void   GetParamProperties (double &min, double &max, double &step);
  double FF ( const double &array [] );
  void SaveResultsToFiles( void );
#import

#define OnStart TmpStart
  #include "testpso.mq4" // https://www.mql5.com/en/blogs/post/683577
#undef OnStart

class JooFF: public BaseFunctor
{
public:
  JooFF( void ) : BaseFunctor(testGora2Param::GetParamCount())
  {
    for(int i = 0; i < this.params; i++)
      testGora2Param::GetParamProperties(this.min[i], this.max[i], this.steps[i]);
  }
  
  virtual void test( const int loop )
  {
    Print("Optimizing " + typename(this));
    
    Swarm swarm(params, max, min, steps);
    swarm.optimize(this, loop);
    
    double result[];    
    swarm.getSolution(result);

    testGora2Param::SaveResultsToFiles();
    
    Print(testGora2Param::FF(result));
  }
  
  virtual double calculate( const double &vec[] )
  {
    return(testGora2Param::FF(vec));
  }  
};

void OnStart()
{  
  JooFF jooFF;
  
  const ulong StartTime = GetMicrosecondCount();
  
  PSOTests::run(1000);
  
  Print("Время: " + (string)(GetMicrosecondCount() - StartTime) + " мкс");
}
Результат
Optimizing JooFF
PSO[2] created: 10/3
PSO Processing...
PSO Finished 6105 of 10000 planned passes: true
0.9977455661754175
Время: 8440 мкс
Optimizing JooFF
PSO[2] created: 10/3
PSO Processing...
PSO Finished 8096 of 10000 planned passes: true
0.9918991995313576
Время: 14701 мкс
Optimizing JooFF
PSO[2] created: 10/3
PSO Processing...
PSO Finished 7905 of 10000 planned passes: true
1.000920115178711
Время: 10329 мкс
За 10мс и 8000 итераций получилось среднее значение 0.996854960295162.
 
Andrey Dik:

Вот пример оптимизации системы:

 

Никому ничего не напоминает? 

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

Ничего, т.к. кастомный критерий из серии "все так делают, думать не буду".
 
fxsaber:
Ничего, т.к. кастомный критерий из серии "все так делают, думать не буду".

Конечно, баланс+рековери фактор, стандартный критерий на выбор. Но я хотел поговорить о другом.

Но, всё же, картина как маслом - чуть ли не одного мастера. Мастер тут - дискретность! Гляньте на задачу с текстом и точечные графики вариантов, сходства же видны не вооруженному взгляду, это ровные ряды вариантов параметров, когда изменения параметров не приводят к изменению ФФ, и такое можно видеть чуть ли не на всех советниках (я по крайней мере никогда не видел плавного изменения ФФ с изменением параметров, как утверждают некоторые таварисчи - "ФФ советника должна быть плавной").

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

Далее, вот я выделил на графике зоны:

 

Верхняя зона явно выделяется на фоне остальных, я бы исключил её из претендентов на выбор в качестве рабочего варианта. Нижняя зона отпадает как убыточная. Выделяю зелёным зону, в которой на мой взгляд подходят на роль рабочих вариантов. А теперь вопрос, как выделить эти варианты из зелёной зоны в списке вкладки "Оптимизация"? Да никак! А было бы очень удобно на манер выбора зоной магазинов на карте (банкоматов, кафе, ресторанов) как предоставляют такую возможность некоторые онлайн карты. Выбрал квадратиком или кругом зону параметров - и вот они уже в списке "Оптимизация" а остальные скрыты.

 
fxsaber:
За 10мс и 8000 итераций получилось среднее значение 0.996854960295162.
То есть, подтверждаете полученные мной результаты теста?
 
Andrey Dik:
То есть, подтверждаете полученные мной результаты теста?
Нет. Это МРЧ-оптимизация.
 
fxsaber:
Нет. Это МРЧ-оптимизация.

Хороший результат.

Как его соотнести с общими результатами?  

 
Andrey Dik:

Хороший результат.

Как его соотнести с общими результатами?  

Ну так Ваша же ФФ. В данном случае МРЧ считает побыстрее.
 
fxsaber:
Ну так Ваша же ФФ. В данном случае МРЧ считает побыстрее.

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

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

 
Andrey Dik:

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

В логах привел точные результаты. Сам МРЧ не мой, поэтому не разбираюсь досконально.