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

 
В своих советниках рекомендую использовать подобного помощника ГА.

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

Библиотеки: MultiTester

fxsaber, 2019.11.13 16:00

sinput int inMinTrades = 500; // Минимальное количество трейдов (позиций).
sinput int inMaxTrades = 90000; // Максимальное количество трейдов (позиций).

double OnTester()
{
  return(((TesterStatistics(STAT_TRADES) >= inMinTrades) && (TesterStatistics(STAT_TRADES) <= inMaxTrades)) ? TesterStatistics(STAT_PROFIT) : 0);
}

Он не позволяет ГА уходить в сторону слабых стат. результатов. Тем самым повышается качество результата и скорость его достижения. А для Validate еще и фильтр от слабых по стат. значимости проходов.


Например, когда перенастройку делаю на основе расчетов за три месяца, то минимальное количество трейдов ставлю > 100. Иначе выше вероятность в ГА нарваться на проход, который дает больше всех профита за счет малого количества удачных (случайных) сделок. Понятно, что такой проход ничего общего не должен иметь с выбором его для дальнейшей торговли.

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

Написать прибыльный советник под Маркет гораздо сложнее, чем конвертировать его под MT4/5 на текущий момент.

Поэтому отсутствие версии советника под одну из платформ косвенно указывает на низкий уровень торговой логики робота.


При рассмотрении Маркет-советника под MT4 должна быть его тезка под MT5. А эту версию можно проверять по реальным тикам через Validate. Поэтому инструментарий в какой-то мере касается и MT4-части Маркета.

 
zevs1980:

Работа эксперта завершилась критической ошибкой на этапе склейки одиночных прогонов.

Без подробностей это бессмысленное сообщение. Вся информация содержится в песочнице в виде файлов в подпапках. Если их передать, то возможно воспроизведение.

Нашлись ошибки в трех файлах ValidateTasks, ValidatePortfolio и ValidateExe.

Там нет ошибок. Соблюдайте инструкцию для компиляции.

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

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

 

На картинке "зарождение" рыночной закономерности.


В кавычках, потому что если строго, то определенная ТС ухватила стабильно что-то на рынке. Возможно, это что-то было и раньше, но конкретная ТС не могла с этим справиться.

Через Validate несколько раз видел, как рождалась закономерность ровно в Новый год, как будто кто-то рубильник включил.

Заставляет задуматься на тему, а стоит ли создавать ТС на "все времена"...


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

 
Было б здорово видеть по оси X даты, хотя бы опционально.
 
Stanislav Korotky:
Было б здорово видеть по оси X даты, хотя бы опционально.

В каком месте даты? В конце работы, когда все одиночные объединяются, даты видны на штатном графике Тестера. Но лучше всего их рассматривать в HTML-отчете, т.к. там масштабирование через мышку работает.


График, что обновляется во время расчетов - там по абсциссе номера сделок. Не изучал Graphics-библиотеку, поэтому очень примитивно ее использую.

Сейчас, когда нужно посмотреть какой-то участок графика, лезу в песочницу и через IrfanView смотрю все сохраненные графики. Когда нахожу нужный, смотрю на название файла - содержит даты.

 
fxsaber:

В каком месте даты? В конце работы, когда все одиночные объединяются, даты видны на штатном графике Тестера. Но лучше всего их рассматривать в HTML-отчете, т.к. там масштабирование через мышку работает.

На приведенном выше графике общего (склеенного) форвард-теста, вместо номеров (или вместе с ними). Я думал, это и есть из HTML, но раз там есть даты, то вопрос снимается. А можно как-то подсветить границы между шагами?

 
Stanislav Korotky:

На приведенном выше графике общего (склеенного) форвард-теста, вместо номеров (или вместе с ними). Я думал, это и есть из HTML, но раз там есть даты, то вопрос снимается. А можно как-то подсветить границы между шагами?

Я в графике полный ноль. Подготовка данных для визуализации - чтение tst-файлов в соответствующей папке. А потом сортировка всего скопа сделок по времени.

Т.е. этот модуль универсальный, не рассчитан специально на то, что tst-файлы не пересекаются по времени.


Наверное, как-то можно обозначить визуально через TesterDeposit/TesterWithdrawal, не возьмусь пока. Все же штука нишевая, исследовательская. Больше в полученных файлах песочницы вожусь, там много и текстовой инфы, плюс импорт opt/tst, чтобы лучше понимать.


Пока не могу сказать, что получил какую-то пользу для себя от результата прогона своих ТС. Нужно анализировать.

 

Советник во время своей работы подхватывает данные из кешей Тестера - opt-файлы.

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


Поэтому если запускать Validate в режиме полного перебора, то лучше в начале почистить кеш Тестера - удалить [папка Терминала]\Tester\cache\*.opt.


При генетике такой проблемы возникать не должно.

 

1. Вы пишете, «что исследуемый советник будет Оптимизироваться 28 дней, после чего на лучших настройках торговать 14 дней.» Вопрос: по какому критерию выбираются лучшие настройки?

По критерию, который задан в настройках Тестера.

2.Можно ли критерий лучшие настройки выбрать пользователю?

Критерий выбора возможно задать внутри исходника Validate. Но в общем случае это не будет критерием Оптимизации, который является фитнесс-функцией для Оптимизатора. А вот выбрать из уже имеющихся на основе своего критерия возможно.

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

3.Возможно ли выбрать для теста не одни лучшие настройки, а несколько разных, так сказать получиться срез по роботу. (Есть большая вероятность что ГА находит пик и этот пик в большинстве случаев бывает не устойчив, а если брать срез из нескольких разных настроек, то будет более полная картина по роботу).

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


ЗЫ К сожалению, сам MT5-Тестер не позволяет прописывать кастомный критерий Оптимизации (не выбора) вне исходного кода советников. Хотя нет никаких архитектурных препятствий для этого.

Библиотеки: OnTesterCustom
Библиотеки: OnTesterCustom
  • 2020.01.23
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: OnTesterCustom
Причина обращения: