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

Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Aguanta. También analizaré tus datos para ver las dependencias.
Una pregunta antes de empezar. ¿Incluyen sus datos todas las barras de una fila, o hubo un adelgazamiento de las barras antes del muestreo?
R1, R2, R3 en una fila y dentro de ellos también en una fila es una serie de tiempo en H1.
Ya veo. Bueno, con tus datos entiendo a grandes rasgos cómo se trabaja.
También quiero entender al Dr. Trader.
También tengo H1, la muestra incluye datos de las últimas 4 barras. open[1]-high[1]-close[1]-...-open[2]-high[2]-close[2]-... etc., los datos allí son de las estructuras MqlRates y MqlDateTime, además hay un par de indicadores y precios de cierre de marcos temporales más altos, todo está normalizado en el intervalo [0..1]. El resultado de 1 o 0 es el aumento o disminución del precio en la siguiente barra. Pero está claro que todo esto no es suficiente.
El problema es que no sabemos cuántas barras necesitamos. El Neuronka sólo necesita 3 barras para reentrenarse hasta un error del 0% (y por tanto el 50% de él estará en el fronttest). O bien, si se entrena con control y se detiene a tiempo, el error de la prueba frontal será un par de puntos porcentuales menos. Pero, es posible tomar cientos de barras en absoluto, y lograr aproximadamente el mismo resultado, aunque cada nueva barra en la muestra es una gran cantidad de basura y, en consecuencia, la disminución de la calidad del modelo.
Yo también tengo H1, la muestra incluye datos de las últimas 4 barras. open1-high1-close1-...-open2-high2-close2-... etc. Los datos de las estructuras MqlRates y MqlDateTime. El resultado de 1 o 0 es el aumento o disminución del precio en la siguiente barra.
Un pequeño añadido al post anterior. No, no hay deltas. Tendré que probarlo.
También tengo H1, la muestra incluye datos de las últimas 4 barras. open[1]-high[1]-close[1]-...-open[2]-high[2]-close[2]-... etc., los datos allí son de las estructuras MqlRates y MqlDateTime, además hay un par de indicadores y precios de cierre de marcos temporales más altos, todos normalizados en el intervalo [0..1]. El resultado de 1 o 0 es el aumento o disminución del precio en la siguiente barra. Pero está claro que todo esto no es suficiente.
El problema es que no sabemos cuántas barras necesitamos. El Neuronka sólo necesita 3 barras para reentrenarse hasta un error del 0% (y por tanto el 50% de él estará en el fronttest). O bien, si se entrena con control y se detiene a tiempo, el error de la prueba frontal será un par de puntos porcentuales menos. Sin embargo, es posible tomar cientos de barras y conseguir el mismo resultado, aunque cada nueva barra de la muestra supone una enorme cantidad de basura y la correspondiente disminución de la calidad del modelo.
Bueno, hay que hacer ingeniería de funciones. No es necesariamente el uso de indicadores estándar. Se necesita imaginación y comprensión del proceso. Dar sólo los datos de la barra de la caja negra puede no ser suficiente. Y la profundidad de la que se toma la información es importante. Yo, por ejemplo, he visto en mis investigaciones que hay que alimentar una profundidad simétrica en la entrada respecto a la profundidad en la salida. Predecir para 3 horas adelante - dar datos para 3 horas atrás y posteriores.
He aquí un ejemplo de un esquema de desarrollo de predictores que también se refleja en parte en mi investigación. Estos datos ya dan a la máquina mucha información sobre lo que fue:
http://blog.kaggle.com/2016/02/12/winton-stock-market-challenge-winners-interview-3rd-place-mendrika-ramarlina/comment-page-1/
Un pequeño añadido al post anterior. No, no hay deltas. Tendré que probarlo.
Eso es imprescindible.
¿Sabes lo que funciona bien? La diferencia entre el último precio conocido y la media móvil. La ventana de la media debería ser diferente.
Veo la variable objetivo como un calificador de compra/venta, sin los detalles de cuánto tiempo mantener la operación abierta o qué nivel de precios esperar. El EA abre una operación al principio de una barra, y espera a la siguiente barra para tomar la siguiente decisión.
Es más difícil con un sentido lógico :)
Quería entrenar las neuronas para encontrar patrones y formas en un gráfico (cabeza y hombros, etc.). Y tuvo que aprender a encontrar algunas figuras por sí mismo sin mi participación; utilicé la dirección del zigzag como variable objetivo. El significado de la variable objetivo según mi plan debería haber sido "patrón encontrado, la tendencia va a subir, debería comprar" (con resultado=1). Al mismo tiempo, el resultado=0 significaría que la tendencia va a ser alcista y debería vender. He intentado tener en cuenta la fuerza de la señal y no operar cuando el resultado se acerca a 0,5.
Mis pensamientos en voz alta, no lo había pensado antes: parece que mi modelo estaba equivocado, tenía que dar 3 clases para comprar/vender/cerrar_todas_las_operaciones_y_no_comercio. Y hacer 3 salidas de una red, o entrenar 3 redes separadas. No una red con una salida.
Entonces me di cuenta, mediante la experimentación, de que puedo tomar sólo 5 barras en lugar de 200 y nada cambiará, el resultado seguirá siendo el mismo. No creo que el modelo aprenda a encontrar patrones en dicha configuración, sino que encuentra algunas regularidades en el tiempo. Poco a poco he decidido enseñar el modelo no en zigzag sino simplemente en el precio de cierre de la siguiente barra. En este caso no necesito filtrar el resultado de las neuronas, menos problemas con el mismo resultado, no es tan malo. Aquí el significado lógico ya es más sencillo - variable objetivo 0/1 - el precio caerá/subirá en 1 barra.
He estado estudiando el bosque durante los últimos días, y los ejemplos de este foro. Si se toman los mismos 5 compases, el bosque no aprenderá cosas abstractas como las neuronas, sino que derivará reglas bastante específicas. Por ejemplo, el bosque podría derivar una regla "cruce de dos MAs" o algo así. Me parece que con tal conjunto de datos el bosque es mucho más prometedor, aprenderé a usarlo. El significado de la variable objetivo es el mismo - 0/1 - el precio bajará/subirá en 1 barra.
No sé tanto sobre el impacto de los predictores como me gustaría. La hora debe ser utilizada definitivamente, hora/minuto/día de la semana, probablemente una de ellas (¿hora?). No se pueden utilizar predictores con un pequeño conjunto de valores que vayan en fila sin hacer un bucle. Por ejemplo, si la muestra de entrenamiento contiene datos de un año, no se puede utilizar un predictor de "mes". El modelo puede simplemente dividir todos los datos en 12 trozos según los meses, y entrenar una lógica diferente para cada trozo. Y la lógica de enero de 2015 ciertamente no cabrá en un año para la lógica de enero de 2016. Pero si los datos de entrenamiento son de 5 años, entonces "mes" ya podría encajar. Además, no estoy seguro de que el uso de indicadores esté justificado, los EAs sobre indicadores estándar están perdiendo dinero, sería extraño que el modelo entrenado extraiga algo útil de estos datos. Además, tengo entendido que el propio bosque también hace algunos cálculos y puede crear sus propios indicadores internos durante el entrenamiento. También hay que utilizar el precio, aunque no me fío de los precios de apertura y cierre, prefiero los de alta y baja.
Todos estos predictores muestran un tipo de condición de mercado actual y el propósito del modelo es definir estas mismas condiciones usando predictores y hacia dónde va el precio en tales casos. Un modelo debe utilizar la menor cantidad de datos de entrada posible, como la navaja de Occam, entonces existe la posibilidad de que describa alguna dependencia y no se ajuste a los ejemplos.
Veo la variable objetivo como un calificador de compra/venta, sin los detalles de cuánto tiempo mantener la operación abierta o qué nivel de precios esperar. El EA abre una operación al principio de una barra, y espera a la siguiente barra para tomar la siguiente decisión.
Es más difícil con un sentido lógico :)
Quería entrenar las neuronas para encontrar patrones y formas en un gráfico (cabeza y hombros, etc.). Y tuvo que aprender a encontrar algunas figuras por sí mismo sin mi participación; utilicé la dirección del zigzag como variable objetivo. El significado de la variable objetivo según mi plan debería haber sido "patrón encontrado, la tendencia va a subir, debería comprar" (con resultado=1). Al mismo tiempo, el resultado=0 significaría que la tendencia va a ser alcista y debería vender. He intentado tener en cuenta la fuerza de la señal y no operar cuando el resultado se acerca a 0,5.
Mis pensamientos en voz alta, no lo había pensado antes: parece que mi modelo estaba equivocado, tenía que dar 3 clases para comprar/vender/cerrar_todas_las_operaciones_y_no_comercio. Y hacer 3 salidas de una red, o entrenar 3 redes separadas. No una red con una salida.
Entonces me di cuenta, mediante la experimentación, de que puedo tomar sólo 5 barras en lugar de 200 y nada cambiará, el resultado seguirá siendo el mismo. No creo que el modelo aprenda a encontrar patrones en dicha configuración, sino que encuentra algunas regularidades en el tiempo. Poco a poco he decidido enseñar el modelo no en zigzag sino simplemente en el precio de cierre de la siguiente barra. En este caso no necesito filtrar el resultado de las neuronas, menos problemas con el mismo resultado, no es tan malo. Aquí el significado lógico ya es más sencillo - variable objetivo 0/1 - el precio caerá/subirá en 1 barra.
He estado estudiando el bosque durante los últimos días, y los ejemplos de este foro. Si se toman los mismos 5 compases, el bosque no aprenderá cosas abstractas como las neuronas, sino que derivará reglas bastante específicas. Por ejemplo, el bosque podría derivar una regla "cruce de dos MAs" o algo así. Me parece que con tal conjunto de datos el bosque es mucho más prometedor, aprenderé a usarlo. El significado de la variable objetivo es el mismo - 0/1 - el precio bajará/subirá en 1 barra.
No sé tanto sobre el impacto de los predictores como me gustaría. La hora debe ser utilizada definitivamente, hora/minuto/día de la semana, probablemente una de ellas (¿hora?). No se pueden utilizar predictores con un pequeño conjunto de valores que vayan en fila sin hacer un bucle. Por ejemplo, si la muestra de entrenamiento contiene datos de un año, no se puede utilizar un predictor de "mes". El modelo puede simplemente dividir todos los datos en 12 trozos según los meses, y entrenar una lógica diferente para cada trozo. Y la lógica de enero de 2015 ciertamente no cabrá en un año para la lógica de enero de 2016. Pero si los datos de entrenamiento son de 5 años, entonces "mes" ya podría encajar. Además, no estoy seguro de que el uso de indicadores esté justificado, los EAs sobre indicadores estándar están perdiendo dinero, sería extraño que el modelo entrenado extraiga algo útil de estos datos. Además, tengo entendido que el propio bosque también hace algunos cálculos y puede crear sus propios indicadores internos durante el entrenamiento. También hay que utilizar el precio, aunque no me fío de los precios de apertura y cierre, prefiero los de alta y baja.
Todos estos predictores muestran un tipo de condición de mercado actual y el propósito del modelo es definir estas mismas condiciones usando predictores y hacia dónde va el precio en tales casos. Un modelo debe utilizar la menor cantidad posible de datos de entrada, según el principio de la hoja de Occam, pues existe la posibilidad de que describa alguna dependencia y no se ajuste a los ejemplos.
En muchos aspectos nuestros pensamientos se superponen.
Pero al final me quedo con los predictores de ruido. La presencia de predictores de ruido hace que el modelo sobreaprenda y que el resto de razonamientos carezcan de sentido.