Saludos a todos.
Espero que os haya gustado el artículo.
Estaré encantado de escuchar sus consejos sobre cómo convertir UGA a OOP.
Me gustaría ver si esto
MathSrand((int)TimeLocal());
funcionará cuando esté optimizado?
¿Ha ejecutado su biblioteca en el probador?
1) Me gustaría ver si esto será
MathSrand((int)TimeLocal());
funcionará cuando esté optimizado?
2) ¿Ha ejecutado su biblioteca en el probador?
1) No veo ninguna razón por la que no funcionaría.
2) No se puede dar una respuesta exhaustiva a esta simple pregunta en dos palabras.
Los problemas de optimización del operador pueden dividirse condicionalmente en 2 tipos: a) "Problemas locales" y b) "Problemas globales".
a) Locales - un conjunto de todas las acciones de un trader/TS (que, a su vez, también pueden dividirse en tareas locales) realizadas en cada tick. Un ejemplo de este tipo es la primera tarea del artículo (resolver ecuaciones, elegir el precio óptimo de la opción y otras tareas similares). No requieren un historial de precios "futuro".
b) Tareas globales - optimización de alguna función de todas las tareas locales (puede ser el beneficio total para el periodo de información, drawdown, MO, etc.). Se requiere todo el historial de precios para el periodo de tiempo que se está optimizando. El probador interno realiza exactamente este tipo de tareas.
UGA se diseñó para no depender del comprobador estándar y puede utilizarse tanto para tareas globales como locales sin cambiar el código del algoritmo, incluso en comprobadores "caseros". En el marco del comprobador estándar, UGA puede utilizarse sin cambios sólo en tareas locales. Para tareas globales debe modificarse en el comprobador.
Todavía no he tenido necesidad de utilizar el algoritmo de optimización en un comprobador que tenga su propio algoritmo de optimización.
Describa su tarea en términos generales y consideraremos aquí formas de resolverla.
Gracias, joo- ¡un trabajo interesante!
Han surgido preguntas sobre la aplicación práctica del algoritmo genético
El trabajo describe:
- encontrar el máximo/mínimo de una función de dos variables en un intervalo dado
- encontrar el máximo de la función Profit (ejemplo con ZigZag).
Por favor, dé ejemplos de tareas prácticas de trading en las que crea que el algoritmo puede ser útil.
- 2010.05.25
- Andrey Dik
- www.mql5.com
Describa su problema en términos generales y aquí veremos cómo resolverlo.
El problema es simple: quiero que la función srand() ponga el generador en un punto inicial aleatorio cada vez que ejecute el probador.
Resulta que MathSrand((int)TimeLocal()) establece el generador al anterior (mismo) estado inicial en diferentes ejecuciones múltiples del probador.
La tarea es sencilla: quiero que la función srand() ponga el generador en un punto de partida aleatorio cada vez que ejecute el comprobador.
Resulta que MathSrand((int)TimeLocal()) establece el generador al estado inicial anterior (el mismo) en diferentes ejecuciones múltiples del probador.
TimeLocal da el tiempo en segundos. Al probar, será el mismo tiempo de prueba generado.
Intente usar GetTickCount. Honestamente da milisegundos y no emula nada.
Al probar, será el mismo tiempo de prueba generado.
¡О! Gracias.
Gracias, joo- ¡un trabajo interesante!
Han surgido preguntas sobre la aplicación práctica del algoritmo genético
El trabajo describe:
- encontrar el máximo/mínimo de una función de dos variables en un intervalo dado
- encontrar el máximo de la función Profit (ejemplo con ZigZag).
Ponga ejemplos de tareas prácticas de trading en las que crea que el algoritmo puede ser útil.
Las tareas económicas en general y las de los operadores en particular suelen ser de optimización.
Los operadores buscan constantemente los parámetros óptimos de su TS. He aquí una lista incompleta de los tipos de tareas que UGA puede ayudar a resolver:
-Encontrar los parámetros óptimos de los indicadores
-buscar parámetros óptimos de MM
-búsqueda de ajustes óptimos de filtros (cualquiera, incluida la búsqueda de coeficientes en filtros digitales) en indicadores
-entrenamiento de redes neuronales de cualquier topología y tamaño arbitrario
-entrenamiento de comités de redes de cualquier topología y tamaño arbitrario. (un comité es un grupo de redes independientes entre sí).
UGA se puede utilizar tanto para resolver por separado las tareas mencionadas como todas juntas a la vez. Así que, para ayudarte a entender la potencia de UGA, te diré que la posibilidad de resolver el último tipo de tareas de la lista te permite crear modelos del cerebro (como sabes, el cerebro está formado por departamentos).
La lista de tareas puede continuar durante mucho tiempo, basta con echar un vistazo a los hilos del foro.
Buen material y bien escrito. Yo también he jugado con la optimización genética, pero desgraciadamente he encontrado pocas ventajas. GA se considera generalmente como un método de optimización global. Esto es cierto si usted tiene un montón de tiempo para hacer frente a las colonias muy grandes, pero cuando el tiempo (tamaño de la colonia) es limitado, GA, al igual que los métodos de descenso de gradiente, converge a un mínimo local, y con bastante lentitud. Por supuesto, en comparación con los métodos de búsqueda contundente de todas las combinaciones posibles de parámetros de entrada, el AG ofrece una ventaja innegable en velocidad. Una de las grandes aplicaciones de los AG es el entrenamiento de redes neuronales multicapa con un gran número de coeficientes. Estas redes tienen un gran número de mínimos locales. Por alguna razón, se considera que los AG son la cura para este mal. Pero en realidad la cura es la herramienta aplicada, es decir, la red multicapa en este caso. Es mucho más fácil elegir otra herramienta capaz de lograr una gran precisión de clasificación (como comprar/vender/tener) o una extrapolación de regresión con una optimización sencilla y sin ambigüedades ;-).
1) Buen material y bien escrito.
2) Yo también he estado jugando con la optimización genética, pero por desgracia no he encontrado muchas ventajas. GA se considera generalmente como un método de optimización global. Esto es cierto si usted tiene un montón de tiempo para hacer frente a las colonias muy grandes, pero cuando el tiempo (tamaño de la colonia) es limitado, GA, al igual que los métodos de descenso de gradiente, converge a un mínimo local, y con bastante lentitud. Por supuesto, en comparación con los métodos de búsqueda contundente de todas las combinaciones posibles de parámetros de entrada, el AG ofrece una ventaja innegable en cuanto a velocidad. Una de las grandes aplicaciones de los AG es el entrenamiento de redes neuronales multicapa con un gran número de coeficientes. Estas redes tienen un gran número de mínimos locales. Por alguna razón, los AG se consideran la cura para este mal. Pero en realidad la cura es la herramienta aplicada, es decir, la red multicapa en este caso. Es mucho más fácil elegir otra herramienta capaz de realizar una clasificación de alta precisión (como comprar/vender/tener) o una extrapolación de regresión con una optimización sencilla y sin ambigüedades ;-).
1) Gracias por sus amables palabras.
2) No dudo de tu conocimiento del tema, pero aún así, necesitas cierta habilidad para trabajar con algoritmos genéticos (4º consejo en la sección del artículo "Recomendaciones para trabajar con UGA" )
UGA se desarrolló como una herramienta universal que puede utilizarse para cualquier problema de optimización (sección del artículo "Un poco de historia") sin necesidad de modificar el algoritmo. Está disponible al máximo para modificaciones posteriores y para añadir operadores específicos. ¿Conoces muchos algoritmos de optimización con estas propiedades?
No sé por qué se considera que el AG es la panacea para diversos problemas de optimización, personalmente no lo creo y nunca lo he afirmado en ningún sitio. Por supuesto, para cada tarea específica se puede elegir la mejor herramienta de optimización tanto en términos de velocidad de ejecución como de resultado final. UGA tiene un objetivo diferente: ser universal.
He publicado algunas funciones de prueba interesantes en el hilo del foro MQL4 "Test Multivariable Multiextreme Function", una de ellas se presenta en el artículo.
Si lo desea, puede tratar de encontrar extremos de las funciones propuestas utilizando otros algoritmos de optimización distintos de GA y publicar los resultados aquí. Le invitamos a hacerlo. Será interesante para todos y para mí en primer lugar.
PD Te recomiendo que conozcas el algoritmo propuesto en el artículo para convencerte de lo contrario (en negrita), aunque no tengo como objetivo convencer a nadie de nada.
¡Suerte en tu investigación!
- 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 Algoritmos Genéticos: ¡Es fácil!:
En este artículo, el autor habla sobre cálculos evolucionarios con el uso de un algoritmo genético personalmente desarrollado. Demuestra el funcionamiento de un algoritmo, usando ejemplos, y facilita recomendaciones prácticas para su uso.
El resultado de la solución del problema. Los segmentos de color negro - un ZZ alternativo en azul cielo - indicador ZZ
Autor: Andrey Dik