Discusión sobre el artículo "Redes neuronales: así de sencillo (Parte 29): Algoritmo actor-crítico con ventaja (Advantage actor-critic)"
Hola,
¡Buen trabajo! He estado trabajando activamente en algoritmos de negociación basados en el aprendizaje por refuerzo, y me gustan tus artículos sobre el tema.
Tengo una pregunta con respecto a los resultados. Veo que sólo muestras el rendimiento de los 10 primeros días (2022-09-01 a 2022-09-10). ¿Perdió el EA después del 10º día?
/Rasoul
Hola Dmitriy
muchas gracias por la exhaustiva y muy instructiva serie de artículos. Realmente bien hecho.
Sólo una pregunta: después de descargar todo el código del archivo adjunto de su último artículo (# 29), no puedo compilar debido a la falta de definición de la clase CBufferDouble, que supongo que debería estar dentro de
NeuroNet_DNG\NeuroNet.mqh
pero no la hay.
¿Me estoy perdiendo algo?
Gracias.
Saludos cordiales
Paolo
Hola Dmitriy
muchas gracias por la exhaustiva y muy instructiva serie de artículos. Muy bien hecho.
Sólo una pregunta: después de descargar todo el código del archivo adjunto de su último artículo (# 29), no puedo compilar debido a la falta de definición de la clase CBufferDouble, que supongo que debería estar dentro de
NeuroNet_DNG\NeuroNet.mqh
pero no la hay.
¿Me estoy perdiendo algo?
Gracias.
Saludos cordiales
Paolo
Hola, en el último artículo he cambiado CBufferDouble a CBufferFloat. Esto ayuda a ejecutar la librería en la GPU sin el tipo double.
Hola Dmitriy,
Gran serie, soy un gran fan de este trabajo. También traté de compilar el EA Reinforce y vi que también necesitaba el aunto-encoder (por supuesto) así que añadí la última versión incluida (desde el post 22) VAE.mqh, sin embargo por alguna razón no puede encontrar las definiciones Normal.mqh:
Seguro que he hecho algo mal, espero que me podais ayudar.
Gracias.
Hola Dmitriy,
Gran serie, soy un gran fan de este trabajo. También traté de compilar el EA Reinforce y vi que también necesitaba el aunto-codificador (por supuesto) así que añadí la última versión incluida (desde el post 22) VAE.mqh, sin embargo por alguna razón no puede encontrar las definiciones Normal.mqh:
Estoy seguro de que he hecho algo mal, espero que pueda ayudar.
Gracias.
Hola, carga la última versión en este artículo https://www.mql5.com/ru/articles/11804
- www.mql5.com
Hola, Carga la última versión en este artículo https://www.mql5.com/ru/articles/11804
Gracias Dmitriy por la rápida respuesta y proporcionar su ayuda y valioso tiempo, sin embargo todavía tengo el mismo resultado.
Al parecer FQF-aprendizaje de llamadas para FQF.mqh

Que a su vez las llamadas de NeuroNet ...

Y por supuesto este último llama a VAE.mqh

Y la única versión que he podido encontrar es la del post 22...
Usando esa versión acaba en que la VAE no encuentra referencia a las funciones Normal.mqh

¿Será mi versión del Editor?

Gracias
...Bueno, por alguna razón la librería Normal es inalcanzable en VAE.mqh si se llama desde NeuroNet, realmente no sé por qué (lo he intentado en 2 versiones diferentes)...
Así que lo resolví añadiendo la llamada a Normal directamente en VAE y Neuronet, pero tuve que deshacerme del espacio Math en el FQF:

raro... pero funcionó:

La inicialización ha fallado debido a la ausencia de EURUSD_PERIOD_H1_REINFORCE.nnw al ejecutar las siguientes sentencias
if(!Actor.Load(ACTOR + ".nnw", dError, temp1, temp2, dtStudied, false) ||| Critic.Load(CRITIC + ".nnw", dError, temp1, temp2, dtStudied, false)
Critic.Load(CRITIC + ".nnw", dError, temp1, temp2, dtStudied, false))
return INIT_FAILED;
¿Cómo solucionar este problema? Gracias.
Otra solución para una advertencia "... método oculto llamando ..."
En la línea 327 de Actor_Critic.mq5:
Me aparece la advertencia "comportamiento obsoleto, la llamada a métodos ocultos se desactivará en una futura versión del compilador MQL":

Esto se refiere a la llamada de "Máximo(0, 3)", que debe ser cambiado a:

Así que en este caso tenemos que añadir "CArrayFloat::" para especificar el método en cuestión. El método Maximum() es sobrescrito por la clase CBufferFloat, pero ésta no tiene parámetros.
Aunque la llamada debería ser inequívoca porque tiene dos parámetros, el compilador quiere que seamos conscientes ;-)
La inicialización falló debido a la ausencia de EURUSD_PERIOD_H1_REINFORCE.nnw al ejecutar las siguientes sentencias
if(!Actor.Load(ACTOR + ".nnw", dError, temp1, temp2, dtStudied, false) ||
Critic.Load(CRITIC + ".nnw", dError, temp1, temp2, dtStudied, false))
return INIT_FAILED;
¿Cómo solucionar este problema? Gracias.
En estas líneas se carga la estructura de red que se debe entrenar. Tienes que construir la red y guardarla en el archivo nombrado antes de iniciar este EA. Puedes utilizar, por ejemplo, la herramienta de construcción de modelos del artículo nº 23
- www.mql5.com
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso

Artículo publicado Redes neuronales: así de sencillo (Parte 29): Algoritmo actor-crítico con ventaja (Advantage actor-critic):
En los artículos anteriores de esta serie, nos familiarizamos con dos algoritmos de aprendizaje por refuerzo. Obviamente, cada uno de ellos tiene sus propias ventajas y desventajas. Como suele suceder en estos casos, se nos ocurre combinar ambos métodos en un algoritmo que incorporaría lo mejor de los dos, y así compensar las carencias de cada uno de ellos. En este artículo, hablaremos de dicho método.
Como ventaja del reentrenamiento de los modelos de los artículos anteriores, podemos mencionar la posibilidad de utilizar los asesores de prueba del artículo anterior para comprobar los resultados de nuestro entrenamiento. Precisamente esto hemos aprovechado. Después de entrenar el modelo, tomamos el modelo de política reentrenado e iniciamos el asesor "REINFORCE-test.mq5" en el simulador de estrategias usando el modelo mencionado. Ya describimos su algoritmo de construcción en el artículo anterior. Asimismo, podrá encontrar su código completo en el archivo adjunto.
A continuación, le mostramos el gráfico del balance del asesor durante la prueba. Cabe señalar que el balance ha aumentado de forma bastante uniforme durante las pruebas. Tenga en cuenta que el modelo se ha puesto a prueba con datos no incluidos en el conjunto de entrenamiento, lo cual habla de la consistencia del enfoque a la hora de construir un sistema comercial. Para que la verificación del funcionamiento del modelo resulte más pura, todas las operaciones se han realizado con un lote mínimo fijo sin usar stop-loss y take-profit. Le desaconsejamos encarecidamente el uso de dicho asesor para el comercio real, aunque, eso sí, muestra muy bien el funcionamiento del modelo entrenado.
En el gráfico de precios, podemos ver cómo de rápido se cierran las transacciones perdedoras, y cómo se mantienen un poco las posiciones rentables. Aquí deberemos prestar atención a que todas las operaciones se realicen en la apertura de una nueva vela. Al mismo tiempo, podemos ver varias operaciones comerciales realizadas casi en la apertura de velas de inversión (fractales).
Autor: Dmitriy Gizlyk