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

 
Sergey Chalyshev:

Еще не вникал в подробности вашего алгоритма. Так понял, используется штатный тестер.

Фактически, Validate - это отсутствующий в штатном Тестере walk-forward режим, только написанный со стороны. Это стало возможным благодаря тому, что разработчики недавно значительно продвинули возможности Тестера. Но эти возможности не востребованы почти. Получилось реально хорошо и почти универсально (не без нюансов, конечно).


Я бы все Маркет-советники прогнал через этот новый нештатный режим MT5-Тестера.

Штатный тестер иногда глючный и неадекватный. Есть ли возможность сделать такое, для кастомного тестера (например ваш Virtual), и кастомного генетического алгоритма?

Вроде, даже в ветке Virtual делился подобным. Но это очень нишевая вещь, поэтому универсальности и массовости такое решение нести не может. Либо требует больших временных затрат, что не разумно.


По поводу критики в адрес MT5-тестера. Уже очень далек от стандартного его использования. Выше на скрине написано, что 20 месяцев по реальным тиками посчитались за пять часов. Так это специально прореженный кастомный символ без потерь информации при торговле. Более, чем в 10 раз, поднимает скорость. Плюс еще двукратно можно увеличить через Virtual. Плюс еще доводки. И по другому с MT5-тестером не работаю. Поэтому уже привык, что все работает именно так, как задумано. С полным пониманием, что и как происходит на своих задачах. Отсюда и некоторая отрешенность от стандартных методов использования Тестера. Так что не совсем компетентен в вопросах глючности.


Понимаю, что никто в зравом уме Validate использовать не будет, т.к. сама задача walk-forward вычислительно очень дорогая. А если учесть, как написаны Маркет-советники, то интерес может быть, скорее всего, только теоретический. Где немного больше шансов, так это изначально встроенные возможности портфельного тестирования в Validate. Там классно и быстро выходит, но это надо опять же расписывать и объяснять, почему и как. Так что разработками делюсь, но они "в шкаф", фактически.

 
Edgar Akhmadeev:
Статья попала в выдачу новостей на дефолтной странице хрома. Давно не помню такого, чтобы статья с MQL5.COM туда попадала.

Похоже, Вы не в ту ветку написали это сообщение.

 
Получил несколько ЛС-вопросов по Validate. С Вашего позволения буду обезличенно отвечать на них в этой ветке. Чтобы не повторяться.
 
На тему компиляции
Для компиляции требуется установить некоторые библиотеки из КБ. Ссылки на них даны в исходнике. Здесь можно забрать уже готовый исполняемый EX5-файл.

Если скачать исходник из КБ и скомпилировать, то это будет пустышка. Для тех, кто не понимает причин этому, выше дана ссылка на готовый EX5-файл. Если его поместить в папку Experts, то Validate будет работать.


Инструкция, как скомпилировать (проверил на пустом Терминале).

  • В MT4Orders скачать MT4Orders.mqh и поместить в [папка Терминала]\MQL5\Include\.
  • В Expert скачать Expert.mqh и поместить в [папка Терминала]\MQL5\Include\fxsaber\.
  • В Report скачать Report.mqh и поместить в [папка Терминала]\MQL5\Include\. Там же скачать Graph.mqh и поместить в [папка Терминала]\MQL5\Files\.
  • В ThirdPartyTicks скачать File.mqh и поместить в [папка Терминала]\MQL5\Include\fxsaber\ThirdPartyTicks\.
  • В MultiTester нажать "Загрузить ZIP" и распаковать архив в [папка Терминала]\.
  • В TesterCache нажать "Загрузить ZIP" и распаковать архив в [папка Терминала]\.
  • В SingleTesterCache нажать "Загрузить ZIP" и распаковать архив в [папка Терминала]\.
  • Создать файл [папка Терминала]\MQL5\Indicators\Spy.mq5 c этим исходником.

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

    Анализ результатов тестов и оптимизации в тестере стратегий MetaTrader 5

    fxsaber, 2018.01.28 12:25

    Индикатор

    #property indicator_chart_window
    #property indicator_plots 0
    
    input long Chart = 0; // идентификатор графика-получателя события
    input int Index = 0;
    
    int OnCalculate( const int rates_total, const int prev_calculated, const int, const double &[] )
    {
      if (prev_calculated)
        EventChartCustom(Chart, 0, Index, 0, NULL);
      
      return(rates_total);
    }
  • В Validate нажать "Загрузить ZIP" и распаковать архив в [папка Терминала]\. Файл [папка Терминала]\Validate.mq5 переместить в [папка Терминала]\Experts\. Открыть его в MetaEditor, удалить в нем первую строку (где FAKE) и скомпилировать (нажать F7).
 

