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

 
Maxim Dmitrievsky:

Aquí hay uno de ellos. Sólo hay 12 fichas, no 24.

Tengo errores

>>> print(train_score, " ", tst_score)

1.0 0.5454545454545454

Esta es una alfabetización para el tema Maxim puramente del hombro. El archivo que me acaba de enviar tiene un total de 12 entradas. Para empezar con la parte superior, necesito tener 20-24 movimientos, entonces puedo empezar con 11 entradas (para mis capacidades esto es lo máximo) e ir a ellas, reduciendo el número de entradas y navegando por ellas. Cuando optimizo de arriba a abajo, entonces los primeros diez recorridos individuales, lo hago para seleccionar el mejor recorrido y empezar el entrenamiento normal a partir de él. Si no tengo suficientes entradas, suelo empezar desde abajo con 5 entradas e intento aumentar el número de entradas y seleccionar la peor versión de las diez primeras pasadas, para posponer el inicio en la zona de máximo rebasamiento durante el entrenamiento. En el primer caso estoy ahorrando ferozmente mis recursos. En el segundo caso, elijo la peor opción y trato de recorrer todas las variantes posibles en la medida de lo posible.

Lo que tienen esos datos es una mierda. Mira lo que tengo y confío en estos resultados, sólo no confío en tus aportaciones, que se asoman al futuro. Maxim, cómo no te da vergüenza hacer eso, los niños nos miran, y tú haces fotos para ellos y te preguntas por qué no funciona en la retroalimentación.

Vamos a darle ahora le enviaré el modelo y el archivo de formación que usted sabe lo que el número de entrada corresponde a sus designaciones, pero si usted no muestra el modelo de trabajo en los bucles de retroalimentación no voy a hacer que mucho más. Todo el mundo quiere saber cómo funciona. Así que la máquina de shaitan no trabaja gratis.


Sólo un extracto de código básico

vv0[q]=0;//12    вместо нулей подай значения своих входов
vv1[q]=0;//10
vv2[q]=0;//8
vv3[q]=0;//2
double Ress1=getBinaryClassificator1(vv0[q],vv1[q],vv2[q],vv3[q]);  //Вызов результатов полиномов 
double Ress11=getBinaryClassificator2(vv0[q],vv1[q],vv2[q],vv3[q]);

double getBinaryClassificator1(double v0, double v1, double v2, double v3) {
   double x0 = 2.0 * (v0 + 0.00352160000000379) / 0.0060209999999973896 - 1.0;
   double x1 = 2.0 * (v1 + 0.00321680000000524) / 0.006628599999996879 - 1.0;
   double x2 = 2.0 * (v2 + 0.00257640000000836) / 0.00577599999999978 - 1.0;
   double x3 = 2.0 * (v3 + 0.00197520000000417) / 0.00414859999999794 - 1.0;
   double decision = 0.6226912928759895 * x0
  -0.013192612137203167 * x0 * x1
  + 0.9920844327176781 * x2
  + 1.3060686015831136 * x0 * x2
  -3.5395778364116093 * x1 * x2
  -1.1394019349164468 * x3
  + 2.5659630606860158 * x0 * x3
  + 0.5395778364116095 * x1 * x3
  + 0.31090589270008795 * sigmoid(x0)
  + 0.009674582233948988 * sigmoid(x1)
  -0.0839929639401935 * sigmoid(x0 + x1)
  + 0.012313104661389622 * sigmoid(x2)
  + 0.30474934036939316 * sigmoid(x0 + x2)
  -0.5958663148636764 * sigmoid(x1 + x2)
  + 0.002638522427440633 * sigmoid(x0 + x1 + x2)
  -0.05013192612137203 * sigmoid(x3)
  + 0.014951627088830254 * sigmoid(x0 + x3)
  -0.13412489006156553 * sigmoid(x1 + x3)
  -0.006596306068601583 * sigmoid(x0 + x1 + x3)
  + 0.04397537379067722 * sigmoid(x2 + x3)
  + 0.1363236587510994 * sigmoid(x0 + x2 + x3)
  + 0.6952506596306068 * sigmoid(x1 + x2 + x3)
  -0.29331574318381703 * sigmoid(x0 + x1 + x2 + x3)
  + 1.0738786279683377 * sigmoid(1.0 + x0)
  -1.073438874230431 * sigmoid(1.0 + x1)
  -0.4256816182937555 * sigmoid(1.0 + x0 + x1)
  + 1.0708003518029903 * sigmoid(1.0 + x2)
  + 0.9656992084432717 * sigmoid(1.0 + x1 + x2)
  -3.1314863676341247 * sigmoid(1.0 + x3)
  -0.8500439753737907 * sigmoid(1.0 + x0 + x3)
  + 1.0281442392260334 * sigmoid(1.0 + x1 + x3)
  + 0.8544415127528584 * sigmoid(1.0 + x0 + x1 + x3)
  -0.21328056288478453 * sigmoid(1.0 + x0 + x1 + x2 + x3);
   return decision;
}
double sigmoid(double x) {
   if (MathAbs(x) < 1.0) {
      return 2.0 * signum(x) - x;
   }
   return signum(x);
}
double getBinaryClassificator2(double v0, double v1, double v2, double v3) {
   double x0 = 2.0 * (v0 + 0.00518320000001116) / 0.00871940000000327 - 1.0;
   double x1 = 2.0 * (v1 + 0.00542880000001134) / 0.01145720000000306 - 1.0;
   double x2 = 2.0 * (v2 + 0.00578500000001125) / 0.00872540000000166 - 1.0;
   double x3 = 2.0 * (v3 + 0.00496500000001143) / 0.00698900000000191 - 1.0;
   double decision = -0.17965023847376788 * x0
  + 1.7416534181240064 * x1
  + 0.5389507154213037 * x0 * x1
  + 0.5023847376788553 * x2
  -0.16653418124006358 * x1 * x2
  -0.06836248012718601 * x3
  -0.8191573926868044 * x1 * x3
  -0.029809220985691574 * sigmoid(x0)
  -0.009141494435612083 * sigmoid(x1)
  + 0.00794912559618442 * sigmoid(x0 + x1)
  + 1.7150238473767885 * sigmoid(x2)
  -1.2686804451510334 * sigmoid(x0 + x2)
  + 0.051271860095389504 * sigmoid(x1 + x2)
  + 0.05405405405405406 * sigmoid(x0 + x1 + x2)
  -1.095389507154213 * sigmoid(x3)
  -0.2444356120826709 * sigmoid(x0 + x3)
  + 0.34737678855325915 * sigmoid(x1 + x3)
  + 0.9264705882352942 * sigmoid(x0 + x1 + x3)
  + 0.16176470588235295 * sigmoid(x2 + x3)
  -0.7682829888712241 * sigmoid(x0 + x2 + x3)
  -0.16335453100158984 * sigmoid(x1 + x2 + x3)
  + 0.7551669316375199 * sigmoid(x0 + x1 + x2 + x3)
  -2.048489666136725 * sigmoid(1.0 + x0)
  -0.31756756756756754 * sigmoid(1.0 + x1)
  -0.08982511923688394 * sigmoid(1.0 + x0 + x1)
  + 1.4666136724960255 * sigmoid(1.0 + x1 + x2);
   return decision;
}
double signum(double x) {
  if (x == 0.0) {
    return 0.0;
  }
  if (x > 0.0) {
    return 1.0;
  }
  return -1.0;
}

En el archivo adjunto identifico los números de las entradas según mis marcas. Estoy esperando los resultados de la prueba OMF.

Archivos adjuntos:
Si_Splice_10.txt  102 kb
 

Bueno y además el modelo estima.

Los predictores indican el número de columnas en el archivo

258 número total de vectores. He eliminado la clase 0 y he dejado la clase 2 renombrada a cero, ya que estaban equilibradas en número con la clase 1, 19,60 es el error cuadrático, o más bien la diferencia entre el lineal recto y el cuadrático debería tender a cero, 79,141 es la capacidad de generalización, al llegar a 100 la diferencia entre los errores disminuye, 69,767 es la espicificación. El total de la parcela de control es de 75 con una Generalizabilidad de 70. La respuesta es NO SABER que tenemos 77 vectores de la muestra total donde la parcela de control tenía 17.

De hecho, obtuve peores resultados en el entrenamiento, pero en la sección de control son muy superiores. Además, no era una sección de prueba como la suya, sino una de control, la que la red no había visto en absoluto. La de prueba es cuando se entrena en la de entrenamiento para que funcione bien en la de prueba, es decir, potencialmente la red ve la sección de prueba durante el entrenamiento. El de la prueba no lo hace. Preguntas????

 

Por favor, dígame cómo encontrar una orden con un beneficio máximo (mql4).

Muchas gracias.

 
a5l3e5x:

Por favor, dígame cómo encontrar una orden con un beneficio máximo (mql4).

Muchas gracias.

Amigo, nadie usa MT4, una orden tiene un parámetro de beneficio. Debemos probar todas las órdenes para leer este parámetro y elegir la máxima. Eso es... en pocas palabras...
 
Mihail Marchukajtes:

¿Interesado en este reto?

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Aprendizaje automático en el comercio: teoría, práctica, comercio y más allá

Rorschach, 2020.07.14 19:21

¿Quién quiere practicar? Entrada en la lista, salida en la tercera. 2 y 4 son de prueba. Alguna aclaración, incremento de 1 gráfico, señal de 3 gráficos para comprar algún sistema "clásico". Por cierto, pregunta de pop, ¿es ns capaz de emular ligic y con indicadores de memoria, algo así como un indicador de zigzag y máximo/mínimo?



 
Rorschach:

¿Es una tarea interesante?


Supongo que sí, pero ¿me estás sugiriendo que introduzca dígitos a partir de una imagen?
 
Mihail Marchukajtes:
Vale, pero ¿me pides que introduzca las cifras de una imagen?

Entonces prepararé los datos, 350 ejemplos, ¿100 entradas serán suficientes?

 
Rorschach:

Prepararé los datos entonces, 350 ejemplos, ¿100 entradas serán suficientes?

Sí, es genial en general, pero me quedo con la idea de que las entradas deben ser tres veces más ejemplos para que el algoritmo tenga algo que elegir. Creo que voy a hacer un video más, me va a llevar mucho tiempo escribirlo. Hay una teoría de la matriz cuadrada de la que he llegado a esta conclusión... Prepara una muestra...
 

Compruébelo, gente, no por el bien de la publicidad. Fui a una de sus jornadas de puertas abiertas y pensé en dejar de ser autodidacta, por si acaso no me lo estaba imaginando bien. Quería obtener una confirmación oficial de sus conocimientos, por así decirlo. El otro día leí sobre Elon Musk y su Neurolink, que se presentará en agosto. Y aquí como si la carta llegó, así que no entendía cómo descargar el contenido así que mira la imagen.

En general el tema es interesante, así que ¿podemos reunirnos allí a escondidas y hablar de lo esencial? ¿Qué dices?

 
Mihail Marchukajtes:
Sí, está muy bien, pero creo que debería haber el triple de ejemplos para que el algoritmo tenga mucho donde elegir. Siento que debería grabar un video más, me llevaría demasiado tiempo escribirlo. Hay una teoría de la matriz cuadrada de la que he llegado a esta conclusión... Prepara una muestra...

Mis resultados se detallan aquí. Para la validación, multiplico la serie original por -1

Archivos adjuntos:
Files.zip  4 kb