Discusión sobre el artículo "Creación de una estrategia de retorno a la media basada en el aprendizaje automático" - página 9

 

Buenos días, Maxim. Buenas tardes, honorables colegas.

Tengo una pregunta candente.

Quería añadir funcionalidad adicional al bot (salida de una posición a breakeven y trawl sl), pero me he encontrado con la imposibilidad de compilar el código fuente (uso el compilador estándar del paquete MT5).
Incluso el código fuente original medio reversion.mq5, adjuntado por el autor al artículo, no pasa .
El problema está en las funciones OnnxSetInputShape y OnnxSetOutputShape (líneas 51, 58, 66, 71). Según la ayuda de mql5, los datos de entrada para estas funciones son tres variables: dos de tipo long y la tercera de tipo const ulong. Sin embargo, según el código del Asesor Experto, las variables ExtInputShape, ExtInputShape2 y output_shape utilizadas como variables iniciales en las funciones consideradas se inicializan como const long ( líneas 31, 32, 65).

Cuando el tipo de datos de las variables se cambia a const ulong, la compilación tiene éxito. Sin embargo, el bot deja de funcionar "in profit", es decir, no se ejecuta el algoritmo de la estrategia comercial implementada.

Por favor, ayuda en la solución de este problema. Considero la opción con un compilador externo en último lugar. ¿Es posible compilar con las herramientas estándar de MT5 sin comprobar la corrección del código?

[Eliminado]  
Vladimir Levchenko tipo long y la tercera de tipo const ulong. Sin embargo, según el código del Asesor Experto, las variables ExtInputShape, ExtInputShape2 y output_shape utilizadas como variables iniciales en las funciones consideradas se inicializan como const long ( líneas 31, 32, 65).

Cuando el tipo de datos de las variables se cambia a const ulong, la compilación tiene éxito. Sin embargo, el bot deja de funcionar "en beneficio", es decir, no se ejecuta el algoritmo de la estrategia de trading implementada.

Por favor, ayuda en la solución de este problema. Considero la opción con un compilador externo en último lugar. ¿Es posible compilar con las herramientas estándar de MT5 sin comprobar la corrección del código?

Amablemente, pruebe esta opción. No recuerdo qué más cambié además de ulong. Sí, después de la actualización, algunas ph-iases empezaron a funcionar diferente que antes.

Escribe en #define los nombres de tus fases desde tu fichero include.
Archivos adjuntos:
 
Maxim Dmitrievsky #:

Amable, prueba esta opción. No recuerdo qué más cambié además de ulong. Sí, después de la actualización, algunas ph-iases empezaron a funcionar diferente que antes.

En #define, escribe los nombres de tus fases de tu fichero include.

Buen día.

Ya lo hice. Pero, desgraciadamente, el motivo es otro. Adjunto capturas de pantalla de los resultados de tu versión compilada y de la versión en la que los tipos de variables se sustituyen por ulong.

Con variables LONG Tras el cambio a ULONG.

[Eliminado]  
Vladimir Levchenko #:

Buenos días.

Así es. Pero, desgraciadamente, el motivo es otro. Adjunto capturas de pantalla de los resultados de tu versión compilada y de la versión en la que los tipos de variables se sustituyen por ulong.


¿Utilizas el mismo tipo de atributos en el bot que en el entrenamiento? Ocurre que has cambiado los atributos en el script python, pero no en el inklulnik.
Porque esta variante, que te he lanzado, me funciona bien.
A juzgar por la curva del gráfico, el modelo no está obteniendo las características con las que fue entrenado
 
Maxim Dmitrievsky #:
¿Utilizas el mismo tipo de atributos en el bot que en el entrenamiento? Ocurre que has cambiado los atributos en el script python, pero no en el inklulnik.
Porque esta variante, que te he lanzado, me funciona bien.
A juzgar por la curva del gráfico, el modelo no está obteniendo las características con las que fue entrenado

Probablemente. Porque saco los archivos del modelo que estaban en la versión inicial del bot.
Pero el algoritmo de entrenamiento del modelo está todavía en fase de estudio y realización. No tengo problemas con Mql5, pero con Python todavía me cuesta hacerme amigo.

[Eliminado]  
Vladimir Levchenko #:

Probablemente. Debido a que los archivos de modelo que estoy tirando hacia arriba son los que estaban allí en la versión inicial del bot.
Pero el algoritmo de formación de modelos se encuentra todavía en la etapa de estudio y realización. No tengo problemas con Mql5, pero la amistad con python es todavía un poco difícil.

Comprobado, todo funciona para mí. He adjuntado los archivos de modelos entrenados del artículo y el bot actualizado arriba.

Es conveniente volver a entrenar los modelos después, porque hay modelos de demostración adjunta al artículo. Cuando usted entiende el script de python.


 
Maxim Dmitrievsky #:

Comprobado, todo me funciona. Adjunto los archivos de modelos entrenados del artículo y el bot actualizado arriba.

Es conveniente volver a entrenar los modelos después, porque hay modelos de demostración adjunta al artículo. Cuando usted entiende el script de python.


Buenos días!
Sí, en esta versión el propio bot compila y funciona correctamente. Pero los modelos necesitan ser reentrenados. Y en general, según tengo entendido, debe hacerse con regularidad.
Me estoy familiarizando con python, pero todavía no lo entiendo todo. He rodado la versión principal de Rutop en mi portátil y la he actualizado a la versión actual. Instalé todos los paquetes necesarios (pandas, numba, numpy, catboost, scipy, scikit-learn). Descargué quotes. He puesto el fichero de quotes y todos los scripts en la carpeta Files del catálogo principal de MT5. He escrito las rutas en el código del script de entrenamiento del modelo. Pero algo no va al resultado.
corrijo el código del script en MetaEditore. Intento ejecutar el script desde allí. El proceso cae en un error (no encuentra el paquete bots python, y el intento de instalarlo según el esquema de instalación de otros paquetes también termina con un error). El mismo error se produce al ejecutar el script a través de la consola de python.
¿Puedes aconsejarme en qué dirección perforar el tema?

Error al instalar el paquete bots


Error en el funcionamiento del script

[Eliminado]  
Vladimir Levchenko #:
Buenos días!
Sí, en esta versión el bot compila y funciona correctamente. Pero los modelos necesitan ser reentrenados. Y en general, según tengo entendido, debe hacerse con regularidad.
Me estoy familiarizando con python, pero no todo funciona hasta ahora. Rodé la versión principal de Rutop en mi portátil y lo actualicé a la versión actual. Instalé todos los paquetes necesarios (pandas, numba, numpy, catboost, scipy, scikit-learn). Descargué quotes. He puesto el fichero de quotes y todos los scripts en la carpeta Files del catálogo principal de MT5. He escrito las rutas en el código del script de entrenamiento del modelo. Pero algo no va al resultado.
corrijo el código del script en MetaEditore. Intento ejecutar el script desde allí. El proceso cae en un error (no encuentra el paquete bots python, y el intento de instalarlo según el esquema de instalación de otros paquetes también termina con un error). El mismo error se produce al ejecutar el script a través de la consola de python.
¿Puedes aconsejarme en qué dirección perforar el tema?

Bots es sólo el directorio raíz (carpeta) donde se encuentran los módulos del artículo. Si el script no los ve al importar los módulos (archivos adicionales), entonces escribe las rutas completas a los archivos.

O ponga todos estos archivos en la misma carpeta que el script principal y haga esto en su lugar:

Было
from bots.botlibs.labeling_lib import get_labels
from bots.botlibs.tester_lib import test_model
from bots.botlibs.export_lib import export_model_to_ONNX

Стало
from labeling_lib import get_labels
from tester_lib import test_model
from export_lib import export_model_to_ONNX

Esto puede ocurrir si no tenías PYTHONPATH prescrito cuando instalaste Python. Busca en internet cómo prescribirlo para tu sistema. Es decir, Python no ve los archivos del disco.

O lee un curso básico de importación de módulos en internet.

 
Maxim Dmitrievsky #:

Bots es sólo un directorio raíz (carpeta) donde se encuentran los módulos del artículo. Si el script no los ve al importar módulos (archivos adicionales), escriba las rutas completas a los archivos.

O ponga todos estos archivos en la misma carpeta que el script principal y haga esto en su lugar:

Esto puede ocurrir si no tenías prescrito PYTHONPATH cuando instalaste Python. Busca en internet cómo prescribirlo para tu sistema. Es decir, python no ve los archivos en el disco.

O lee un curso básico de importación de módulos en internet.

Buenos días, Maxim. Gracias. Casi todo está resuelto. La última pregunta.
Hay líneas comentadas (154-182) en el script principal para modelos de entrenamiento. Según tengo entendido, se trata de muestreadores de reparto alternativos (marcas). Pero no puedo probarlos. Si se descomenta cualquiera de los marcadores (condicionalmente, líneas 154-158) y se comenta el original (líneas 149-153), el script no arranca.
¿Cuál puede ser la razón, dónde mirar?

Gracias )

[Eliminado]  
Vladimir Levchenko #:

Buenos días, Maxim. Muchas gracias. Casi todo está resuelto. La última pregunta.
Hay líneas comentadas (154-182) en el script principal para el entrenamiento de modelos. Según tengo entendido, se trata de muestreadores de reparto alternativos (marcas). Pero no puedo probarlos. Si se descomenta alguno de los marcadores (condicionalmente, líneas 154-158), y se comenta el original (líneas 149-153), el script no arranca.
¿Cuál puede ser la razón, dónde mirar?

Gracias )

Hola, necesitas logs de lo que escribe el intérprete de Python.