Validate в самом конце своей работы запускает одиночный проход, куда помещает все результаты вычислений. Перед этим действием он выдает диалоговое окно, где можно подтвердить или отменить данный шаг. Когда вычислений много, диалоговое окно может не помещаться полностью на экран, и, соответственно, кнопки OK/CANCEL не нажать. Я просто нажимаю ENTER на клавиатуре, если нужно подтвердить, или ESC - для отмены.


Если хочется отключить формирование этого диалогового окна, то можно в файле ValidatePortfolio.mqh закомментировать эту строку

  bool RunMe( void )
  {
    if (this.FirstRun)
    {
      string FileNames[];

      this.RunFlag = !FILE::GetFileNames(FileNames, this.FolderName + "*.tst") ||
                     !this.GetPortfolio(FileNames) ||
                     !this.GetPortfolioSymbols() ||
                     !(::MessageBox(this.PortfolioToString(FileNames, 5), __FILE__,  MB_OKCANCEL) == IDOK) ||
                     !this.SetFiles(FileNames);

      this.FirstRun = false;
    }


Отключение диалоговых окон может быть целесообразно, если нужно сделать пакетный запуск Validate по многим символам.

 

Validate работает по принципу правильных торговых советников - каждая итерация с чистого листа. Это позволяет в любой момент выключить выполнение. А после запуска - продолжить.


Рекомендую посмотреть песочницу. Там содержатся все файлы заданий (*.ini), все set-файлы, результаты оптимизаций (*.opt), результаты одиночных прогонов (*.tst), картинки (*.gif).

*.ini, *.set, *.opt и *.tst файлы могут быть вручную импортированы в Тестер штатным способом. Это позволяет подробно понять каждый шаг Validate и оценить правильность результатов.

 
Validate полностью содержит в себе весь функционал TesterPortfolio. И, конечно, умеет гораздо больше.

Вы можете создать список заданий (*.ini - нажмите CTRL+C во вкладке Настройки Тестера и посмотрите содержимое буфера в редакторе (CTRL+V)) и поместить их в любую папку в песочнице.

Затем при запуске Validate указать ее.

На скрине указано, чтобы работал с папкой Portfolio.


После чего Validate выполнит последовательно все Тестерные задания (с возможностью прерывания и продолжения).

Если задание "Оптимизация", то он сохранит в Вашей папке соответствующий opt-файл. Если Одиночный проход - tst-файл.

После выполнения всех заданий Validate из всех одиночных прогонов (tst-файлы) сделает один общий одиночный проход. Принцип описан в TesterPortfolio. Здесь как раз полезно наличие диалогового окна.


По итогу Вы можете делать пакетные запуски Тестера, как вздумается. И создавать на свое усмотрение Портфели ТС (из одиночных проходов), включая мультивалютные варианты.

 
fxsaber:

Фактически, Validate - это отсутствующий в штатном Тестере walk-forward режим, только написанный со стороны. Это стало возможным благодаря тому, что разработчики недавно значительно продвинули возможности Тестера. Но эти возможности не востребованы почти. Получилось реально хорошо и почти универсально (не без нюансов, конечно).


Я бы все Маркет-советники прогнал через этот новый нештатный режим MT5-Тестера.

Сценарий использования.

Вас заинтересовал какой-то Маркет-советник. Вы скачиваете его средствами Терминала в Тестер - это бесплатно. Настраиваете его на Оптимизацию и запускаете Validate. Если Validate показал слив - с очень высокой вероятностью советник сливной. Если хорошо прет вверх - нужно уже смотреть. Усредняющиеся советники будут переть вверх и в Validate, скорее всего. Поэтому для них Validate-подъемы мало о чем говорят.

А вот для советников без усреднений, где есть реальная попытка ухватиться за рыночные закономерности, показатели Validate имеют огромное значение. Если на таком советнике Validate прет вверх, то можно только поздравить с нахождением удачного торгового робота.


Возможно, такой метод не очень понравится авторам роботов в Маркете, но это честно. В Validate-методе нет ничего нового, это бородатый walk-forward. Новье - доступность для массового пользователя проверки любого Маркет-советника. Бесплатно - до покупки.

 
fxsaber:

Похоже, Вы не в ту ветку написали это сообщение.

Статья с названием (по памяти) "Советник Validate - скачать бесплатно".
Но ладно, удалил.
 

Входной параметр With Holidays.

Если, например, делаете переоптимизацию каждые три дня, то очень важно не попасть на выходные. Например, перед пятницой сделали Оптимизацию, затем нужно торговать пятницу-понедельник-вторник, т.к. чаще всего в выходные рынок закрыт. Чтобы учитывать только рабочие дни (без субботы/воскресенья), нужно установить входной параметр With Holidays = false.