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

 
Bueno, se lo han restregado y lo han prohibido. Lo principal borrado, cómo hacer una SIM holandesa por un par de dólares))))
 
Valeriy Yastremskiy #:
Bueno, se lo han restregado y lo han prohibido. Lo principal borrado, como hacer una SIM holandesa por un par de dólares))))

y gracias a Dios).

 

¿Existen scripts de gestión de mani para mt5?

como

1) si entras en una operación, el stop se pone automáticamente.

2) si obtienes una pérdida en la cuenta, no te permite abrir más operaciones, etc.

 
mytarmailS #:

¿Existe algún script maniengente para mt5?

como

1) si usted entra en un comercio, la parada se establece automáticamente

2) si tienes pérdidas en tu cuenta, no te permite abrir más operaciones, etc.

Es curioso, justo ayer estaba pensando "¿Qué pasa si MO se utiliza no para la dirección de la entrada en el mercado, pero para la gestión, en particular, para gestionar la transferencia a breakeven, establecer paradas y take-outs".

Debe haber un montón de esas cosas en la base de código - buscarlos.

 
mytarmailS #:

Alexey, creo que lo sabes, pero tal vez no, así que te mostraré cómo funcionan los algoritmos que toman como entrada hojas/vectores de longitud variable


Tenemos una hoja con vectores de longitud variable, un vector == una observación.

¿Qué hace el modelo, el algoritmo "bajo el capó" cuando toma estos datos? Los convierte en una matriz.

Pero como para los datos reales la matriz es enorme, el algoritmo convierte los datos en una matriz dispersa eficiente en memoria.

Así que sigue siendo una matriz bajo el capó). (datos cuidadosos)


Todas las cestas de la compra se reducen naturalmente a vectores de tamaño fijo conocido, igual al número de artículos de la tienda.

Nuestro caso es bastante diferente. Para simplificar, supongamos que los precios son una secuencia de barras de renko, cada una de ellas etiquetada con 1 o -1. Para cada barra situada en la posición N, el vector de características son todas las barras anteriores: un vector de 1 y -1 de longitud N-1. No hay restricciones a priori sobre la longitud del vector de características. El uso de un número fijo (por nosotros) de barras para las características es una medida forzada. Queremos alejarnos de esta restricción y construir algoritmos que puedan manejar vectores de longitud arbitraria.

Las funciones recursivas me parecen una fuente de material matemático para tales algoritmos. Toman como entrada un vector de cualquier tamaño, pero se definen mediante funciones con un número fijo de argumentos. El ejemplo más sencillo es la media exponencial.

 
Aleksey Nikolayev #:

Todas las cestas de productos se reducen naturalmente a vectores de tamaño prefijado conocido igual al número de artículos de todos los productos de la tienda.

Nuestro caso es bastante diferente. Para simplificar, dejemos que los precios sean una secuencia de barras de renko, cada una etiquetada como 1 o -1. Para cada barra situada en la posición N, el vector de características son todas las barras anteriores, es decir, un vector de 1 y -1 de longitud N-1. No hay ninguna restricción a priori sobre el número de barras. No hay restricciones a priori sobre la longitud del vector de características. El uso de un número fijo de compases para las características es una medida forzada. Nos gustaría alejarnos de esta restricción y construir algoritmos que puedan manejar vectores de longitud arbitraria.

Me parece que las funciones recursivas son una fuente de material matemático para tales algoritmos. Toman como entrada un vector de cualquier tamaño, pero se definen mediante funciones con un número fijo de argumentos. El ejemplo más sencillo es la media exponencial.

¿Qué se quiere buscar exactamente y de qué manera?

Por ejemplo, tenemos un patrón, tres picos, o lo que sea (regla, evento, patrón, cluster).


Puede pasar cualquier cosa entre ellos, lo tomamos como ruido y no lo tenemos en cuenta.

Tomamos un vector/matriz ruidoso como entrada y comprobamos si hay un patrón o no....

¿Estás considerando este concepto u otro?

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

Yo lo veo como una secuencia de eventos que deben suceder, y se describen mediante reglas log...

evento == regla lógica.

Por ejemplo: si ocurrió el evento 1 y no hubo evento 2, entonces esperamos el evento 3 , etc. ....

Así que hay dos tipos de reglas/eventos, eventos "go" cuando la búsqueda continúa y eventos "stop" cuando todo se cancela.


La arquitectura es la siguiente

1) la gramática genera las reglas

2) el algoritmo de generación busca y mejora las reglas mediante funciones de adecuación.

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

He aquí un ejemplo de gramática simple para datos multidimensionales, en este caso OHLC.

library(gramEvol)

Xcolnames <- c("open","high","low","close")

ruleDef <- list(
  res = grule(t(as.data.frame(multi.expr))),
  
  multi.expr = grule( c(single.expr, single.expr, single.expr,
                        single.expr, single.expr, single.expr)),
  
  single.expr = grule(list(r=c( go_rules   = as.character(expression(Expr)),
                                stop_rules = as.character(expression(Expr))))),
  
  
  Expr     = grule(expr, expr & expr ),
  
  expr     = grule(logy_op(one_var,one_var) ),
  one_var  = gsrule('X[<id>,<var_name>]'),
  
  id       = grule(i,numb,i+numb),
  numb     = gvrule(1:10),
  var_name = gvrule(Xcolnames),
  logy_op  = grule(">","<"))

grammarDef <- CreateGrammar(ruleDef)
gr <- GrammarRandomExpression(grammarDef, 1)
rbind.data.frame(eval(gr))


las reglas que genera la gramática.

Este bloque de reglas es como una regla simple con un montón de condiciones.

"X" es una matriz con atributos, el bucle "i" se pasea por ella y elige lo que quiere, un sistema muy flexible.

                                                       go_rules
r   X[i, "low"] < X[2, "close"] & X[i + 3, "low"] > X[i + 2, "low"]
r.1                             X[i + 2, "open"] < X[i + 8, "high"]
r.2   X[2, "open"] < X[i + 3, "high"] & X[i, "high"] < X[8, "high"]
r.3                                   X[1, "low"] < X[i + 8, "low"]
r.4   X[3, "open"] > X[3, "close"] & X[i + 1, "open"] < X[2, "low"]
r.5                                 X[i, "high"] < X[i + 2, "open"]
                                                       stop_rules
r                                    X[i, "open"] > X[2, "close"]
r.1  X[i, "low"] > X[i, "high"] & X[i + 2, "high"] < X[i, "high"]
r.2                                  X[3, "high"] < X[2, "close"]
r.3    X[1, "high"] > X[2, "open"] & X[i, "high"] > X[i, "close"]
r.4                                  X[4, "open"] < X[2, "close"]
r.5 X[i, "high"] < X[1, "high"] & X[2, "low"] < X[i + 2, "close"]

En principio ya está todo implementado, si hay interés os lo puedo tirar.



PD no hay restricción en el tamaño de la matriz de atributos, cada instancia puede ser de cualquier tamaño, lo principal aquí es que todas las reglas funcionaran en orden, no hay vinculación al tiempo.

 
mytarmailS #:

¿Qué quiere buscar exactamente y de qué manera?

Por ejemplo, tenemos un patrón, tres picos, o lo que sea (regla, evento, patrón, cluster).


Puede ocurrir cualquier cosa entre ellos, lo tomamos como ruido y no lo tenemos en cuenta.

Así que tomamos un vector/matriz ruidoso como entrada y comprobamos si hay un patrón o no....

¿Es un concepto que estás considerando u otra cosa?

Mi concepto es lo más amplio posible, ya que no hay restricciones especiales impuestas, y muchas cosas encajan en él. Probablemente tu ejemplo también encaje en él. Especialmente importante es el hecho de que no hay una longitud de patrón rígidamente definida.

En cualquier caso, para mí la cuestión es que en SB la probabilidad de 1 o -1 es siempre 0,5 y se deben buscar lugares en los que la probabilidad (frecuencia) se desvíe mucho de este valor. En tu patrón esto podría ser, por ejemplo, las pendientes del tercer pico.

Supongo que la regla "estamos en la pendiente izquierda del tercer pico" puede expresarse mediante funciones recursivas. Pero realmente no creo que estas funciones se puedan escribir fácilmente de forma explícita, por lo que se necesitan algoritmos de MO para construirlas.

 
Aleksey Nikolayev #:

Pero realmente no creo que estas funciones puedan escribirse fácilmente de forma explícita, por lo que necesitamos algoritmos de MO para construirlas.

Pues bien, te he propuesto un algoritmo que se adapta a tus requisitos


1) sin límite de tiempo, ya que escribimos nosotros mismos lo que necesitamos

2) cualquier lógica de búsqueda de regularidades, ya que escribimos nosotros mismos lo que necesitamos

3) cualquier elección de descripción de la regularidad, ya sea por log. reglas o por funciones , porque escribimoslo que necesitamos nosotros mismos.


Así pues, en el concepto que propongo

estos patrones serán equivalentes, y los patrones mismos pueden ser de cualquier complejidad.

     open high low close
[1,]    1    0   0     0
[2,]    0    1   0     0
[3,]    0    0   1     0
[4,]    0    0   0     1
[5,]    0    0   0     0
      open high low close
 [1,]    0    0   0     0
 [2,]    0    0   0     0
 [3,]    1    0   0     0
 [4,]    0    0   0     0
 [5,]    0    0   0     0
 [6,]    0    1   0     0
 [7,]    0    0   1     0
 [8,]    0    0   0     0
 [9,]    0    0   0     0
[10,]    0    0   0     1

y ningún AMO puede hacer eso.

y hay reglas de "parada", y ningún AMO puede hacer eso tampoco.

Me refiero a un AMO de propósito general con datos tabulares como entrada.

 
mytarmailS #:

¿Qué quiere buscar exactamente y de qué manera?

Por ejemplo, tenemos un patrón, tres picos, o lo que sea (regla, evento, patrón, cluster).

Son tres picos en zigzag con cualquier cosa en medio.

 
elibrarius #:

Son 3 vértices de un zigzag con cualquier cosa en medio.

и?

Razón de la queja: