Обсуждение статьи "Непрерывная скользящая оптимизация (Часть 8): Доработка программы и исправление найденных недочетов"

 

Опубликована статья Непрерывная скользящая оптимизация (Часть 8): Доработка программы и исправление найденных недочетов:

По просьбам пользователей и читателей данного цикла статей, программа была модифицирована и теперь можно сказать, что в текущая статья содержит уже новую версию автооптимизатора. В автооптимизатор были внесены как запрашиваемые, так и новые улучшения идеи которых пришли в момент корректировки программы.

Прошлая версия программы имела лишь поэтапный ввод дат для форвардных и исторических оптимизаций, что было неудобно, и по неоднократным просьбам был реализован функционал автоматизации ввода искомых временных диапазонов. Описать подробности данной идеи можно следующим образом. Требуется автоматическое разбиение выбранного вмененного интервала на даты форвардной и исторической оптимизаций. Шаг обоих типов оптимизаций фиксирован и задается перед началом разбиения на интервалы. Каждый новый диапазон форвардных дат должен начинаться со следующего дня, относительно предыдущего диапазона. Смещение исторических интервалов (которые идут внахлест) равно шагу форвардных окон. Форвардные оптимизации, в отличии от исторических, не идут внахлёст, а образуют непрерывную историю торгов. 

Для реализации поставленной задачи было принято решение вынести данный функционал в отдельное графическое окно и сделать его как можно более независимым и нестыкующимся с основным интерфейсом напрямую. В итоге получилась следующая иерархия объектов.

 


Автор: Andrey Azatskiy

 

А я уж и не надеялся что вы будете продолжать разработку. Поддержка нескольких инструментов - вообще круть! Странно, что нет откликов. Наверно, виной тому сложность статьи. Я неделю созревал, чтобы её прочесть. Не у многих такой уровень подготвки в С# и ООП как у вас. Кто способен понять, о чём здесь написано, будет способен сам дописать программу. В любом случае примите мою благодарность за проделанную работу. С такими трудозатратами можно написать полностью свой тестер и выложить его на маркет. Наверняка бы покупали. Протестирую работу оптимизатора - поделюсь здесь впечатлениями. Спасибо!

 
Good Beer:

А я уж и не надеялся что вы будете продолжать разработку. Поддержка нескольких инструментов - вообще круть! Странно, что нет откликов. Наверно, виной тому сложность статьи. Я неделю созревал, чтобы её прочесть. Не у многих такой уровень подготвки в С# и ООП как у вас. Кто способен понять, о чём здесь написано, будет способен сам дописать программу. В любом случае примите мою благодарность за проделанную работу. С такими трудозатратами можно написать полностью свой тестер и выложить его на маркет. Наверняка бы покупали. Протестирую работу оптимизатора - поделюсь здесь впечатлениями. Спасибо!

Благодарю за столь лестный отзыв, однако мне самому есть куда стремиться в сфере програмирования и трейдинга, так что не перехваливайте) Надеюсь программа будет полезной

 

Снова здравствуйте! Я вовсе вас не перехваливаю, а как бы мягко намекаю что ваш великий труд хорошо бы дополнил сокращенный вариант в кодобазе в виде чистой инструкции и архива с компилированным приложением. А для желающих включиться в работу - эти статьи. Тот, кто сможет их понять, смог бы и програмку такую написать.... Был бы отклик в широких массах, потому что в потенциале это лучший форвард оптимизатор из представленных на MQL5.
Теперь, про реализацию потенциала: Autoset не работает! Вернее, работает неправильно. В Метатрейдере дата Till не участвует в оптимизации, а форвард-тест должен начинаться непосредственно с этой даты периода тестирования. Дата From (участвует в оптимизации)следующего форварда должна совпадать с Till предидущего. С периодом оптимизации - точно так-же.
К примеру, тестируем март 2020г. Установка начальной даты отдельная тема. В текущей версии при установке 4-х недель марта и одной февральской, я ожидал получить два форвардных периода при разбивке в 3 недели (21 день) - исторический период и 1 неделя (7 дней) - форвардный. Всё с понедельника по понедельник.

autoset
Получилось: первый Нistory - правильный - понедельника по понедельник. А дальше: пошло-поехало!
Forward начался во вторник 17 марта, а должен был - в понедельник 16! Следующий форвад - период начался бы в среду 25 марта, если диапазон позволил. А следующий Нistory начинается 17 марта, хотя последний день в предидущем периоде был 15 марта (16 не участвует).

periods

