Создание системы отбора стратегий и формирование портфеля - страница 3

 
Alexander Generalov #:
Правильно ли я понимаю что вы речь ведете об этом? https://www.mql5.com/ru/articles/2358
OnTester_R2
How to filter orders in a trading history?
How to filter orders in a trading history?
  • 2025.10.23
  • www.mql5.com
If you want to analyze a subrange of a trading history, when it s more efficient to request only this part of the history before the filtering, without affecting the filtering code itself if, for some reason, you want to select a subrange within the global range which you applied with historyselect , then you still can do it in the filtering code like so the highlighted in yellow line sets 2 conditions for the datetime range using additional qualificators is by default, they are not specified in other calls to let equal is normally used for single value fields
 
fxsaber #:
идет подгонка не под прямую, а на выходе получается прямая.
Например, прервываю ГА на 2000 проходах и смотрю лучшие 100 проходов по критерию (не прямая). Если среди них вижу хоть одну прямую - круто, потому что оптимизировал не под прямую.
 
гммм, Предсказую, что Все, все тысячи стратегий, какие бы вы не внесли в свой анализ, по истечению 100 и более сделок покажут Общий Отрицательный результат, эквити будет в минусе, на величину в среднем Количество сделок*спред всех инструментов входящих в стратегию.... ИМХО
 
Aleksander #:
гммм, Предсказую, что Все, все тысячи стратегий, какие бы вы не внесли в свой анализ, по истечению 100 и более сделок покажут Общий Отрицательный результат, эквити будет в минусе, на величину в среднем Количество сделок*спред всех инструментов входящих в стратегию.... ИМХО
Я не хотел вдаваться в подробности самой стратегии тк она закрыта, но видимо придется объяснить хотя бы саму идею тк я вижу явное непонимание идеи  самой ветке.
Надеюсь я не получу бан за это, я не хотел самопиара.

Идея стратегии. 
Почти все стратегии требуют оптимизации. Как делают это обычно. Берут историю 1 инструмента чуть ли не от рождества христова и пытаются оптимизировать стратегию на всем интервале. Это все равно что пытаться подобрать машину которая одинаково эффективно будет ехать по болотам Сибири, автобанам Европы, пескам Африки и при этом будет максимально экономична и легко ремонтируема и доступна по цене. 

Идея моей стратегии мы торгуем на графиках соответвующих только определённым параметрам. Те если мы едем по автобану это одна машина, по тайге это другая. Для определения где мы едем существует модуль. Вам чтобы понять что дорога кончилась не надо проехать по ней нее 100 км чтобы это понять. Тут так же. Если параметры ушли за заданные мы прекращаем торговлю. Те пока мы едем по автобану это 1 машина, по бездорожью это другая машина. Главное в правильном фильтре- где мы едем.
Тк 1 график это всего лишь 1 из бесконечного множества вариантов движения, то мы моделируем большое количество таких графиков и на них проверяем робастность системы.

Проблемы с которыми я уже столкнулся и решил
1) Генерация путей

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

Технические проблемы: Генерация и валидация путей вычислительно сложна. Я пытался решить это с помощью CPU но уперся в скорость. Пришлось решать через библиотеку GPU 2 карты серии RTX A4000 генерируют 1000 путей за 3-5 минут. 
Как бонус. При решении задачи я столкнулся с интересным артефактом. Время генерации путей перед какими либо важными событиями (резкое изменение волатильности, характера движения или направления) резко увеличивалось. Для этого я делал отдельный тест и смотрел участки где время генерации резко увеличивалось. Тест немного субъективный тк оценка была визуальной. в 70% случаев если время генерации резко увеличивалось (обычно 1-3 минуты, не характерное время больше 5мин и срабатывал таймаут по времени генерации).

Данные я брал с биржи окекс (архив ленты сделок за 3 года) для BTCUSD и 10 других топ 10 инструментов. Свечные данные очень сильно искажают результат, я пробовал брать EURUSDT там мрак и печаль без доступа к тиковым данным.

Далее на полученных синтетиках мы проверяем как ведет себя та или иная стратегия. Выбираем только те что попали в наш топ (в этом то и проблема и о чем данная тема, какие именно выбирать).

Для примера вариант генерации путей на скрине

Файлы:
 
Alexander Generalov #:

Идея моей стратегии мы торгуем на графиках соответвующих только определённым параметрам. Те если мы едем по автобану это одна машина, по тайге это другая. Для определения где мы едем существует модуль. Вам чтобы понять что дорога кончилась не надо проехать по ней нее 100 км чтобы это понять. Тут так же. Если параметры ушли за заданные мы прекращаем торговлю. Те пока мы едем по автобану это 1 машина, по бездорожью это другая машина. Главное в правильном фильтре- где мы едем.
Тк 1 график это всего лишь 1 из бесконечного множества вариантов движения, то мы моделируем большое количество таких графиков и на них проверяем робастность системы.


Любой фильтр вносит задержку и обычно проблема в том что как только мы поняли что параметры ушли за заданные, то может быть уже поздно реагировать т.к. они могут быстро вернуться назад. Т.е. смена состояний бывает частой и внезапной. Если вам удалось найти такие быстрые и точные фильтры, то это реальный прорыв.
 
fxsaber #:
Значит, я плохо объяснил, что имел в виду. Когда идет подгонка Balance/Equity-кривой под прямую, то это дает гораздо меньше уверенности в робастности. Чем если идет подгонка не под прямую, а на выходе получается прямая.
Странная логика. Задача (НЕ)подгонки должна решатся форвард тестом. Внутри обучающей выборки хоть на голове можно стоять. R2, как правильно заметили выше, всегда учитывает все, поэтому это действительно крутой параметр. У Вас же логика "он слишком хороший, поэтому легко ошибиться".
 
Vasiliy Sokolov #:
Задача (НЕ)подгонки должна решатся форвард тестом.
Описал, как делаю сам. Напишите, как происходит у Вас.
 
fxsaber #:
Описал, как делаю сам. Напишите, как происходит у Вас.

Главное, анализирую в своем кастомном инструменте. А вот оптимизирую в Метатрейдер. Уверен что если пользоваться стандартными средствами, то получится "стандартный" результат.

Сейчас делаю так: прогоняю "как есть" стратегию на сотне инструментов за весь период, максимально возможный. Затем Выгружаю результаты прогона (equity + сделки) во внешнюю программу анализатор. Далее делю на периоды. Например по три месяца. Выбираю по любым критериям (хоть r2, хоть по прибыли, хоть наугад) стратегии которые мне понравились в этом периоде. Затем смотрю на их еквити и портфель в следующем периоде. Именно эти результаты я запоминаю. Затем повторяю шаги. Таким образом у меня образуются куски из форвард тестирования по три месяца (3 месяца оптимизация, 3 - форвард, схема 3-3). Эти куски я клею в непрерывный ряд. Если все хорошо, то склейка должна получится ровная, портфель должен зарабатывать.

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

Custom Optimization

 

fxsaber #:
Например, прервываю ГА на 2000 проходах и смотрю лучшие 100 проходов по критерию (не прямая). Если среди них вижу хоть одну прямую - круто, потому что оптимизировал не под прямую.

Когда идет подгонка Balance/Equity-кривой под прямую, то это дает гораздо меньше уверенности в робастности. Чем если идет подгонка не под прямую, а на выходе получается прямая.

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

Красным - не согласен в корне. Не вижу никакой логики в подгонке под что-то левое, чтобы получить желаемое (другое).

 
Alexander Sevastyanov #:
Любой фильтр вносит задержку и обычно проблема в том что как только мы поняли что параметры ушли за заданные, то может быть уже поздно реагировать т.к. они могут быстро вернуться назад. Т.е. смена состояний бывает частой и внезапной. Если вам удалось найти такие быстрые и точные фильтры, то это реальный прорыв.

Именно так. Но может быть имеется в виду (правильная мысль), что корзину собирают не для переключения, а чтобы статистически всё время большинство систем в корзине было в плюсе и перекрывало те, что в минусе.

PS. Ссылка по теме - Portfolio modeller. Правда там, насколько я помню, нет варианта подбора по статистике, только алгебраически. И под разные ТС нужно будет подшаманить, сейчас только под разные инструменты.

Portfolio Modeller and Manager
Portfolio Modeller and Manager
  • 2014.09.24
  • www.mql5.com
Многофункциональный комбайн для работы с портфелями: индикатор Portfolio Modeller – для моделирования и анализа, советник Portfolio Manager – для ручной и автоматической торговли.