Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 1249

 
Aleksey Vyazmikin:

Обучение у меня на 2016-2017 годах было, а потом просто проверка листов на 2014-2018 и отбор тех, что каждый год приносили прибыль и отвечали ещё рядку критериев (общий рост/не большая просадка). Вот я и думаю, можно ли такую модель пускать в дело.

По поводу объединения разных инструментов, так у многих тут предиктор - прирост в пунктах за разные временные интервалы, а он не будет работать тогда на разных инструментах...

А что за пакет или программа в которой можно смотреть отдельные листы и статистику по их работе?

Вы там 1 дерево обучали или лес?
 
Wizard2018:

Это говорит лишь о том, что  нейросетка или что вы там используете нашла очередное фуфло.   Уцепилась за форму, подстроилась на локальном участке,  одного  из миллионов  вариантов реализации, но не смогла "понять"  глобальную структуру.   Работающие на всем методы  - есть,    Найдены правда не с помощью МО.      Но ведь главное  - ехать , то бишь зарабатывать, правда?  

Если уж уперлись в МО, желая переложить ответственность с собственной головы и глаз, на бездушну желязяку, так вот вам и "критерий", для окончательной оценки.   Если уж нашли "что  то"  на 15 минутках фунта, это  должно примерно так же работать и на минутках золота и на дневках-недельках  атечественных "семок".  Да и вообще на всем, включая сахар и сою времен Ларрри Вильямса.   

Извините, что грубо  (Igor Makanu: это не Вам лично, а вобще), разуйте глаза, откройте графики в книге "Долгосрочные секреты"... , или у Линды Рашке картинки есть,   много вы там  видите глазками  отличий от 15 минуток фунта  или от часовок биткоина  :)

Если оценивать даж по проценту прибыльных сделок, профит фактору, все это от инструмента , таймфрейма не зависит в действительно стоящем методе, раница плюс минус 3-4  процента, не более.     С ростом таймфрейма устойчивость  паттернов  падает.    Четче всего на "тиках", на них вообще что не тестируй, параметры системы как вкопаные.    А потом ошибка со временем накапливается и паттерны становятся размытей.     Чем больше времени нужно на формирование паттерна, тем сильней дрожит картинка.  

--

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

Я не раз давал ссылку на книгу, там все написано.  И почему одинаковые и почему поменяться не смогут со временем.

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

 

R or Python? Why not both? Using Anaconda Python within R with {reticulate}

R or Python? Why not both? Using Anaconda Python within R with {reticulate}
R or Python? Why not both? Using Anaconda Python within R with {reticulate}
  • Econometrics and Free Software
  • www.r-bloggers.com
This short blog post illustrates how easy it is to use R and Python in the same R Notebook thanks to the package. For this to work, you might need to upgrade RStudio to the current preview version. Let’s start by importing : is an RStudio package that provides “a comprehensive set of tools for interoperability between Python and R”. With it...
 
Vizard_:

Фа, нужен нормальный фильтр типа Джуриковской JMA, но до 71г. выпуска.
Желательно не сильнозамороченый и в R. Есть че?

Нет.

Давно использовал на реале доработанный JMA на мкл4 в части адаптации периода, но толку мало: протухает как и все остальное. Периодически приходилось вмешиваться ручками. 

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

Если про фильтры, то есть любопытный пакет smooth. Внутри сглаживания сидит Кальман с пространством состояний. Дает очень качественные машки, причем с экстраполяцией (forecast) на несколько шагов вперед.


Но для меня опять же главное: предсказательная способность для целевой, а все, что есть в этом пакете та же проблема: не обладает предсказательной способностью.


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

 
Igor Makanu:

в своих умозаключениях Вы окончательно решили, что нет никакой разницы, что лошадь впереди телеги или наоборот - телега впереди лошади! ))))

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

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


Igor Makanu:


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

тут в общем в чем проблема: упрощаем модель (рынок) до декартовых координат X и Y, исходя из Вашего предположения, все рынки одинаковы, тогда есть коэффициент трансформации (линейный или не линейный), который позволяет преобразовать одни данные в другие - если это так, то это задача для НС, она прекрасно решает задачи по поиску зависимостей входных данных от выходных, таблицу умножения тут только ленивый не скармливал НС ;)

Я больше работаю с предикторами, описывающими рынок, а таких предикторов у меня уже более 300, а 300 входов для НС это слишком тяжело... Поэтому я использую древовидные модели. В любом случае, задача тут в преобразовании пунктов в относительные единицы измерения, что бы предикторы не зависели от инструмента - я это делаю через дневной ATR, но может есть и лучший метод - не знаю. В любом случае надо пробовать разные методы по преобразованию данных, так-как выборки для обучения у меня мало получается - не все вариации в ней учтены или присутствуют в малой количественной форме, что мешает выявлению правила (формированию листа).

 
elibrarius:

А что за пакет или программа в которой можно смотреть отдельные листы и статистику по их работе?

Вы там 1 дерево обучали или лес?

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

Я использую скрипт в R для генерации дерева с применением генетики, потом скрипт для выгрузки данных о деревьях на каждой итерации, а потом уже программу парсер, которая писалась отдельно, она конвертирует деревья в листья такого формата:

            if(Test_P!=1245)if(DonProc>=5.5 && TimeH< 10.5 && Levl_High_H4s1< 1.5) CalcBuy=CalcBuy+1; //(0.22513089 0.30366492 0.47120419)
            if(Test_P!=2030)if(Povtor_Low_M1>=0 && TimeH>=10.5 && TimeH< 21.5 && BB_iD_Center_H1< 0 && Levl_Close_D1>=-2.5 && Levl_Support_W1s1< 4.5 && LastBarPeresekD_Down_M15< 4.5) CalcBuy=CalcBuy+1; //(0.09111617 0.51252847 0.39635535)
            if(Test_P!=2537)if(Povtor_High_M1>=0 && rLevl_Down_iD_RSI< -6.5 && TimeH< 14.5) CalcBuy=CalcBuy+1; //(0.1990172 0.3832924 0.4176904)
            if(Test_P!=3243)if(Levl_Close_H1>=0 && TimeH<10.5 && Levl_Support_W1<-3.5) CalcBuy=CalcBuy+1; //(0.1153846 0.1538462 0.7307692)
            if(Test_P!=3314)if(Levl_Close_H1>=0 && TimeH< 10.5 && Levl_Low_W1s1N< 4.5 && Levl_Support_W1< -3.5) CalcBuy=CalcBuy+1; //(0.1153846 0.1538462 0.7307692)
            if(Test_P!=3583)if(Povtor_Type_M1>=0 && TimeH< 10.5 && Levl_Close_W1< -3.5) CalcBuy=CalcBuy+1; //(0.11428571 0.20000000 0.68571429)
            if(Test_P!=3857)if(Povtor_Type_M1>=0 && TimeH<10.5 && Levl_Support_W1<-3.5) CalcBuy=CalcBuy+1; //(0.07142857 0.17857143 0.75000000)
            if(Test_P!=6546)if(Povtor_Type_H1< 0 && Levl_Close_H1s1N>=0 && Levl_Close_H1s1N< 2.5 && Levl_High_W1s1>=2.5 && DonProc_M15>=5.5) CalcBuy=CalcBuy+1; //(0.1228070 0.4210526 0.4561404)
            if(Test_P!=6676)if(Povtor_Type_H1< 0 && Levl_Close_H1s1N>=0 && Levl_Close_MN1< 4.5 && TimeH< 21.5 && BB_iD_Center_H1< 0 && Povtor_Type_M15>=0 && Levl_Down_DC_M15>=-2.5) CalcBuy=CalcBuy+1; //(0.10619469 0.42477876 0.46902655)
            if(Test_P!=8673)if(Levl_Close_H1s1< 0 && Levl_Close_H1s1N>=0 && Part_H4>=2.5 && TimeHG< 3 && Levl_first_W1s1>=0.5) CalcBuy=CalcBuy+1; //(0.11607143 0.40178571 0.48214286)
            if(Test_P!=8840)if(TimeHG>=1.5 && RSI_Open_M1< 0.5 && BB_Peresek_Last_M1< 0.5 && RSI_Open_M1>=-0.5 && Levl_Support_W1s1>=-4.5 && Povtor_Low_H1>=0 && Levl_Support_H4>=0 && RegressorSpeed< 1.5) CalcBuy=CalcBuy+1; //(0.1606218 0.4145078 0.4248705)
            if(Test_P!=10002)if(rOpen_WormsDown>=0 && BB_Peresek_Last_M1< 0.5 && rDeltaWorms< 2.5 && DonProcVisota< 4.5 && Part_D1< 3.5 && BB_iD_Center_H1< 0 && Levl_Close_H1s1N>=0) CalcBuy=CalcBuy+1; //(0.1890244 0.3963415 0.4146341)
            if(Test_P!=10395)if(rOpen_WormsDown>=0 && Povtor_Type_M15>=0 && Levl_Low_H1< -4.5 && Levl_Close_H1s1N>=0) CalcBuy=CalcBuy+1; //(0.1990741 0.3888889 0.4120370)
            if(Test_P!=14244)if(rPeresek_Up<0.5 && BB_Peresek_Last_M1<0.5 && Polozhenie_M1>=0 && Povtor_High_H1<-2.5) CalcBuy=CalcBuy+1; //(0.1948052 0.3506494 0.4545455)
            if(Test_P!=14462)if(rPeresek_Up<0.5 && BB_Peresek_Last_M1<0.5 && Polozhenie_M1>=0 && DonProc_M15<9.5 && Levl_Support_H4s1<4.5 && Povtor_High_H1<-2.5) CalcBuy=CalcBuy+1; //(0.2112676 0.3239437 0.4647887)
            if(Test_P!=17944)if(Levl_Low_H1s1N< -1.5 && Levl_Close_H4>=0 && Levl_Close_H1s1N>=0 && BB_iD_Center_H1< 0 && Part_H1< 2.5) CalcBuy=CalcBuy+1; //(0.1408451 0.3239437 0.5352113)
            if(Test_P!=18382)if(Povtor_Low_M15< 3.5 && LowPerekH1s1_1< 0.5 && Polozhenie_M1>=0 && BB_iD_Down_M1>=-5.5 && DonProcVisota>=3.5 && Povtor_Low_M15< 1.5 && BB_iD_Down_M1>=-1.5) CalcBuy=CalcBuy+1; //(0.1659389 0.3842795 0.4497817)
            if(Test_P!=19123)if(rPeresek_Down< 0.5 && Povtor_Low_M15< 3.5 && LowPerekH1s1_1< 0.5 && Polozhenie_M1>=0 && rCalcLvlWorms< 1.5 && DonProcVisota>=3.5 && rLevl_UpPeresek_iD_RSI< 1.5 && RegressorCalc_S1>=-1.5 && Levl_first_W1s1>=-0.5) CalcBuy=CalcBuy+1; //(0.1225490 0.4313725 0.4460784)
            if(Test_P!=26038)if(Levl_Support_H1s1>=-3.5 && Part_H4< 2.5 && LowPerekH1s1_0>=0.5 && Part_H1>=1.5) CalcBuy=CalcBuy+1; //(0.1912568 0.4153005 0.3934426)

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


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

 
Aleksey Vyazmikin:

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

Я использую скрипт в R для генерации дерева с применением генетики, потом скрипт для выгрузки данных о деревьях на каждой итерации, а потом уже программу парсер, которая писалась отдельно, она конвертирует деревья в листья такого формата:

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


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

Жесть, все что вы делаете в ручную, должна делать нейросеть, а так.... Трата времени, а после если еще и результат минусовой, то море разочарования и метаний в поисках иных методов.

 
Vizard_:

Молоток. Попробуй подсветить для удобства (тепловые карты)

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

Сейчас вот думаю, к чему стремится при сборе листьев о одну модель, первым делом отобрал стабильные листья - уже писал, дальше дело листьев фильтров (у меня классификация -1/0/1 - продажа/не входить/покупка) соответственно фильтром могут выступать как листья из группы "не входить" так и из группы "покупка" для продажи, а по факту попадают и из группы "продажа" - так-как либо закономерность была ложной либо охватываемая карта применения листьев на вход в рынок не покрывает эту поверхность с сигналом на вход, но хорошо фильтрует в части игнорирования входа. Пока что критерий такой у фильтров - улучшение прибыли, уменьшение просадки, уменьшение числа убыточных входов подряд, так можно вытащить листьев 4-6, которые на участках лет 3х/4х будут улучшать сразу все эти показатели, и показатели в целом - прибыль и просадку. А дальше либо уже акцентировать внимание отбора на прибыльность и процент правильных входов, либо думаю попробовать каждому листу для входа подобрать индивидуальный фильтр (1-2), что более затратно, но и более эффективно должно быть в теории.

 
Farkhat Guzairov:

Жесть, все что вы делаете в ручную, должна делать нейросеть, а так.... Трата времени, а после если еще и результат минусовой, то море разочарования и метаний в поисках иных методов.

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

А то, что кто-то что-то должен, я сомневаюсь в этом весьма...

Ну а результат - кто ж его узнает, пока не наступит будущее...

 
Vizard_:

Скорее всего лаги от 1 и -1(или предикт их описыв) улучшат(или уже улучшают) рез 0, так как "не входить"
находится между "переходами".Для себя такой подход сразу отмел и начал юзать только бинарную
классификацию(перевортка). У тебя я бы посмотрел зависимости от разной волотильности, влият, нет и пр.
И делал бы три бинарных классифиатора. Можно поииследовать например только 1 "купить". Слишком заморочено...

У меня трендовая система на минутках, поэтому просто бинарную сразу использовать нельзя, так-как во время флэтов надо быть на заборе, а не просто переворачиваться. Использовать отдельно покупку/не торговать и продажу/не торговать в теории можно, но нужна большая выборка, а с этим так же не все хорошо, вот в кэтбусте у меня сигнал на вход, а вектор (покупка/продажа) выбирается уже отдельно - вроде что-то работает, но там пока продолжаются эксперименты, рано однозначно говорить. Можно конечно и три делать бинарника, но это так же не просто выйдет, в плане объединения этого дела в одно конструкцию...

Волатильность конечно влияет на результат, как раз на всплеске и можно заработать, вопрос в масштабах.
Причина обращения: