Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 196

 
Vizard_:
Tómate tu tiempo. Independientemente del método de agrupación. Haz una pasada. Recorta algunas observaciones. Hazlo de nuevo. Compara los resultados.

resultados. Desarrollar un método de actuación posterior. De lo contrario, harás "griales" y luego te preguntarás por qué no funciona))))


Estaba pensando en hacer un rebasamiento total, si inicialmente había 500, al final puede resultar que un buen modelo sólo contabilice el 5

y eso es todo lo que guardaré...

 
Dr.Trader:

Si busca patrones como mytarmailS, deslizando por barra, cada patrón contendrá información sobre el intervalo que pueden tener los valores de cada barra. Cuantos más patrones - más pequeño será el intervalo asignado a cada bar.....................

La alimentación de datos de la ventana deslizante es sólo mi estilo de alimentación de datos y nada más, bueno o malo, no sé, creo que es lo mismo que los demás...

Pero no tiene nada que ver con el enfoque que he explicado...

Este enfoque permite agrupar y extraer ese escaso porcentaje de datos útiles que las MO convencionales no pueden...

puedes tomar con seguridad tus predictores tal y como los introduces en tu red, agruparlos (cada uno) y pasarlos por el algoritmo que he descrito

 
Dr.Trader:

A grandes rasgos, para que una ventana concreta con datos nuevos entre en cualquier patrón encontrado anteriormente, debe entrar en esas restricciones verticales inherentes a cada patrón.

Depende de cuánto quieras enseñar al modelo, si quieres enseñarlo débilmente y no hacer muchos clusters entonces las figuras en la cabeza del modelo se suavizarán y ese defecto que dices teóricamente debería desaparecer...

Así es como el modelo ve una serie de precios de 50 valores agrupados en 49 grupos

й

código...

price <- cumsum(rnorm(30000))+1000
plot(price,t="l")

# делаем скользящее окно (50 знач) через матрицу хенкеля
hankel <- function(data, r=50) {
  do.call(cbind,
          lapply(0:(r-1),function(i) { data[(i+1):(length(data)-(r-1-i))]}))}
price <- hankel(price)

# скалирую, центрирую, в общем нормализирую каждую строчку в матрице
price <- t(apply(price,1,function(x){scale(x,center = T,scale = T)}))

# запускаем пакет с кластеризацыей, в дан. случ с кохоненом
# хорошый мануал  
#https://cran.r-project.org/web/packages/SOMbrero/vignettes/doc-numericSOM.html
install.packages("SOMbrero")
library(SOMbrero)

# тренируем модель, с матрицей 7 х7 те 49 кластеров
model <- trainSOM(price, dimension=c(7,7), verbose=T)
plot(model,what="prototypes",type="lines",print.title=T)
 
mytarmailS:

Bueno, depende de cuánto quieras entrenar el modelo, si entrenas débilmente, no haces muchos clusters, entonces las formas en la cabeza del modelo estarán bastante suavizadas y el inconveniente que dices teóricamente debería desaparecer...

Así es como el modelo ve una serie de precios de 50 valores que se agrupan en 49 grupos

código...

price <- cumsum(rnorm(30000))+1000
plot(price,t="l")

# делаем скользящее окно (50 знач) через матрицу хенкеля
hankel <- function(data, r=50) {
  do.call(cbind,
          lapply(0:(r-1),function(i) { data[(i+1):(length(data)-(r-1-i))]}))}
price <- hankel(price)

# скалирую, центрирую, в общем нормализирую каждую строчку в матрице
price <- t(apply(price,1,function(x){scale(x,center = T,scale = T)}))

# запускаем пакет с кластеризацыей, в дан. случ с кохоненом
# хорошый мануал  
#https://cran.r-project.org/web/packages/SOMbrero/vignettes/doc-numericSOM.html
install.packages("SOMbrero")
library(SOMbrero)

# тренируем модель, с матрицей 7 х7 те 49 кластеров
model <- trainSOM(price, dimension=c(7,7), verbose=T)
plot(model,what="prototypes",type="lines",print.title=T)


Vo. Yo hice lo mismo hace mucho tiempo. Kohonen es un material interesante. Pero recuerda que llamarlo algoritmo de agrupación es un error. Es un algoritmo de convolución. Y la agrupación se realiza en el espacio bidimensional resultante...
 
Alexey Burnakov:
Vo. Yo también lo hice hace tiempo. Kohonen es algo interesante. Pero recuerda que llamarlo algoritmo de clustering no es correcto. Es un algoritmo de convolución. Y la agrupación se realiza en el espacio bidimensional resultante...

¡Gracias! No lo sabía.

Pero es posible utilizar la salida del modelo como un clúster, ¿no es así?

head(model$clustering , 100)
  [1]  7  7  7  7  7  7  7  7  6  6  6  5  5  4  4  3  3  2  2  1  1  1  1  1  8 15 15 22 22 29 36
[32] 43 43 43 43 43 43 43 44 44 45 45 45 46 46 46 46 47 47 47 47 48 48 48 49 42 35 35 28 28 21 21
[63] 21 21 21 21 21 21 21 21 21 14 14 14  7  7  7  7  7  7  7  6  5  4  3  3  2  1  1  1  1  1  1
[94]  8  8 15 22 22 29 36
 
mytarmailS:

¡Gracias! No lo sabía.

Pero se puede utilizar la salida de un modelo como un clúster, ¿no?

head(model$clustering , 100)
  [1]  7  7  7  7  7  7  7  7  6  6  6  5  5  4  4  3  3  2  2  1  1  1  1  1  8 15 15 22 22 29 36
[32] 43 43 43 43 43 43 43 44 44 45 45 45 46 46 46 46 47 47 47 47 48 48 48 49 42 35 35 28 28 21 21
[63] 21 21 21 21 21 21 21 21 21 14 14 14  7  7  7  7  7  7  7  6  5  4  3  3  2  1  1  1  1  1  1
[94]  8  8 15 22 22 29 36

Sí, por supuesto que puedes... Es esencialmente una agregación de vectores similares en estas células.

Simplemente puede ser así (yo mismo lo he hecho en el trabajo y sé lo que digo). Tengo n millones de entradas. El vector de entradas tiene un par de cientos de longitudes. Quiero agruparlo, pero no sé de antemano cuántas agrupaciones hay. Ningún algoritmo puede procesar tal cantidad de datos en un ordenador normal. Por lo tanto, primero colapso el espacio de entrada y hago una cuadrícula de, por ejemplo, 50*50. El resultado son 2.500 representantes típicos de la población... En una matriz de este tipo, mi ordenador tira de agnes (clustering jerárquico). Construye una matriz de proximidad de todos a todos...

Y resulta que agrupo estos 2500 en, digamos, 10 clusters y la métrica de agregación es buena.

 
Alexey Burnakov:

Sí, claro que puedes... Hay esencialmente una agregación de vectores similares en esas células.

Podría ser el caso (yo mismo lo hice en el trabajo y sé lo que digo). Tengo n millones de entradas. El vector de entradas tiene un par de cientos de longitudes. Quiero agruparlo, pero no sé de antemano cuántas agrupaciones hay. Ningún algoritmo puede procesar tal cantidad de datos en un ordenador normal. Por lo tanto, primero colapso el espacio de entrada y hago una cuadrícula de, por ejemplo, 50*50. El resultado son 2.500 representantes típicos de la población... En una matriz de este tipo, mi ordenador tira de agnes (clustering jerárquico). Construye una matriz de la proximidad de todos a todos...

Y resulta que agrupo estos 2500 en, digamos, 10 clusters y la métrica de agregación es buena.

en el manualhttps://cran.r-project.org/web/packages/SOMbrero/vignettes/doc-numericSOM.html

en

Construir superclases a partir del SOM resultante

exactamente a lo que te refieres

 

Para los que quieran saber qué es realmente el mercado...

ver de los vídeos antiguos a los nuevos....

https://www.youtube.com/channel/UCsdK6s9i_I0NEMvis6wXhnQ/featured

no parece difícil, pero ¿programarlo? para mí no es posible todavía...

Sugiero que discutamos cómo codificar tales enfoques para la MdD o simplemente codificarlos

 

Para obtener información sobre el lenguaje R y el nuevo MetaTrader 5 build 1467:

  • Se ha publicado una versión actualizada de las bibliotecas estadísticas, similares a R:

    Distribuciones estadísticas en MQL5 - tome lo mejor de R y hágalo más rápido

  • Los cálculos en MQL5 son de 3 a 7 veces más rápidos que en R (incluso teniendo en cuenta que las funciones allí están implementadas en C++)
  • Algunas funciones de R tienen errores debido a los antiguos métodos de optimización/simplificación, lo que lleva a resultados erróneos
  • Se ha añadido una versión beta de librerías gráficas similares a R, lo que permite visualizar los datos como en R.
  • Se ha añadido la práctica función ArrayPrint, que imprime tanto matrices como estructuras estándar como en R


Puede actualizar a 1467 desde el servidor MetaQuotes-Demo.

En las próximas versiones se añadirán muchas nuevas funciones matemáticas y estadísticas similares a las de R. Esto permitirá realizar más cálculos y visualizaciones directamente en MetaTrader 5.
 
Sólo por curiosidad: ¿se toman aquí sólo los valores de los precios y los diferentes indicadores de los precios como predictores? y ¿alguien utiliza los volúmenes reales y los indicadores de los volúmenes?