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

 
elibrarius:

Falló)

Otro punto, si usted toma por ejemplo no 0, y por ejemplo 0,5 - que incluso con su método se "flotar" de muestra a muestra.

Sólo el ajuste manual de la gama para cada entrada ayudará. Pero no está claro cómo determinarlo. Por ejemplo, puede ejecutar los datos durante un año y rechazar el 1-5% de los valores atípicos. Y trabajar con ellos durante el año. Aunque en un año cambiarán.


Sí, primero hay que tomar la muestra máxima disponible y encontrar el multiplicador (por alguna razón lo tengo llamado multiplicador :)

Y si una nueva muestra tiene de repente un valor más alto... pues habrá que dividir por él. Pero esto rara vez ocurre si tomamos incrementos con poco retardo, por ejemplo close[0]/close[10]... y con close[0]/close[100] ya puede ser más frecuente... pero creo que ya hay una excepción, sobre todo si reciclamos periódicamente NS

No tengo tiempo para pensar en el 0,5. :)

 

Sólo deben utilizarse los predictores que TIENEN RELACIÓN con la variable objetivo. Que sea "lineal" o "no lineal" es irrelevante, no tiene nada que ver con la redacción tan precisa de "tener una relación".

Para aclarar de nuevo el significado de "tener una relación", pondré un ejemplo que he puesto varias veces en este hilo.


Objetivo: la población, tiene dos clases: hombres y mujeres

Tomando un predictor: la ropa. Tiene dos valores: pantalones y faldas.

Con tales clases y tal predictor, una parte del predictor predecirá una clase y la otra parte predecirá la otra sobre la base de "pantalones-hombres", "faldas-mujeres". Lo ideal es construir una clasificación sin errores.

Si aplicamos este sistema a los escoceses, habrá un solapamiento en las "faldas" que llevan ambos sexos. Este solapamiento dará un límite superior al error, que no puede ser superado.


Es obligatorio probar el modelo en dos archivos temporales diferentes: antes del 1 de enero y después del 1 de enero.

En el primer archivo: teach, test y "out-of-sample". Si los tres valores de error son aproximadamente iguales, ejecute el segundo archivo: el error no debe diferir significativamente (no más del 10%) de los tres primeros.

ESTE MODELO NO SE VUELVE A ENTRENAR.


PS.

Si se incluyen predictores que no son relevantes para el objetivo, "posos de café", el error puede reducirse drásticamente. Yo, por mi parte, no considero los modelos en los que el error es inferior al 10%. Pero siempre es lo mismo: el error del segundo archivo es un múltiplo del error del primer archivo. El modelo es REBUILD, ha recogido algunos valores del ruido, tratando de reducir el error de clasificación, y en el futuro lo más probable es que esos valores no existan, o sí, o en tiempos.... Este modelo no tiene capacidad de predicción.

 
SanSan Fomenko:

En el primer archivo: aprender, probar y "fuera de la muestra". Si los tres valores de error son más o menos iguales, entonces ejecute el segundo archivo - el error no debe diferir mucho (no más del 10%) de los tres primeros.

¿Cuál es la diferencia entre

1) una sección "fuera de muestra" del primer archivo + otro archivo "fuera de muestra"

2) y una "fuera de muestra" pero una sección más grande que incluye el segundo archivo?

Me parece que el resultado será el mismo. Si en la primera variante todo está mal en el segundo archivo, los mismos datos arruinarán todo en la segunda variante.

 

Bien, como regla general, hay tres secciones en la formación de NS. Una sección de formación, una sección de prueba y una sección de control. Si en la sección de prueba el error está dentro de los límites normales, entonces consideramos que el modelo no está reentrenado. EN MI OPINIÓN.

 
Mihail Marchukajtes:

Por lo general, hay tres secciones en la formación NS. Una sección de formación, una sección de prueba y una sección de control. Si en la sección de prueba el error está dentro de los límites normales, entonces consideramos que el modelo no está reentrenado. EN MI OPINIÓN.

Estoy de acuerdo, pero no está claro por qué SanSanych introduce una 4ª sección (la de la segunda oficina). Al fin y al cabo, es posible ampliar uno para incluir ambos.
 
elibrarius:

¿Cuál es la diferencia entre

1) una sección "fuera de muestra" del primer archivo + otro archivo "fuera de muestra"

2) y una sección "fuera de muestra" pero más grande que incluye el segundo archivo?

Me parece que los resultados serán los mismos. Si las cosas están mal en el primero en el segundo archivo, entonces los mismos datos arruinarán las cosas en el segundo archivo también.


