Библиотеки: BestInterval - страница 11

 
fxsaber:

Как-то не мало выходит. Тут еще такое замечание. ML и BestInterval - разные концепции. ML ищет ТС, BestInterval - ничего не ищет.

Интересно, как сработает подобный пример. Пусть ML имеет 100 параметров и находит ТС. Что по итогу лучше будет, ML100 + BestInterval10 или ML110?

ну как не мало.. надо же как-то учитывать предикторы, по 1 параметру на каждый - это минимум

думаю, что +- одинаково будет. Я просто ставил торговые интервалы вручную, например в ночную сессию - все равно переобучается. Т.е. если убрать бест интервалом что-то то оверфит не исчезнет

 
Maxim Dmitrievsky:

Я просто ставил торговые интервалы вручную, например в ночную сессию - все равно переобучается.

Это фраза не может не вызывать улыбку, потому что он равносильна "все равно не грааль".

По-моему, ML актуален для BigData. А ценовые ряды даже с нятяжкой BigData-ой не назвать.

У меня поэтому подход несколько иной - консервативный. Веду исследования (мало) и, конечно, подсматриваю (глупо этого не делать). Ну а дальше пишу и смотрю выхлоп. BestInterval, конечно, стал незаменимым.

При этом беру какой-нибудь классный кусок реальных котир (с определенным свойствами) и гоняю идеи на нем. Принципиальное отличие от ML - всегда понимаю, почему торгует так, а не иначе.

 
fxsaber:

Это фраза не может не вызывать улыбку, потому что он равносильна "все равно не грааль".

По-моему, ML актуален для BigData. А ценовые ряды даже с нятяжкой BigData-ой не назвать.

У меня поэтому подход несколько иной - консервативный. Веду исследования (мало) и, конечно, подсматриваю (глупо этого не делать). Ну а дальше пишу и смотрю выхлоп. BestInterval, конечно, стал незаменимым.

При этом беру какой-нибудь классный кусок реальных котир (с определенным свойствами) и гоняю идеи на нем. Принципиальное отличие от ML - всегда понимаю, почему торгует так, а не иначе.

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

да, понимаю что на одном мл не уедешь :) бестинтервал очень крутая штука сама по себе, спасибо за нее

 

Если у кого-нибудь будет OnTester Critical Error, дайте данные для воспроизведения. У меня ни разу не было.


ЗЫ Обновлено вместе с Virtual.

 

Спрашивают, существует ли возможность сделать так, чтобы BestInterval находил лучший интервал не для профита, а, например, для фактора восстановления (ФВ) или профит фактора (ПФ) (любой вариант)?


Для ПФ ответ очевиден, т.к. максимальный ПФ достигается при наличии только одной сделки в истории. И чтобы эта сделка была положительная. Поэтому, конечно, нет.

Для ФВ ситуация примерно такая же. Дело в том, что BestInterval ФВ умеет рассчитывать только по балансу. Поэтому достаточно истории из одной сделки (положительной). Так что ответ совпадает.


Но когда речь заходит о других критериях оптимизации, нужно пояснить подробнее. И поэтому делаю это в ветке. Ядром BestInterval служит не сложный и очень эффективный (однопроходный) алгоритм. Например, если совершено 1000 сделок, то BestInterval вычислит лучший интервал за 1000 простейших операций. BestInterval основан именно на этом алгоритме (может быть применен для недель, а не только суток) и ни на каком другом. Здесь скорость имеет огромное значение - Оптимизация. Именно благодаря этому вычисления бесплатны по времени - мгновенные.


BestInterval не работает по принципу "выкинул - посмотрел, выкинул - посмотрел,..., пока не станет максимальный". Иначе бы все было жутко медленно. Поэтому он работает только на увеличение абсолютного профита из истории сделок. И поэтому имеется немалый смысл использовать библу при Оптимизации для ТС в режиме постоянного лота. А ММ применять уже после того, как BestInterval вычислен.


Однако, есть возможность (еще не реализована) сделать нахождение лучшего интервала для максимального профита не абсолютного, а относительного (т.е. с реинвестированием). Такая (и другие) фича запланирована...


Пока же (изначально в библиотеке была, но оставлена была только для себя - без описания) есть одна возможность. Если прописать такую строку

#define BESTINTERVAL_ONTESTER_FORMULA BestInterval.GetProfit() * BestInterval.GetRecoveryFactor()

то при Оптимизации OnTester будет возвращать выделенное цветом значение. В данном случае, это профит * ФВ. Вы можете заменить эту формулу на любую другую (любое выражение, включая вызовы функций). При этом от BestInterval доступны следующие участники:

BestInterval.GetProfit()
BestInterval.GetProfitPlus()
BestInterval.GetProfitMinus()
BestInterval.GetTotal()
BestInterval.GetTotalPlus()
BestInterval.GetTotalMinus()
BestInterval.GetProfitFactor()
BestInterval.GetMean()
BestInterval.GetMaxDrawDown()
BestInterval.GetRecoveryFactor()

из их названий понятно, какую инфу они несут. Поэтому имеется возможность задавать кастомный OnTester, но при этом используя соответствующие значения BestInterval.


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


ЗЫ Есть разные методы в библиотеке для использования ее при программировании. Почти уверен, что это никто не будет делать, поэтому данная часть не описана совсем. Если очень нужно, есть стандартный способ

По исходникам смысл быстро понимается.

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

 

Сообразил, что логично обобщить принцип BestInterval. Ведь на самом деле BestInterval - это классификация сделок по OrderOpenTime. Но никто не мешает классифицировать по другому признаку.

Например, мы знаем, чему была равна МАшка (в OrderComment пропишем) в момент открытия позиции. Соответственно, все позиции в истории торгов можем сопоставить этим значениям МАшки.

А далее применяем BestInterval к этим МАшкам. И на выходе получаем, в каких диапазонах МАшки стоит открывать позиции, а в каких - нет.


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

 
fxsaber:

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

это из какой области знаний?

Вы занимаетесь МО, сударь, только на свой, очень любопытный манер :)

а коли так, нужно делать по канонам ML, с разделением на трейн, тест и валидацию, с обобщением оценок

 
Maxim Dmitrievsky:

это из какой области знаний?

Критерий превосходства - увеличение профита на обучающей выборке при одинаковом количестве выбрасываемых "интервалов" (входных переменных).

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

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

нужно делать по канонам ML, с разделением на трейн, тест и валидацию, с обобщением оценок

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

Честно говоря, странно, что ML-методы не смогли даже приблизиться к простейшей TesterEA. Скорее всего, ML-адепты копают все и сразу.

 
fxsaber:

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

Честно говоря, странно, что ML-методы не смогли даже приблизиться к простейшей TesterEA. Скорее всего, ML-адепты копают все и сразу.

Проблема в том, что местные ML адепты обладают(ли) нулевым уровнем не только в ML, но и в программировании. Любители одиночки. Но все эволюционирует.. очень медленно :)

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

 
Maxim Dmitrievsky:

Проблема в том, что местные ML адепты обладают(ли) нулевым уровнем не только в ML, но и в программировании. Любители одиночки. Но все эволюционирует.. очень медленно :)

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

95% ML-щиков берут EURUSD-котиры. При этом абсолютно даже не заботясь о качестве котировок. И начинают страдать.

Ну а почему не GBPUSD? Почему котиры от MQ, а не другого источника? Почему M1, а не M2 и т.д. Одни элементарные вопросы еще до применения всякого ML, которые основополагающие. Но нет же, главное TensorFlow или CatBoost подрубить.


Самый жесткий прикол над лучшим ML-щиком в мире - дать СБ и убедить, что это котиры. До конца жизни хватит исследований.

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