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

 
mytarmailS:

recibió una advertencia

Lógicamente, el script intentó leer la tabla previamente creada desde el archivo rdata, pero falló, por lo que se atascó. La próxima vez que ejecute el script, se leerá el archivo rdata con la tabla y no habrá warping.


NA - también es lógico, los datos para crear un modelo deben ser preparados, no tomados de la salida bruta de esos indicadores. Hay mucho más que se puede hacer allí -

<NA> al principio de la tabla está bien, los candelabros después de todo requieren al menos 23 barras. Para los primeros 23 compases siempre se puede esperar NA.
No llené la tabla hasta el ancho de la ventana, no sólo habrá NA, pero se puede esperar "algunos resultados no tan" debido a la menor profundidad de los cálculos de los indicadores.
Mejor cortar todas las primeras líneas al ancho de la ventana.
trainData <- trainData[-(1:indicatorDepth), ]

Corregir <NA> en los nombres de las columnas excepto en el objetivo: colnames(trainData)[-ncol(trainData)] <- paste0("pred",1:(ncol(trainData)-1))

Sustituya el objetivo por 1 para todos los positivos, y por -1 para todos los negativos. O {0;1} si tienes neuronas.

Aquellos indicadores que contienen algunos valores cercanos a los precios - escalan a 0-1, o cuentan deltas. (por ejemplo los valores MA siempre están cerca del precio, necesitan ser escalados o delta. Y el RSI siempre está en su propio rango de 0 a 100, y eso en sí mismo es algo bueno. Si los valores del indicador pueden ir más allá de los valores conocidos durante el entrenamiento - delta de él, no va a empeorar)

Para las neuronas en general es mejor escalar todos los indicadores en 0-1.

Y así sucesivamente.

Pero NA en las columnas 46-51 - realmente hay algo mal. O bien devuelven todo en otro formato y necesitamos otro código específicamente para insertarlos en la tabla.
O - estos indicadores sólo devuelven NA por sí mismos; tal vez necesitan un mayor ancho de ventana; o siempre devuelven NA para la última barra y luego reemplazan NA en base a los datos de la nueva barra, lo cual es redibujar, y malo.

 
SanSanych Fomenko:

Aquí viene una nueva barra, que es el heraldo de una inversión del mercado. Pero nosotros, siguiendo alimentando a la vaca sagrada, no cambiamos nuestra visión de la historia en aras de alguna idea, sacada de la sección de "análisis".

Para el comercio simple esto es bastante excelente, estoy de acuerdo. El indicador ha encontrado algún tipo de patrón que acaba de surgir y nos lo ha mostrado, todo está bien.

Pero hay que preparar los datos y entrenar el modelo. Si un indicador está sobredimensionado, suele significar que los valores de las barras pasadas cambian constantemente en función de los nuevos datos, es decir, que se vislumbra el futuro. Y el modelo acaba aprendiendo de estos valores de cara al futuro, nada bueno puede salir de ello.
Aunque, tales indicadores pueden ser utilizados como un objetivo para el aprendizaje, el mismo zigzag, por ejemplo, mira 100 barras por delante, es por eso que atrae las tendencias.

 
Dr.Trader:

Pero NA en las columnas 46-51 - hay realmente algo que no funciona. O bien los indicadores devuelven todo en un formato diferente y necesitan un código diferente específicamente para insertarlos en la tabla.

O - estos indicadores sólo devuelven NA por sí mismos; tal vez se necesita un ancho de ventana mayor; o siempre devuelven NA para la última barra y luego reemplazan NA basado en los datos de la nueva barra, lo cual es redibujar, y malo.

Lo he comprobado, parece que hay un exceso de extracción. Para la última barra el indicador nextCandlePosition siempre devuelve NA. Y luego, en la siguiente barra, reemplaza a NA con algo que parece correcto. @mytarmailS Prueba de nuevo tu primer código, pero sin este indicador y entrena el modelo, creo que el resultado será peor.

He corregido mi script para tomar el penúltimo valor de nextCandlePosition en lugar del último, ahora no habrá NA en las últimas filas de la tabla.

 
Dr.Trader:

Para el comercio simple esto es bastante excelente, estoy de acuerdo. El indicador ha encontrado algún tipo de patrón que acaba de surgir, y nos lo ha mostrado, todo está bien.

Pero hay que preparar los datos y enseñar el modelo. Si el indicador se redibuja, suele significar que los valores de las barras anteriores cambian constantemente en función de los nuevos datos, es decir, que hay una mirada hacia el futuro. Y el modelo acaba aprendiendo de estos valores de cara al futuro, nada bueno puede salir de ello.
Aunque, tales indicadores pueden ser utilizados como un objetivo para el aprendizaje, el mismo zigzag, por ejemplo, mira 100 barras por delante que es por lo que atrae las tendencias.

Utilicemos un ejemplo sencillo.

1. Dibujamos un alisado de Hodrick-Prescott. Está redibujado.

En la barra actual la tangente mira hacia arriba. En la siguiente barra la tangente apunta hacia abajo - el indicador se redibuja al tener en cuenta los cambios actuales. Previsión de un paso adelante - hacia abajo.

2. Dibujando la tangente.

En la barra actual la tangente tiene tendencia al alza. En la siguiente barra la tangente mira hacia arriba - el indicador aún no ha alcanzado los cambios.

Tenga en cuenta que el indicador HP deja de redibujarse a partir de 10-15 barras.

¿Su elección y por qué?

 
SanSanych Fomenko:

¿Su elección y por qué?

En el comercio de la mano - puedo suponer que hay buenas estrategias utilizando ambos indicadores. No conozco ninguna estrategia de este tipo, por lo que no negociaría con ellos.

En el aprendizaje automático, elegiré el asistente. El indicador de retardo es mejor que cualquier indicador de retardo.

 
Dr.Trader:

Lo he comprobado, parece que hay un exceso de extracción. Para la última barra el indicador nextCandlePosition siempre devuelve NA. Y en la siguiente barra sustituye a NA por algo necesario. @mytarmailS Prueba de nuevo tu primer código, pero sin este indicador y entrena el modelo, creo que el resultado será peor.

He corregido mi script para tomar el penúltimo valor de nextCandlePosition en lugar del último, ahora no habrá NA en las últimas filas de la tabla.

Escribí que había borrado unos seis de los mejores predictores para eliminar sólo los que podían sobrepintar, pero la precisión ha bajado un 3% aproximadamente, probablemente todos estén sobrepintados...

Entonces, ¿ya has entrenado el modelo? ¿Quizás deberías empezar con algunos miles para probarlo en lugar de contar 50k de una vez?

 
aunque lo que se puede redibujar allí no lo sé, la gran mayoría de las formaciones de velas tienen sólo tres opciones de salida TRUE,FALSE,NA
 
mytarmailS:

Sí, escribí que he eliminado alrededor de seis de los mejores predictores para sólo eliminar los que pueden redraw, pero la precisión ha caído literalmente 3%, no probablemente todos redraw ...

Tomé su código, eliminé 6 indicadores obtenidos de nextCandlePosition (X27), obtuve una precisión del 52% en lugar del 100%. Con índices ligeramente diferentes para el entrenamiento, la precisión es a veces inferior al 50%. En definitiva, un azar.

mytarmailS:
aunque lo que se podría redibujar no lo sé, sólo hay tres salidas TRUE,FALSE,NA en la gran mayoría de las formaciones de velas

Usando nextCandlePosition - se obtienen valores realmente relevantes para la siguiente barra, aquí mirando hacia el futuro para 1 paso.

Así que no funcionó.

 
Dr.Trader:

Tomé su código, eliminé 6 indicadores obtenidos de nextCandlePosition (X27), obtuve una precisión del 52% en lugar del 100%. Con índices ligeramente diferentes para el entrenamiento, la precisión es a veces inferior al 50%. En general, al azar.

Usando nextCandlePosition - se obtienen los valores realmente relevantes para la siguiente barra, aquí mirando hacia el futuro en 1 paso.

En general, no funciona.

Bueno, es bueno que todo se aclare, no creía realmente en el grial.

 

Existe un nuevo y muy prometedor paquete RKEEL de entrada a KEEL.

Buena suerte

KEEL: Software tool. Evolutionary algorithms for Data Mining
  • www.keel.es
KEEL contains classical knowledge extraction algorithms, preprocessing techniques, Computational Intelligence based learning algorithms, evolutionary rule learning algorithms, genetic fuzzy systems, evolutionary neural networks, etc.