El primer archivo se divide en tres partes de forma aleatoria, es decir, los trozos de muestras de entrenamiento, prueba y control se mezclan por fecha. Eso no ocurre en el comercio real.

Pero la segunda es una imitación del comercio: siempre comerciamos DESPUÉS de la sección de formación. En contra de su opinión, muy a menudo los resultados del segundo archivo son muy diferentes a los del primero: el modelo está sobreentrenado y no es apto para su uso.

 
Grigoriy Chaunin:

https://github.com/RandomKori/Py36MT5 Aquí están las fuentes de la biblioteca de Python para MT5. El único problema es con las matrices. Pasar un array o recibirlo no funciona correctamente. He depurado el código DLL en Visual Studio. Todo funciona allí. La cuestión es que puede ser un error terminal. No he escrito cómo trabajar con la biblioteca. No tiene sentido. Nadie lo necesita sin matrices. Aunque tal vez se haya estropeado en el archivo pythom.mqh Ayúdame a resolverlo. Todo será de utilidad.

Buena idea y útil biblioteca de MT5, pero es bastante problemático sincronizarla con un archivo de script de python.

Creo que es mejor sincronizar las variables MQL directamente con las variables python a través de un diccionario local y ejecutar fragmentos de código Python directamente desde las constantes de cadena en el código de EA.

He hecho la prueba, compilando bcc64 desde la línea de comandos y funciona bien en python 3.6:

#include <stdio.h>
#include "python.h"
#pragma link "python36.lib"

int main(int argc, char **argv)
{
  Py_Initialize();
  PyObject* main = PyImport_AddModule("__main__");
  PyObject* global = PyModule_GetDict(main);
  PyObject* local = PyDict_New();

  int a, b = 2, c = 2; // synchronize python variables and calc a = b * c
  PyDict_SetItemString(local, "b", PyLong_FromLong(b));
  PyDict_SetItemString(local, "c", PyLong_FromLong(c));
  a = PyLong_AsLong(PyRun_String("b * c", Py_eval_input, global, local));
  printf("%d*%d=%d\n",b,c,a);

  PyRun_SimpleString("import sys"); // import python sys and read version
  printf(_PyUnicode_AsString(PyRun_String("sys.version", Py_eval_input, global, local)));

  Py_Finalize();
  return 0;
}

Estaría bien añadir esta funcionalidad a tu biblioteca, estaba a punto de escribir la mía propia, pero por desgracia por ahora estoy ocupado con la biblioteca P-net para python.

Por cierto, escribí sobre esta nueva red neuronal aquí en una rama, según los resultados preliminares de las pruebas sobre ejemplos con el Iris de Fisher, se entrena tres órdenes de magnitud más rápido que la DNN en TensorFlow, con iguales resultados en las pruebas.

 
SanSanych Fomenko:

El primer archivo se divide en tres partes de forma aleatoria, es decir, los trozos de muestras de entrenamiento, prueba y control se mezclan por fecha. Esto no ocurre en el comercio real.

Pero la segunda es una imitación del comercio: siempre comerciamos DESPUÉS de la sección de formación. En contra de su opinión, muy a menudo los resultados del segundo archivo son muy diferentes de los del primero: el modelo está sobreentrenado y no es apto para el propósito.

Siempre pongo las 3 primeras partes en secuencia. Y si la tercera es mala, el modelo está sobreentrenado.
 

Ten en cuenta que cualquier redundancia de datos retrasará la entrada en combate del modelo. Esto afecta directamente a la calidad de las señales recibidas después de ....

Personalmente, he elegido la siguiente metodología. He invertido el modelo obtenido utilizando señales de compra y lo he probado en la misma parte del mercado pero para señales de venta. Así, no pierdo un tiempo precioso y estimo adecuadamente las capacidades del modelo. IMHO

 
SanSanych Fomenko:

El primer archivo se divide en tres partes de forma aleatoria, es decir, los trozos de muestras de entrenamiento, prueba y control se mezclan por fecha. Esto no ocurre en el comercio real.

Pero la segunda es una imitación del comercio: siempre comerciamos DESPUÉS de la sección de formación. En contra de su opinión, muy a menudo los resultados del segundo archivo son muy diferentes de los resultados del primero: el modelo está sobreentrenado y no es adecuado para su propósito.


Para los sistemas de previsión, el orden de llegada de los datos es importante. Para la clasificación, NO.

Razón de la queja: