Можно ли автоматизировать значение даты начала в тестере стратегий?

 

Идея состоит в том, чтобы протестировать советник с теми же входными данными, но начиная, например, с каждого рабочего дня в году с периодом тестирования 1 год.

strategy tester
Я обнаружил, что некоторые роботы ведут себя по-разному в случае запуска их в разные даты. Хотел бы автоматизировать и этот параметр тестирования.
 
Yauheni Shauchenka:

Идея состоит в том, чтобы протестировать советник с теми же входными данными, но начиная, например, с каждого рабочего дня в году с периодом тестирования 1 год.

Пока только "вручную" "автоматизировать" меняя дату. Это по моим данным.
 
datetime NachaloGoda(int GodNG)
{
datetime t1NG;

switch(GodNG)
   {
   case 1995: t1NG=D'1995.01.02 10:00'; break;
   case 1996: t1NG=D'1996.01.01 10:00'; break;
   case 1997: t1NG=D'1997.01.01 10:00'; break;
   case 1998: t1NG=D'1998.01.01 10:00'; break;
   case 1999: t1NG=D'1999.01.04 08:13'; break;
   case 2000: t1NG=D'2000.01.03 01:01'; break;
   case 2001: t1NG=D'2001.01.01 01:38'; break;
   case 2002: t1NG=D'2002.01.01 01:05'; break;
   case 2003: t1NG=D'2003.01.01 00:05'; break;
   case 2004: t1NG=D'2004.01.01 05:03'; break;
   case 2005: t1NG=D'2005.01.03 01:01'; break;
   case 2006: t1NG=D'2006.01.02 01:10'; break;
   case 2007: t1NG=D'2007.01.02 01:00'; break;
   case 2008: t1NG=D'2008.01.02 10:01'; break;
   case 2009: t1NG=D'2009.01.02 07:01'; break;
   case 2010: t1NG=D'2010.01.04 01:00'; break;
   case 2011: t1NG=D'2011.01.03 01:00'; break;
   case 2012: t1NG=D'2012.01.02 20:00'; break;
   case 2013: t1NG=D'2013.01.02 09:00'; break;
   case 2014: t1NG=D'2014.01.02 09:00'; break;
   case 2015: t1NG=D'2015.01.02 00:00'; break;
   case 2016: t1NG=D'2016.01.04 00:00'; break;
   case 2017: t1NG=D'2017.01.02 00:00'; break;
   case 2018: t1NG=D'2018.01.02 00:00'; break;
   case 2019: t1NG=D'2019.01.02 04:00'; break;
   case 2020: t1NG=D'2020.01.02 00:00'; break;
   case 2021: t1NG=D'2021.01.04 00:00'; break;
   case 2022: t1NG=D'2022.01.03 00:00'; break;
   case 2023: t1NG=D'2023.01.02 00:00'; break;
   case 2024: t1NG=D'2024.01.02 00:00'; break;
   case 2025: t1NG=D'2025.01.01 10:00'; break;
   case 2026: t1NG=D'2026.01.01 10:00'; break;
   case 2027: t1NG=D'2027.01.01 10:00'; break;
   case 2028: t1NG=D'2028.01.01 10:00'; break;
   }
return(t1NG);
}

Год можно менять в настройках, используя переменную. И программно ждать до нужного момента.

 
Yauheni Shauchenka:

Идея состоит в том, чтобы протестировать советник с теми же входными данными, но начиная, например, с каждого рабочего дня в году с периодом тестирования 1 год.

Как вариант можете для оптимизатора сделать выборку загнав дни недели к примеру или день года во внешние переменные и тест запускать плюс 12 мес. Это все есть в стандартных функциях. В мт4 вообще сразу есть день недели или день месяца или день года. Если день был выходным там не будет котировок.
И у вас будет начало со следующего раб дня. Плюс смотрите ф ии  работы со временем - чтобы период сделать плюс 12 мес. В итоге после оптимизации у вас будет выборка - по которой уже посмотрите с какого дня лучше торговать роботом. Естественно - эти дни делаете для оптимизации - перебором и все.
Будет типа лучше во вторник начинать плюс год торговать. Или лучше с 55 дня текущего года плюс 12 мес торговать. Как то так. Если сами не шарите - пишите типа этого поста тз и во фриланс за деньги.
 
Putnik #:

Год можно менять в настройках, используя переменную. И программно ждать до нужного момента.


Switch-case звучит уже неплохо, вот только мы точно про тестер стратегий говорим на mt5? Куда нужно этот код писать? Это часть EA или есть возможность у тостера стратегий где-то параметры настраивать? Спасибо заранее за ответ

 
Roman Shiredchenko #:
Как вариант можете для оптимизатора сделать выборку загнав дни недели к примеру или день года во внешние переменные и тест запускать плюс 12 мес. Это все есть в стандартных функциях. В мт4 вообще сразу есть день недели или день месяца или день года. Если день был выходным там не будет котировок.
И у вас будет начало со следующего раб дня. Плюс смотрите ф ии  работы со временем - чтобы период сделать плюс 12 мес. В итоге после оптимизации у вас будет выборка - по которой уже посмотрите с какого дня лучше торговать роботом. Естественно - эти дни делаете для оптимизации - перебором и все.
Будет типа лучше во вторник начинать плюс год торговать. Или лучше с 55 дня текущего года плюс 12 мес торговать. Как то так. Если сами не шарите - пишите типа этого поста тз и во фриланс за деньги.

Как я понимаю вы имеете в виду, что можно сделать новый EA_1 который будет запускать существующий EA (доступа к источникам этого EA нет) ? Всё, что EA_1 будет делать, это принимать в параметрах даты старта, период теста и количество дней подряд для старта например, а внутри будет запускать тестирование существующего EA и каким-то образом логировать результаты? Вот что пишет chatgpt https://chat.openai.com/share/f8bd3ca6-d3c7-45a9-8c8e-3014c828a497 , осталось понять как будут видны результаты

ChatGPT
ChatGPT
  • chat.openai.com
A conversational AI system that listens, learns, and challenges
 
Yauheni Shauchenka:

Идея состоит в том, чтобы протестировать советник с теми же входными данными, но начиная, например, с каждого рабочего дня в году с периодом тестирования 1 год.

Зачем лезть в дебри настроек тестера, это сложно. Просто ограничьте время работы советника с даты начала работы до плюс год. Дату можно инпут переменной сделать и оптить на нужном вам отрезке времени, хоть полным перебором, или случайными генетическими выборками)
ЗЫ, тестируемый период должен вмещать в себя даты начала и плюс год от последней даты.
 
Yauheni Shauchenka #:


Switch-case звучит уже неплохо, вот только мы точно про тестер стратегий говорим на mt5? Куда нужно этот код писать? Это часть EA или есть возможность у тостера стратегий где-то параметры настраивать? Спасибо заранее за ответ

Да- про тестер мт5. Вы можете вручную даты менять со смещением  в 1 день в течение года запускать тестер и отчеты по дням формировать для исследований. Последовательно. Записывать значения итогов тестов. Чем и хорош тестер мт5 - что в нем если день вых ой - вы можете не париться - там нет тогда котировок - т.е. будет тест умолчательно идти со след рабочего дня. Вручную делайте. Это часть еа. Судя по вашим вопросам вам надо формировать тз и обращаться в фриланс. Тут за интерес пишут.  Это потом уже через оптимизацию вариантов - вам оптимизатор предложит вариант.... если в коде ЕА эту выборку для оптимизатора стратегий заложете....

Опять же как вы понимаете день рабочий перебора с нач года? Плюс год?
Если 1 день + год. 2 день плюс год. Это у васбудет смещение 1 год....

Я так и не понял срок итогового варианта - который вы будете юзать на практике....

На реале. Как вы себе это представляете - из вашего описания - не понятно - какой вариант оптимальный брать для торгов на реале.....

Ещё раз распишите условия тз. Эти которые вами написаны - не понятны.... данных мало....
Конкретизируйте свои хотелки и распишите подробнее.....
Тут бывает помогают и даром - если интересно.....
 

Здравствуйте, Yauheni Shauchenka

Скорее всего, вам будет достаточно функционала библиотеки MultiTester, чтобы реализовать последовательно прогоны любого советника (без необходимости вмешиваться в его исходный код) на годичных периодах тестирования с разными начальными датами.

MultiTester
MultiTester
  • www.mql5.com
Множественные прогоны/оптимизации в Тестере.
 
Тестер давно полностью автоматизирован. Ищите обсуждения.
 
Valeriy Yastremskiy #:
Зачем лезть в дебри настроек тестера, это сложно. Просто ограничьте время работы советника с даты начала работы до плюс год. Дату можно инпут переменной сделать и оптить на нужном вам отрезке времени, хоть полным перебором, или случайными генетическими выборками)
ЗЫ, тестируемый период должен вмещать в себя даты начала и плюс год от последней даты.
Тут можно программно сделать в коде ЕА. И ОПТИМИЗАТОР  выдаст вам результаты тестовых прогонов торгов робота в течение года со стартовым смещением в 1 день в течение года.

См. Статьи тут - типа функции работы со временем. В коде ограничиваете работу в тесте робота по времени и делаете смещение в 1 день в теч года плюс год теста. Таким образом вам надо как минимум два года назад его запускать в тестере. Чтобы крайний проход тестера  был крайний рабочий день позапрошлого года плюс год в тесте. Итогом у вас будет выборка из 252 примерно прогонов теста равных кол - ву раб дней года в оптимизационном отчете тестера стратегий. Который вы можете уже оценивать на пригодность того или иного варианта прогона тестера для реал торгов или интересующего вас варианта.
Причина обращения: