Библиотеки: TesterCache - страница 9

 
traveller00:

На последнем релизном билде 2650 парсить opt-файл полной (медленной, не генетической) оптимизации никто не пробовал? То ли я что сломал, то ли формат поменялся.

Может, дело в том, что сейчас version = 515, а 

PS. Формат может поменяться. Данный формат соответствует версии 514

Не пробовал.

 

Порядок проходов, отображаемый в терминале и выводимый с использованием библ. TesterCache, отличается. Один и тот же файл .opt.

Мне это не критично, но может где-то ошибка?

    Print("Кол-во проходов оптимизации: ", Cache.Header.passes_passed);
    for (int i=0; i<Cache.Header.passes_passed ; i++)
    {
     Cache.GetInputs(i, Params);
     Print("Результат прохода ",i,": ", Cache[i].custom_fitness, "знач. оптимизир. параметра: ", Params[0,1].integer_value);
    }

build 2650

 
Sunriser:

Порядок проходов, отображаемый в терминале и выводимый с использованием библ. TesterCache отличается. Один и тот же файл .opt.

Мне это не критично, но может где-то ошибка?

Print("Результат прохода ",Cache[i].Pass,": ", Cache[i].custom_fitness, "знач. оптимизир. параметра: ", Params[0,1].integer_value);
 
Задался вопросом, можно ли проверить
1) незавершённость последней генетической оптимизации (кнопкой Стоп),
2) аварийным прерыванием (вылет, зависание, отключение питания).
Процесс автооптимизации может продолжаться сутками. Чекпоинты сохраняю, но и последнюю оптимизацию не хочется повторять лишний раз, она может длиться несколько часов.
Идеально было бы наличие флага завершенной оптимизации в кэше, но ведь разработчики не скажут.
 
Edgar Akhmadeev:
Задался вопросом, можно ли проверить

1) незавершённость последней генетической оптимизации (кнопкой Стоп),

Там есть passes-поля в заголовке. Возможно, по ним будет видно. Методом тыка посмотреть просто.

2) аварийным прерыванием (вылет, зависание, отключение питания).

Не в курсе, пишется ли opt-файл во время Оптимизации или генерируется только по окончании.

 
Обновление из-за нововведения языка.
 

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

Как добавить фильтр в отображение результатов оптимизации

fxsaber, 2023.08.06 00:13

// Меняет местами стат. данные оптимизационных проходов.
#property script_show_inputs

input string inFileName = "Tester.opt"; // opt-FileName

input ENUM_STATISTICS inStat1 = STAT_EQUITYDD_PERCENT;
input ENUM_STATISTICS inStat2 = STAT_EQUITY_DD;

#include <fxsaber\TesterCache\TesterCache.mqh> // https://www.mql5.com/ru/code/26223

void SwapStat( ExpTradeSummary &Stat, const ENUM_STATISTICS Stat1, const ENUM_STATISTICS Stat2 )
{
  const double Value = Stat.TesterStatistics(Stat1);
  
  Stat.TesterStatistics(Stat1, Stat.TesterStatistics(Stat2));
  Stat.TesterStatistics(Stat2, Value);
  
  return;
}

void OnStart()
{
  TESTERCACHE<ExpTradeSummary> Cache; 

  if (Cache.Load(inFileName)) // Прочитали оптимизационный кеш.
  {    
    for (uint i = Cache.GetAmount(); (bool)i--;)
      SwapStat(Cache.Record[i].Result, inStat1, inStat2);

    Cache.Save(inFileName); // Сохранили в opt-файл.
  }
}
 
Возможно ли выдернуть из opt-файла параметры не конкретного прохода, а именно параметры оптимизации? Чтобы скормить их на вход, и оптимизация продолжилась с дописыванием в тот же opt-файл.
 
traveller00 #:
Возможно ли выдернуть из opt-файла параметры не конкретного прохода, а именно параметры оптимизации? Чтобы скормить их на вход, и оптимизация продолжилась с дописыванием в тот же opt-файл.

Похоже, это не хранится. Если прервать генетику, изменить оптимизируемые входные (не диапазоны) и запустить ГА, то предыдущие расчеты подхватываются.

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