Советники: Validate - страница 7

 
Aleksandr Slavskii #:

Скажите, для каждого следующего форвард прогона,  Validate  берёт самый лучший результат оптимизации?

То есть? если я запускаю оптимизацию с пользовательским критерием оптимизации, для форварда будет браться лучший результат пользовательского критерия, а не результат с максимальным балансом?

Учитывает тот критерий, который выбрал пользователь. Поэтому если выбрали OnTester, то лучший проход будет определяться по максимальному значению OnTester.

ЗЫ Сам не помнил, посмотрел в исходник.

  static int GetMaxFitnessPos( const TESTERCACHE<ExpTradeSummary> &Cache, int Criterion = -1 )
  {
    int Pos = 0;
    double MaxFitness = -DBL_MAX;

    if (Criterion < 0)
      Criterion = Cache.Header.last_criterion;

    for (int i = Cache.GetAmount() - 1; i >= 0; i--)
    {
      const double Res = Cache[i].GetCriterionResult(Criterion);

      if (Res > MaxFitness)
      {
        MaxFitness = Res;

        Pos = i;
      }
    }

    return(Pos);
  }
int               last_criterion;         // критерий оптимизации при последнем сеансе
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Так какой все же результат выбирать после форвард-тестирования?

fxsaber, 2021.10.26 11:59

Validate должен заниматься автооптимизацией на интервалах длиной inSampleDays и применять их результат (лучший проход у каждого) к следующим OutSampleDays:

  1. Записывается Init.ini - настройки Тестера при запуске Validate. X = data_from.
  2. Генерируется и применяется *_opt.ini файл настроек: на интервале [X - inSampleDays; X] проводится Оптимизация.
  3. После окончания оптимизация берется лучший проход, из него генерируется set-файл (просто, чтобы посмотреть).
  4. Из лучшего прохода генерируется и применяется *_tst.ini файл настроек:  на интервале [X; X + OutSampeDays] проводится одиночный проход в Тестере.
  5. Записывается соответствующий tst-файл одиночного прохода.
  6. X += OutSampleDays;
  7. Формируется gif-картинка автооптимизационного баланса (сумма всех одиночных прогонов из п.4).
  8. Возврат на п.2 в случае, если X < data_to из п.1.
  9. Формируется портфельный ini-файл: на интервале [data_from; data_to] идет запуск Validate (Validate из Терминала запускает себя же в Тестере), которые берет все tst-файлы из п.5, объединяет их в одну единую хронологическую цепь торговых приказов и создает их в одиночном проходе. Получив объединение всех одиночных прогонов. Этому пункту все равно, как были получены tst-файлы, поэтому Validate умеет объединять любые (хоть мультивалютные) одиночные проходы, показывая влияние друг на друга по реальным тикам, в отличие от сторонних популярных решений объединения. В общем, в конце этого пункта получается одиночный проход - агрегация всего, что было посчитано. График баланса в Тестере должен совпадать с последней gif-картинкой (записываются для каждого шага) от Validate.
  10. Исходные настройки Тестера (см п.1) возвращаются обратно.

На самом деле в п.2. формируются разом все *_opt.ini. Поэтому Validate должен уметь продолжать работу, если было до этого снят.

Плюс Validate умеет подхватывать любые ini-файлы (скормить ему папку с ними) - кастомный MultiTester.

И также объединять любые tst-файлы, как описано в п.9.


Каждый пункт в сценарии выше - это море отладки, написание/правка выложенных в КБ библиотек и т.д. Чтобы все пахало, как задумано и было удобно пользоваться. Трачу слишком много времени на объяснение "багов". Наверное, по Validate больше не буду ничего комментировать, т.к. этот пост исчерпывающий.


Сам использую Validate в режиме кастомного MultiTester, где беру сгенерированные ini-файлы из TesterDashboard. Walk-Forward (п.2-9) очень редко использую - за прошедший год один раз. Так редко, потому что понимаю, какой будет результат у ТС, что пишу.

 
zevs1980 #:
Этот тоже слетает. При этом скачанный в прошлом году работает.

Добрый день. Не могли бы Вы выложить скомпилированную версию Vаlidte с прошлого года, которая работает? Хотелось бы потестировать, но не успел на раздачу.

 
Ildar Yusupov #:

Добрый день. Не могли бы Вы выложить скомпилированную версию Vаlidte с прошлого года, которая работает? Хотелось бы потестировать, но не успел на раздачу.

Здесь.

 
Поправленный айл, чтобы компилировалось.
Файлы:
TypeToBytes.mqh  42 kb
 
Il'ya Matviyenko #:
Помогло, спасибо!

Что именно помогло? Попытался повторить, везде заменил на 2, всеравно как у вас с 4  _tst.ini стартует. Что именно помогло поделитесь.

 

При компиляции

'Parameters' - wrong parameters count ValidateTasks.mqh 29 17

'Parameters' - wrong parameters count ValidatePortfolio.mqh 162 26

 
ASPCT #:

Что мешает взять готовый EX5?

 
fxsaber #:

Что мешает взять готовый EX5?

То что она выдает

MQL5 'Validate.ex5' has newer unsupported version, please update your client terminal

Терминал последней версии.

 
ASPCT #:

Терминал последней версии.

Убедитесь, что у вас, действительно, свежая версия.

Причина обращения: