Discusión sobre el artículo "Neuroredes profundas (Parte I). Preparación de datos" - página 3

 
Vladimir Perervenko:

En ggplot2(v2.2.1) desapareció la definición de geom_candlestick (MRO 3.4.1).

Ya he destrozado MRO 3.4.0 en el que hacía todos los cálculos así que mañana buscaré una solución y escribiré.

¿Qué versión de R tienes?

Gracias.

La última versión es "R versión 3.4.2 (2017-09-28)"

 

Por eso no me gusta este ggplot2. Aquí hay una variante de trabajo que no incluí en el artículo.

#--------quantmod----------------------------
require(quantmod)
require(timetk)
evalq(
  pr %>% tk_xts(.) %>%
        chartSeries(x = OHLC(.), 
                    #c("auto", "candlesticks", 
                    #"matchsticks", "bars","line")
                    type = "bars", 
                    subset = 'last 3 days',#weeks, months
                    show.grid = T,
                    name = "EURJPY M15",
                    tyme.scale = T,
                    log.scale = FALSE,
                    line.type = "l",
                    bar.type = "ohlc",
                    theme = chartTheme('white',
                                       up.col = 4, 
                                       dn.col = 2,
                                       grid.col = 3,
                                       main.col = 1,
                                       sub.col = 4), 
                    major.ticks = "day", 
                    minor.ticks = TRUE ,
                    plot = TRUE,
                    color.vol = F,
                    multi.col = F
                    ),
      env)

Tiene este aspecto.

horario

Suerte

 
Vladimir Perervenko:

Por eso no me gusta este ggplot2. Aquí hay una variante de trabajo que no incluí en el artículo.

Tiene este aspecto.


Buena suerte.

Gracias.

Tu variante construye un gráfico normalmente en RStudio, pero en la terminal MT4 no funciona. Estoy luchando por el segundo día y el comando chartSeries no funciona a través del entorno env.

Si es posible, por favor comparta un Asesor Experto para MT4 que descargue las cotizaciones y construya un gráfico. Gracias.

Sólo podía hacerlo de la manera antigua, como lo hacía antes. Es muy incómodo escribir todos los comandos en la terminal, no en R.


Rv(R, "Datos",tm);

Rv(R, "Tiempo",tm);

Rv(R, "Abierto",o);

Rv(R, "Alto",hi);

Rv(R, "Bajo",lo);

Rv(R, "Cierre",clo);

Rv(R, "Volumen",vol);


PREDICTION_COMMAND=

"library(magrittr) "+CR

+"library(dplyr) "+CR

+"library(xts) "+CR

+"library(quantmod) "+CR

+"precio <- cbind(Hora = rev(Hora), Apertura = rev(Apertura), Máximo = rev(Máximo), Mínimo = rev(Mínimo), Cierre = rev(Cierre)) "+CR

+"precio_t <- precio "+CR

+"dts = precio_t[,1]"+CR

+"mydates = structure(precio_t[,1],class=c('POSIXt','POSIXct')) "+CR

+"precio_tiempo <- xts(x=precio_t[,c(2:5)], order.by=mifechas, tzone='GMT') "+CR

;

RExecuteAsync(R,PREDICTION_COMMAND);

Rx(R, "chartSeries(precio_tiempo, type = 'barras', subset = 'últimos 3 días',show.grid = T,name ='EURUSD M15',tyme.scale = T,log.scale = FALSE,line.type = 'l',bar.type = 'ohlc',theme = chartTheme('white',up.col = 4,dn.col = 2,grid.col = 3,main.col = 1,sub.col = 4),major.ticks = 'day',minor.ticks = TRUE,plot = TRUE,color.vol = F,multi.col = F)");


 
Konstantin Kopylov:

Gracias.

Su variante construye un gráfico normalmente en RStudio, pero en MT4 terminal no funciona. El segundo día estoy luchando y no puedo obtener el comando chartSeries a través del entorno env.

Si es posible, por favor comparta un Asesor Experto para MT4 que descargue las cotizaciones y construya un gráfico. Gracias.

Sólo pude hacerlo de la manera antigua, como lo hacía antes. Es muy inconveniente escribir todos los comandos en la terminal, no en R.


Rv(R, "Datos",tm);

Rv(R, "Tiempo",tm);

Rv(R, "Abierto",o);

Rv(R, "Alto",hi);

Rv(R, "Bajo",lo);

Rv(R, "Cierre",clo);

Rv(R, "Volumen",vol);


PREDICTION_COMMAND=

"library(magrittr) "+CR

+"library(dplyr) "+CR

+"library(xts) "+CR

+"library(quantmod) "+CR

+"precio <- cbind(Hora = rev(Hora), Apertura = rev(Apertura), Máximo = rev(Máximo), Mínimo = rev(Mínimo), Cierre = rev(Cierre)) "+CR

+"precio_t <- precio "+CR

+"dts = precio_t[,1]"+CR

+"mydates = structure(precio_t[,1],class=c('POSIXt','POSIXct')) "+CR

+"precio_tiempo <- xts(x=precio_t[,c(2:5)], order.by=mifechas, tzone='GMT') "+CR

;

RExecuteAsync(R,PREDICTION_COMMAND);

Rx(R, "chartSeries(precio_tiempo, type = 'barras', subset = 'últimos 3 días',show.grid = T,name = 'EURUSD M15',tyme.scale = T,log.scale = FALSE,line.type = 'l',bar.type = 'ohlc',theme = chartTheme('white',up.col = 4,dn.col = 2,grid.col = 3,main.col = 1,sub.col = 4),major.ticks = 'day',minor.ticks = TRUE,plot = TRUE,color.vol = F,multi.col = F))");


Buenas tardes.

Yo no trazo de esta manera de MT. Es engorroso y no es conveniente. Los gráficos interactivos y cualquier otro deberían construirse desde R vía shiny.

En la parte V del artículo adjuntaré un Expert Advisor con la salida de un gráfico sencillo. Pero no entiendo por qué necesita un gráfico de cotizaciones?

Mi intención era dar salida a un gráfico de resultados de pruebas, resultados de operaciones en tiempo real y un desglose por hora, símbolo, etc. Tal vez no voy a hacer todo en este Asesor Experto.

Para trabajar con tiempo/fecha mire el paquete más conveniente timekt. Su elección.

Suerte

 

Hola, Vladimir,

1) por qué

v.rstl = c(NA, diff(rstl)*10)

se multiplica por 10, pero los demás no?

Con la normalización el efecto de multiplicación - desaparecerá.

2) Los filtros digitales se cuentan por precios de Cierre. Al principio de la barra el precio de Cierre es desconocido (e igual al de Apertura). Y contando por el precio de Cierre - se obtiene una visión del futuro, lo que aumenta ligeramente la precisión.
¿Tal vez debería contar los filtros por el precio de Cierre de la barra anterior o al menos por el precio de Apertura de la barra actual?

Para el experimento traté de contar los filtros por Open - los resultados empeoraron en un pequeño porcentaje.
Según el experimento del artículo 6

#---5-----best----------------------
[1] 0.677 0.674 0.673 0.672 0.669 0.669 0.668

en lugar del Close [1] 0.720 0.718 0.718 0.718 0.715 0.713 0.713 0.712.

3) ¿Por qué se excluyen los filtros FATL, SATL, RFTL, RSTL de los cálculos posteriores? El cálculo es sólo en osciladores. Intenté dejarlos, clusterSim los consideró importantes y no los filtró, el entrenamiento resultó en un error de alrededor del 50%, es decir, aunque son importantes, empeoran significativamente el resultado.
¿Supongo que tiene sentido utilizar sólo osciladores como entradas para las redes neuronales?
 
elibrarius:

Hola, Vladimir,

1) por qué

se multiplica por 10, pero los demás no?

Con la normalización el efecto de multiplicación - desaparecerá.

2) Los filtros digitales se cuentan por precios de Cierre. Al principio de la barra el precio de Cierre es desconocido (e igual al de Apertura). Y contando por el precio de Cierre - se obtiene una visión del futuro, lo que aumenta ligeramente la precisión.
¿Tal vez debería contar los filtros por el precio de Cierre de la barra anterior o al menos por el precio de Apertura de la barra actual?

Para el experimento traté de contar los filtros por Open - los resultados empeoraron en un pequeño porcentaje.
Según el experimento del artículo 6

#---5-----best----------------------
[1] 0.677 0.674 0.673 0.672 0.669 0.669 0.668

en lugar del Close [1] 0.720 0.718 0.718 0.718 0.715 0.713 0.713 0.712.

3) ¿Por qué se excluyen los filtros FATL, SATL, RFTL, RSTL de los cálculos posteriores? El cálculo es sólo en osciladores. Intenté dejarlos dentro, pero clusterSim los consideró importantes y no los filtró. Como resultado del entrenamiento obtuve un error de alrededor del 50%, es decir, aunque son importantes, empeoran significativamente el resultado.
¿Supongo que tiene sentido utilizar sólo osciladores como entradas para las redes neuronales?

Buenas tardes.

1. Este predictor tenía valores muy pequeños y podía caerse durante la normalización. Simplemente lo ajusté al rango de los otros predictores. Con el método SpatialSign, los predictores no deberían diferir en órdenes de magnitud.

2. Todos los valores de cotización se toman de las barras formadas a partir de 1. En general, es mejor contar un zigzag por High/Low. En los últimos artículos he proporcionado variantes de cálculo de ZZ.

3. Estas 4 son líneas continuas y no son aplicables como entradas. La primera diferencia sobre ellos es aplicable

v.fatl = c(NA, diff(fatl)),
v.rftl = c(NA, diff(rftl)),
v.satl = c(NA, diff(satl)),
v.rstl = c(NA, diff(rstl)*10))

Los filtros digitales tienen una ventaja importante sobre otros indicadores - no son paramétricos (convencionalmente hablando, por supuesto). Pero me gustan mucho.

Suerte

 

Hola, pues siguiendo tu artículo (1ª vez tocando R), justo en el 2º ladrillo de código me encontré con el siguiente error :

Error en evalq({ : objeto 'env' no encontrado

¿env significa aquí algo nombrado en el software del pc ? ¿O es realmente un objeto que se creó automáticamente?


Impresionante artículo, voy a encontrar una manera de superarlo, sería impresionante si pudieras ayudar :)

(Usando RStudio e instalado MRO 3.5.3 (porque 3.4.0 estaba obsoleto))

 
ferox875 :

Hola, siguiendo tu artículo (tocando R por primera vez), justo en el segundo bloque de código, me he encontrado con el siguiente error:

Error in evalq ({: object 'env' not found

¿aquí env significa algo nombrado en el software de pc? ¿O es realmente un objeto autogenerado?


Gran artículo, voy a encontrar una manera de superarlo, sería genial si pudieras ayudar :)

(Usando RStudio e instalando MRO 3.5.3 (ya que 3.4.0 está obsoleto))

El objeto env fue creado para separar los datos de varias herramientas. Justo al principio del script escriba

env <- new .env()
ls(env)
character( 0 )
env$a <- 23
ls(env)
[ 1 ] "a"
> env$a
[ 1 ] 23 

Buena suerte.

 

Estimado MR. Vladimir Perervenko, muchas gracias por su rápida respuesta, después de tomar un curso de R espero hacer por lo menos lo suficiente para merecer el estudio de su impresionante trabajo, muchas gracias por compartir Sr. Vladimir.



Saludos cordiales


Ferox

 

Hola de nuevo Sr. Perervenko, espero que se encuentre bien. Tengo una nueva pregunta, cuando usted escribió por primera vez sobre ZigZag :

#------ZZ-----------------------------------
par <- c(25, 5)
ZZ <- function(x, par) {
# x - vector
  require(TTR)
  require(magrittr)
  ch = par[1] 
  mode = par[2]
  if (ch > 1) ch <- ch/(10 ^ (Dig - 1))
  switch(mode, xx <- x$Close,
         xx <- x$Med, xx <- x$Typ,
         xx <- x$Wd, xx <- x %>% select(High,Low))
  zz <- ZigZag(xx, change = ch, percent = F, 
               retrace = F, lastExtreme = T)
  n <- 1:length(zz)
  for (i in n) { if (is.na(zz[i])) zz[i] = zz[i - 1]}
  return(zz)
}

en la línea 9, ¿cuál es el significado del objeto Dig?

No pude encontrarlo en el proyecto o en los paquetes requeridos ...


Saludos cordiales MR. Perervenko


Ferox