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

 
mytarmailS:

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

Как думаете, это кому то надо?

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

Если даже не код, то как минимум алгоритм словами, для воспроизведения.


1. прогнозировать цену максима дня по внутредневным данным  (регрессия)

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

Если в определенный момент времени, то выборка будет маленькая.


2. при пробое какого уровня будет сверх волатильность (регрессия + классификация)

Даже не знаю, что такое сверхволатильность, но думаю,что речь просто о тренде или не только?

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

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


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

По сути схоже с прогнозированием цены максимума - те же проблемы.


3. если первая свеча была черная то будет ли третья белая? (классификация)

Вроде примитивно должно реализовываться - можно попробывать.


4. разметить уровни поддержки и сопротивления и прогнозировать от которого именно уровня будет остскок/пробой в вероятностях  (классификация)

Те же проблемы, что и во втором предложении.


5. прогнозировать оптимальный период для индикатора в каждый конкретный мом. времени (регрессия)

Это интересно, конечно, выворот цели использования индикатора на изнанку.

 
Aleksey Vyazmikin:

Прошло много времени, что в итоге - работает метод или нет?

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


есть признаки х1,х2,х3   и   целевая "У"

делаем прогноз по признакам 

"У_х1[i+1]"  ~ x1+x2+x3

"У_х2[i+1]"  ~ x1+x2+x3

"У_х3[i+1]"  ~ x1+x2+x3

и добавляем в модель

х1,х2,х3  "У_х1"+ "У_х2" + "У_х2"  и   целевая "У"

теперь уже 6 признаков


Aleksey Vyazmikin:

Можете выложить скрипт, что б чайники, как я, так же посмотрели такие красивые картинки на своих выборках?

Да я уже стер его, прикольно для визуализации, побаловаться... а так хз нужно ли это вообще.. Если оч надо то могу еще раз написать, надо?


Aleksey Vyazmikin:

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

Если даже не код, то как минимум алгоритм словами, для воспроизведения.

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

 
mytarmailS:

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


есть признаки х1,х2,х3   и   целевая "У"

делаем прогноз по признакам 

"У_х1[i+1]"  ~ x1+x2+x3

"У_х2[i+1]"  ~ x1+x2+x3

"У_х3[i+1]"  ~ x1+x2+x3

и добавляем в модель

х1,х2,х3  "У_х1"+ "У_х2" + "У_х2"  и   целевая "У"

теперь уже 6 признаков

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

Сколько это на R делается, с какой по объему выборкой?

mytarmailS:

Да я уже стер его, прикольно для визуализации, побаловаться... а так хз нужно ли это вообще.. Если оч надо то могу еще раз написать, надо?

Было бы интересно посмотреть - только напишите ещё какие и как библиотеки ставить, пожалуйста. Ну и комментариев побольше в скрипте. Настраиваемый разделитель и выбор столбца с целевой, а ещё столбцы исключения :)

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

mytarmailS:

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

Миллионы ли...

Попробуйте мой метод - 1 или -1 - противоположный вектору ZZ канал Дончиана пересек точку смены вектора. Входим при смене вектора, тралим по противоположному каналу, а 0 - не входим в рынок - флэт. При точности классификации 40% класса 1 и -1 будет профит.

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

А так, конечно, надо думать над разными целевыми.

 
Aleksey Vyazmikin:

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

Сколько это на R делается, с какой по объему выборкой?

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

Aleksey Vyazmikin:

Было бы интересно посмотреть - только напишите ещё какие и как библиотеки ставить, пожалуйста. Ну и комментариев побольше в скрипте. Настраиваемый разделитель и выбор столбца с целевой, а ещё столбцы исключения :)

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

Только не большой файл плиз 1000 строк за глаза

Только учтите это просто игрушка, просто для визуализации, если вы хотите проверить модель/признаки  то  10000% лучше тупо посмотреть ошибку на тесте) 
 
mytarmailS:

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

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

mytarmailS:

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

Только не большой файл плиз 1000 строк за глаза

В том то и дело, что форматы могут меняться - поэтому не скупитесь на комментарии :)

Вариант более часто используемый прикладываю.

Файлы:
 
mytarmailS:

время будем учитывать или игнорить?

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

 
Aleksey Vyazmikin:

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

да да увидел уже)

 

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

Не забывайте, ес ли целевая будет преднамеренно содержать ошибки и получится улучшитиь результат обучения, то и модель будет совершать ошибки в соответствии с целевой. ИМХО

 
Aleksey Vyazmikin:

ловите

way <- "C:\\Users\\TARAS\\Desktop\\Test_Pred_2019.csv"  # ваш путь
dt <- read.csv(file = way,header = T,sep = ";") # читаем файл
target <- dt$Target_100 # целевую в отдельную переменную

dt <- dt[, ! colnames(dt)  %in% 
           c("Target_100_Buy","Target_100_Sell",
             "Time","Target_100")  ] # удаляем не нужные колонки


# роскоментируем и Устанавливаем нужные пакеты после чего эту строку можно удалить
# install.packages(c("rgl", "car" , "umap"))


# про umap
#https://cran.r-project.org/web/packages/umap/vignettes/umap.html
#https://github.com/ropenscilabs/umapr

library(umap)
um <- umap(dt,n_components=3)   
# n_components=3  во сколько измерений уменьшаем данные, можно 100 можно 1
# можно 333, но нам для 3д надо трех мерное пространство поетому у нас n_comp=3
um.res <- um$layout # наши три вектора выход 



#тут все настройки по пакету  car
# http://www.sthda.com/english/wiki/amazing-interactive-3d-scatter-plots-r-software-and-data-visualization
library(car)  # 3d

target <- as.factor(target)  #  target нужен для того чтобы окрасить точки в цвет целевой

scatter3d(x = um.res[,1], 
          y = um.res[,2], 
          z = um.res[,3],
          groups = target,
          grid = FALSE, 
          surface = FALSE,
          ellipsoid = FALSE,
            bg.col = "black")




#===============================
# ирисы фишера как пример

data(iris)
head(iris)
sep.l <- iris$Sepal.Length
sep.w <- iris$Sepal.Width
pet.l <- iris$Petal.Length

scatter3d(x = sep.l, 
          y = sep.w, 
          z = pet.l,
          groups = iris$Species,
          grid = FALSE, 
          surface = FALSE,
          ellipsoid = FALSE,
          bg.col = "black")



можно еще поиграться с параметрами umap , там метрики, близости, к-соседей

um <- umap(dt,n_components=3,
           n_neighbors=30,
           min_dist= 0.5) 

В винетке посмотрите , там много чего есть

 
mytarmailS:

ловите




можно еще поиграться с параметрами umap , там метрики, близости, к-соседей

В винетке посмотрите , там много чего есть

Интересно, спасибо! Судя по картинке - мусор? :)

У себя запустить не могу

Warning in install.packages :
  packages ‘rgl’, ‘car’, ‘umap’ are not available (for R version 3.5.0)

Я так понимаю, что R у меня устарел - как его обновлять? :)