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

 
Кто разбираться хоть как то в полиномиальной или гармонической аппроксимации отзовитесь ПОЖАЛУЙСТА   !!! 
 
mytarmailS:

никакой пакет не нужен, где такое написано???

Non-finite entries in the input matrix >>> Неконечные записи во входной матрице

наверное есть inf 

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

Что я накосячил то - дал столбец с ценами закрытия

way <- "F:\\FX\\Открытие Брокер_Demo\\Musor\\000\\Save_OHLC.csv"  # ваш путь

dt <- read.csv(file = way,header = T,sep = ";") # читаем файл

clos <- dt$Close # цеНу закрытия в отдельную переменную


get.ind <- function(x,n=5){
прикладываю данные, помогите разобраться, пожалуйста.
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Технические индикаторы требуют для своих расчетов указания значений цен и/или значений объемов, на которых они будут считаться. Существуют 7 предопределенных идентификаторов перечисления ENUM_APPLIED_PRICE, для указания нужной ценовой базы расчетов. Если технический индикатор для своих расчетов использует ценовые данные, тип которых задается...
Файлы:
Save_OHLC.zip  5363 kb
 
Aleksey Vyazmikin:

Что я накосячил то - дал столбец с ценами закрытия

значит накосячил что то я((   наберите те команды что я указал

 
mytarmailS:

значит накосячил что то я((   наберите те команды что я указал

Error in x2set(Xsub, n_neighbors, metric, nn_method = nn_sub, n_trees,  : 
  Non-finite entries in the input matrix

Но, может я не туда вставил?

get.target <- function(x, change){
  zz <- TTR::ZigZag(x,change = change,percent = F)
  zz <- c(diff(zz),0) ; zz[zz>=0] <- 1 ; zz[zz<0] <- -1
  return(zz)
}

X <- as.matrix(X)
X[is.na(X)] <- 0
X[is.infinite(X)] <- 100

X <- get.ind(clos)
Y <- as.factor(get.target(clos,change = 0.001))


library(uwot)

Что за 0,001 - какая смысловая нагрузка?

 
Aleksey Vyazmikin:

Но, может я не туда вставил?

Да не туда ))

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

X <- get.ind(clos)
X <- as.matrix(X)
X[is.na(X)] <- 0

вот так сделайте


Aleksey Vyazmikin:

Что за 0,001 - какая смысловая нагрузка?

размер колена ЗЗ в пунктах или в чем то там, в зависимости от кол. знаков


не знаете что есть что, смотрите :

get.target <- function(x, change){
  zz <- TTR::ZigZag(x,change = change,percent = F)
  zz <- c(diff(zz),0) ; zz[zz>=0] <- 1 ; zz[zz<0] <- -1
  return(zz)
}

видим что это ЗЗ из пакета TTR

пишем в консоли

?TTR::ZigZag

получаем справку

igZag {TTR}     R Documentation
Zig Zag
Description
Zig Zag higlights trends by removing price changes smaller than change and interpolating lines between the extreme points.

Usage
ZigZag(HL, change = 10, percent = TRUE, retrace = FALSE,
  lastExtreme = TRUE)
Arguments
HL      
Object that is coercible to xts or matrix and contains either a High-Low price series, or a Close price series.

change  
Minimum price movement, either in dollars or percent (see percent).

percent 
Use percentage or dollar change?

retrace 
Is change a retracement of the previous move, or an absolute change from peak to trough?

lastExtreme     
If the extreme price is the same over multiple periods, should the extreme price be the first or last observation?

Details
The Zig Zag is non-predictive. The purpose of the Zig Zag is filter noise and make chart patterns clearer. It's more a visual tool than an indicator.

Value
A object of the same class as HL or a vector (if try.xts fails) containing the Zig Zag indicator.

Warning
The last value of the ZigZag indicator is unstable (i.e. unknown) until the turning point actually occurs. Therefore this indicator isn't well-suited for use for systematic trading strategies.

Note
If High-Low prices are given, the function calculates the max/min using the high/low prices. Otherwise the function calculates the max/min of the single series.

Author(s)
Joshua Ulrich

References
The following site(s) were used to code/document this indicator:
http://www.fmlabs.com/reference/default.htm?url=ZigZag.htm
https://www.linnsoft.com/techind/zig-zag-indicator-zig-zzo
https://www.linnsoft.com/techind/zig-zag-oscillator-indicator-zzo
http://www.metastock.com/Customer/Resources/TAAZ/#127
http://www.stockcharts.com/school/doku.php?id=chart_school:technical_indicators:zigzag
Examples

## Get Data and Indicator ##
data(ttrc)
zz <- ZigZag( ttrc[,c("High", "Low")], change=20 )
 
mytarmailS:

Да не туда ))

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

вот так сделайте


размер колена ЗЗ в пунктах или в чем то там, в зависимости от кол. знаков


не знаете что есть что, смотрите :

видим что это ЗЗ из пакета TTR

пишем в консоли

получаем справку

Ага, чет там дальше прошуршало, и получилось вот это

> X <- as.matrix(X)

> X[is.na(X)] <- 0

> X[is.infinite(X)] <- 100

> library(uwot)

> train.idx <- 100:8000

> test.idx <- 8001:10000

> UM <- umap(X = X[train.idx,],
+            y = Y[train.idx], 
+            approx_pow = TRUE, 
+            n_components = 3, 
+            ret_mode .... [TRUNCATED] 

> predict.train <- umap_transform(X = X[train.idx,], 
+                                 model = UM, n_threads = 4L, 
+                                 .... [TRUNCATED] 
11:08:52 Read 7901 rows and found 31 numeric columns
11:08:52 Applying training data column filtering/scaling
11:08:52 Processing block 1 of 1
11:08:52 Writing NN index file to temp file C:\Users\S_V_A\AppData\Local\Temp\RtmpK0sSR3\file28f467fe2995
11:08:52 Searching Annoy index using 4 threads, search_k = 1500
11:08:52 Commencing smooth kNN distance calibration using 4 threads
11:08:52 Initializing by weighted average of neighbor coordinates using 4 threads
11:08:52 Commencing optimization for 167 epochs, with 118515 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
11:08:54 Finished

> predict.test <- umap_transform(X = X[test.idx,], 
+                                model = UM, n_threads = 4L, 
+                                ver .... [TRUNCATED] 
11:08:54 Read 2000 rows and found 31 numeric columns
11:08:54 Applying training data column filtering/scaling
11:08:54 Processing block 1 of 1
11:08:54 Writing NN index file to temp file C:\Users\S_V_A\AppData\Local\Temp\RtmpK0sSR3\file28f45e3376d9
11:08:54 Searching Annoy index using 4 threads, search_k = 1500
11:08:55 Commencing smooth kNN distance calibration using 4 threads
11:08:55 Initializing by weighted average of neighbor coordinates using 4 threads
11:08:55 Commencing optimization for 167 epochs, with 30000 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
11:08:55 Finished

> library(car)
Загрузка требуемого пакета: carData

> scatter3d(x = predict.train[,1], 
+           y = predict.train[,2], 
+           z = predict.train[,3],
+           groups = Y[train.idx],
+        .... [TRUNCATED] 
Загрузка требуемого пакета: rgl
Загрузка требуемого пакета: mgcv

Если у меня шаг изменения цены 1, то надо изменить 0,001 на к примеру 100?

Изменил на 100

11:15:15 Read 2000 rows and found 31 numeric columns
11:15:15 Applying training data column filtering/scaling
11:15:15 Processing block 1 of 1
11:15:15 Writing NN index file to temp file C:\Users\S_V_A\AppData\Local\Temp\RtmpK0sSR3\file28f417876e23
11:15:15 Searching Annoy index using 4 threads, search_k = 1500
11:15:15 Commencing smooth kNN distance calibration using 4 threads
11:15:15 Initializing by weighted average of neighbor coordinates using 4 threads
11:15:15 Commencing optimization for 167 epochs, with 30000 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
11:15:16 Finished

> library(car)

> scatter3d(x = predict.train[,1], 
+           y = predict.train[,2], 
+           z = predict.train[,3],
+           groups = Y[train.idx],
+        .... [TRUNCATED] 
> 
 
Aleksey Vyazmikin:

Ага, чет там дальше прошуршало, и получилось вот это

Если у меня шаг изменения цены 1, то надо изменить 0,001 на к примеру 100?


Играйтесь с change пареметром

last200clos <- tail(clos,200)
plot(last200clos,t="l")
zz <- TTR::ZigZag(HL = last200clos , percent = F,change = 50)
lines(zz,col=2,lwd=2)
 
mytarmailS:


Играйтесь с change пареметром

Получил вот картинку с прошлых результатов - 4 четких кластера

ранее Вы говорили о каких то цифровых значениях оценки результатов - на какие цифры предлагаете смотреть?

 
Aleksey Vyazmikin:

Получил вот картинку с прошлых результатов - 4 четких кластера

ранее Вы говорили о каких то цифровых значениях оценки результатов - на какие цифры предлагаете смотреть?

ага)) а теперь посмотрите на тестовы данные

scatter3d(x = predict.test[,1], 
          y = predict.test[,2], 
          z = predict.test[,3],
          groups = Y[test.idx],
          grid = F, 
          surface = F,
          ellipsoid = F,
          bg.col = "black",surface.col = c(2,3))

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


кстати изменяйте индексы ведь вы тренируетесь всего на 10к данных

train.idx <- 100:8000
test.idx <- 8001:10000

а у вас там данных под 500к

 
mytarmailS:

Кто разбираться хоть как то в полиномиальной или гармонической аппроксимации отзовитесь ПОЖАЛУЙСТА   !!! 

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