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

 

Evolución gramatical / regresión simbólica, una versión más avanzada de la programación genética....

Con estas herramientas, puede buscar automáticamente patrones de cualquier tipo.


Por ejemplo, puede buscar el control óptimo de indicadores a través de una fórmula.

creamos una plantilla de funciones (área de búsqueda)

library(gramEvol)
ruleDef <- list(expr  = grule(op(expr, expr), func(expr), var),
                func  = grule(sin, cos, log, sqrt),
                op    = grule("+", "-", "*","/"),
                var   = grule(distance, distance^n),
                n     = grule(1, 2, 3, 4))

grammarDef <- CreateGrammar(ruleDef)
gr <- GrammarRandomExpression(grammarDef,numExpr = 10,max.depth = 5)
q <- as.matrix(unlist(lapply(gr,as.character)),ncol=1)
q

y automáticamente crea fórmulas

[1,] "sqrt(log(cos(sqrt(cos(distance^2)))))"                                                                  
 [2,] "sin(log(sqrt(sin(sqrt(distance * distance))) * (sin(log(distance^3)) - cos(cos(distance)) - distance)))"
 [3,] "(sin(distance * sqrt(sin(distance * sqrt(distance^3)))) + distance^1)/distance"                         
 [4,] "sin(log(log(distance^4)))"                                                                              
 [5,] "distance"                                                                                               
 [6,] "distance^4"                                                                                             
 [7,] "log(sin(distance)) * (log(distance) - cos(distance^4 - distance^4))"                                    
 [8,] "distance^1"                                                                                             
 [9,] "distance"                                                                                               
[10,] "log(distance) * (distance/log((distance^4 - distance^3) * distance^2))"        

que luego buscan genéticamente la mejor solución.

=====================

O es posible crear reglas de registro, buscando así regularidades.

De nuevo creamos una plantilla de función (área de búsqueda).

library(gramEvol)
ruleDef <- list(
  expr = grule(expr & sub.expr, 
               expr | sub.expr, 
               sub.expr),
  sub.expr = grule( com(var, var) ),
  com = grule(">=","<="),
  var = grule(x,y,w,z,q,y,r)
  )

grammarDef <- CreateGrammar(ruleDef)
gr <- GrammarRandomExpression(grammarDef,numExpr = 15,max.depth = 3)

q <- as.matrix(unlist(lapply(gr,as.character)),ncol=1)
q

Y el resultado son reglas

[1,] "x >= y"                  
 [2,] "y <= y | y >= y | w >= y"
 [3,] "y <= x"                  
 [4,] "y <= y"                  
 [5,] "y <= r"                  
 [6,] "z <= z"                  
 [7,] "y <= y"                  
 [8,] "x <= y"                  
 [9,] "z <= y | y >= z & r >= y"
[10,] "z >= x"                  
[11,] "y >= y | q >= y | q >= q"
[12,] "y >= y | q <= y | z >= q"
[13,] "y >= y | x <= y | x >= x"
[14,] "y >= r"                  
[15,] "y >= w"

cuya idoneidad se comprueba a continuación mediante la genética.

=============================

Si tienes una TS y quieres mejorarla pero no tienes suficiente imaginación para probar millones de variantes, puedes intentar hacerlo con la ayuda de un algoritmo.

Porejemplo, tenemos un punto de entrada: ruptura del bolinger con el precio a la baja ("PRECIO < BOLINGER").

Añadimos esta regla a nuestra gramática.

library(gramEvol)
ruleDef <- list(
  expr = grule(expr & sub.expr, 
               expr | sub.expr, 
               sub.expr),
  sub.expr = grule( com(var, var)  ,  PRICE < BOLINGER),
  com = grule(">=","<="),
  var = grule(x,y,w,z,q,y,r)
  )

grammarDef <- CreateGrammar(ruleDef)
gr <- GrammarRandomExpression(grammarDef,numExpr = 15,max.depth = 3)

q <- as.matrix(unlist(lapply(gr,as.character)),ncol=1)
q

Las reglas son un poco estúpidas, pero eso es porque se generan aleatoriamente.

[1,] "y >= q"                                                                                                        
 [2,] "PRICE < BOLINGER & y >= y | x >= x"                                                                            
 [3,] "PRICE < BOLINGER | PRICE < BOLINGER & x <= y | y <= w"                                                         
 [4,] "r <= y & PRICE < BOLINGER | w >= x | y <= x"                                                                   
 [5,] "PRICE < BOLINGER | PRICE < BOLINGER | y <= y & PRICE < BOLINGER"                                               
 [6,] "PRICE < BOLINGER"                                                                                              
 [7,] "PRICE < BOLINGER & PRICE < BOLINGER & z <= x | PRICE < BOLINGER & PRICE < BOLINGER | PRICE < BOLINGER | z <= x"
 [8,] "y <= y | PRICE < BOLINGER | x <= y | PRICE < BOLINGER | PRICE < BOLINGER"                                      
 [9,] "PRICE < BOLINGER & x <= y | y <= q & PRICE < BOLINGER"                                                         
[10,] "q >= z & PRICE < BOLINGER | q >= w & y <= x"                                                                   
[11,] "PRICE < BOLINGER | PRICE < BOLINGER"                                                                           
[12,] "w >= y"                                                                                                        
[13,] "PRICE < BOLINGER"                                                                                              
[14,] "y <= y & PRICE < BOLINGER | q >= x | PRICE < BOLINGER"                                                         
[15,] "q >= x" 

La cuestión es que reducimos mucho el espacio de búsqueda si añadimos nuestra propia regla.

Si tenemos una buena regla y no sabemos cómo mejorarla, pero queremos hacerlo, podemos "revestirla" con otras reglas y comprobarla automáticamente.

 
mytarmailS #:

Evolución gramatical / regresión simbólica, una versión más avanzada de la programación genética....

Puede utilizar estas herramientas para buscar automáticamente patrones de cualquier tipo.


Por ejemplo, puedes buscar el control óptimo de un indicador mediante la fórmula

crear una plantilla de función (área de búsqueda)

y crea automáticamente fórmulas:

que luego busca genéticamente la mejor solución.

=====================

O puedes crear reglas de registro, para buscar patrones.

Una vez más crear una plantilla de función (área de búsqueda )

Y en la salida obtenemos las reglas

que luego se comprueba la idoneidad por la genética.

=============================

Si tienes una CT y quieres mejorarla pero no tienes suficiente imaginación para probar millones de variantes, puedes intentar hacerlo con la ayuda de un algoritmo.

Porejemplo, tenemos un punto de entrada: ruptura del bolinger con el precio a la baja ("PRECIO < BOLINGER").

Añadimos esta regla a nuestra gramática.

Las reglas son un poco estúpidas, pero eso es porque se generan aleatoriamente.

La cuestión es que reducimos mucho el espacio de búsqueda si añadimos nuestra propia regla.

Si tenemos una buena regla y no sabemos cómo mejorarla, pero queremos hacerlo, podemos "revestirla" con otras reglas y comprobarla automáticamente.

Es como poner árboles profundos alrededor de los signos.
 
Maxim Dmitrievsky #:
Es como poner árboles profundos alrededor de las señales.
Estos son ejemplos simples, sólo para entender la versatilidad de la herramienta.

En lugar de simples perennes, podría ser funciones, o redes neuronales, o lo que quieras.


Y todo esto será automático.
 
mytarmailS #:
Estos son ejemplos sencillos, sólo para entender la versatilidad de la herramienta.

En lugar de simples paréntesis, pueden ser funciones, o redes neuronales, o lo que quieras


Y todo esto será en aceite automático
Esperamos el desarrollo del tema
 
elibrarius #:

Una pregunta para los que se dedican a la MO.
¿Cómo te motivas para este empeño casi desesperado?
En 18, cuando empecé, tenía unos pequeños ingresos y un incentivo material, o más bien la esperanza de que la MO en el mercado ayudara.

Ahora consigo muchas veces más, casi pasivamente, no del mercado. La cuestión material no me preocupa. En los últimos 2 años he hecho MO 3 veces durante 1-2 meses, para comprobar la idea que me interesaba.
Tengo tiempo libre, pero me da pereza gastarlo en MO después de muchos experimentos sin éxito. Como tengo casi ninguna esperanza de retorno. La única cosa - sólo para tener otra fuente en caso de otro desplome financiero (si algo resulta). Pero el motivo es débil en este momento.

¿Quién se motiva con qué?

Larga relación con forex. Comenzó como analista en una casa de bolsa (educación económica), luego trabajó como distribuidor y asistente de gerente, el comercio, a continuación, se interesó en los robots y MO.

Había un montón de ineficiencias (incluidos los técnicos), cuando me las arreglé para sacar sumas decentes
 
Maxim Dmitrievsky #:

Tengo una larga relación con forex. Empecé como analista en un centro de corretaje (formación económica), luego trabajé como dealer y subdirector, operé, luego me interesé por los bots y MO

Hubo muchas ineficiencias (incluso técnicas), cuando conseguí sacar sumas decentes.
La motivación sigue siendo ganancias?
Bueno, nadie con la ayuda de MO no funciona fuera.... todo el mundo está buscando.
 
elibrarius #:
¿La motivación es todo acerca de ganar dinero?
Bueno, parece que nadie con la ayuda de MO está haciendo bien.... todo el mundo está mirando.

No solo eso, es un impulso irracional.

como cuando eras niño te gustaba romper juguetes y construir otros nuevos.
 
Maxim Dmitrievsky #:

No sólo eso, es un impulso irracional.

Como cuando era niño me gustaba romper juguetes y hacer otros nuevos.

En general, creatividad. Pero la creatividad "sobre la mesa", porque todo este trabajo es poco probable que sea visto y apreciado por nadie.

 
Y otros partidarios del Ministerio de Defensa: ¿cuál es la motivación?
 
elibrarius #:

En general, creatividad. Pero la creatividad "en el escritorio", porque casi nadie va a ver y apreciar todo este trabajo.

Hay algo de que hablar con gente inteligente, no de política, aunque