Неужели вы сами не пользовались своим Autoset-том?
И немного про установку начальной даты. На фьючерсах, наверное история ограничена, но на форексе истории для тестирования наверняка хватит. А потому зачем ломать мозг с определением первой даты Нistory? Может быть сделать установку периода для полного покрытия форвардами, а даты Нistory определялись бы автоматически. Напр. в моём примере мы бы получили 5 форард-периодов (при правильной работе Autoset) и первую дату Нistory - 3 февраля.
С нетерпением жду от вас патча. До того же, буду вводить периоды в ручную, наверняка успею.

 

Набрал периоды вручную и запустил. Снова неудача. А правильно ли вообще так набирать периоды, или необходимо строгое чередование?

периоды тестирования

Во вкладке результатов оптимизатора нет ничего: ни форварда, ни истории. Советник записал по три исторические оптимизации на каждый актив. Форвардных небыло, хотя, как мне показалось оптимизатор их считал. Периодически выпадало такое окно:

окно

После оптимизации название сета оптимизации в левом верхнем углу (окне Optimization) появляется, но при нажатии на кнопку Load bot params вылезает окно:

окно 2

Имели место паузы около 30 сек. между этапами оптимизации. Особенно, когда прогресс-бар доходит до конца. В сумме сожрёт много времени.

 
По теме автозаполнения меня озарило: там же время есть! Я сразу не заметил. Почему 12-00? Должно быть 0-00. Поэтому дата Till входит в тест. И сменить его нельзя. При ручном заполнении тоже самое!
 
Good Beer:
По теме автозаполнения меня озарило: там же время есть! Я сразу не заметил. Почему 12-00? Должно быть 0-00. Поэтому дата Till входит в тест. И сменить его нельзя. При ручном заполнении тоже самое!

Все верно, это происходит из за того что даты считаются от 00:00 до 0:00. 
А касательно того момента, что форвард начинается не с последнего дня истории а сдвинут на день вперед, то тут все логично не будите же вы возвращаться на день назад что бы проторговать форвард ? Машину времени пока не изобрели вроде, а жаль)
Касательно ошибки что нету данных для созранения - Вы точно в советник подключили автоматическуб выгрузку и формирование отчета ? Тут два варианта, либо вы не подключили в код советника функционал автоматической выгрузки и формирования отчета, либо же результаты торгов советника не прошли установленные вами фильтры оптимизаци.

 
Периоды можно набирать хоть в разброс зоть по порядку это не влияет на процесс, они сами сортируются по порядку. Если интересно посмотреть логику, то могу подсказать методы отвечающие зща сортировку периодов и за автоматическое заполнение дат оптимизации
 
Касательно задания времени оптимизации (т.е. не только год но и время), это ограничение платформы. Посмотрите на описание создания конфигурационного файла, раздел [Tester], поля "FromDate", "ToDate" - формат принемаемого знгачения "ГГГГ.ММ.ДД".

А убирать дату "From", я уж точно не стану так как она удобна и нужна по хорошему для ограничения интервала.
Запуск платформы - Для продвинутых пользователей - Справка по MetaTrader 5
Запуск платформы - Для продвинутых пользователей - Справка по MetaTrader 5
  • www.metatrader5.com
По завершении установки в меню "Пуск" создается группа программ торговой платформы, а на рабочем столе дополнительно помещается ярлык программы. Используйте их для запуска. Нельзя запускать одновременно две копии платформы из одной директории. Чтобы одновременно запустить несколько копий, установите соответствующее количество программ в разные...
 

Hi, your series articles were really helpful, I am not good at c # so I am trying to learn it from your lessons

I downloaded the Attached filesfrom Part 4 to 7 but i can't build the "Metatrade Auto Optimiser" project. I got error like the picture:


Attached files from Part 8 that's my fisrt time seeing your program interface, it succeeded in launching mt5 when optimisation mode is disable , and wwhen i turn on it like this picture I got error 



please help me fix it thank you

 
Andrey Azatskiy:

Все верно, это происходит из за того что даты считаются от 00:00 до 0:00. 
А касательно того момента, что форвард начинается не с последнего дня истории а сдвинут на день вперед, то тут все логично не будите же вы возвращаться на день назад что бы проторговать форвард ? Машину времени пока не изобрели вроде, а жаль)

Вы неправильно поняли. Это у вас время оптимизации с 12-00 по 12-00. И я не нашел где это можно изменить.

периоды

Из за этого мы теряем 12 часов первого дня истории и залезаем с оптимизацией на 12 часов на период форварда. Из за этого форвард сдвигается на день вперёд, т.к. этот день занимает история.

Т.к. в неделе 7 дней, и период оптимизации нужно разделять на семь дней. Исторический период заканчивается в понедельник 0-00 и форвард начинается  в понедельник 0-00. Получается, что в понедельник мы не тестируем а делаем форвард. Никакой машины времени. 

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