Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Muchas gracias por la aclaración, la pregunta sobre la eliminación de duplicados está totalmente respondida a mi satisfacción. Adjunto el código del script que muestra la función original y la optimizada, que demuestra la reducción del número de pasadas en los bucles. En mi comentario actual NO estoy señalando un error en la función, sino sugiriendo su optimización, y mi objetivo principal era averiguar el principio de la eliminación de duplicados, a lo que he recibido una respuesta completa. Una vez más, muchas gracias por la biblioteca y por la aclaración de la función.
110 y 160 son demasiado para 20 cromosomas.... Has puesto el contador en el lugar equivocado.
Ese es el lugar correcto:
OK. Ahora prueba con la misma población, con los mismos cromosomas, pero en esta secuencia:
¿Qué observamos?
a Shurick:
Efectivamente. El número de comprobaciones de unicidad, con todos los cromosomas diferentes, puede calcularse mediante la fórmula
(PopulChromosCount^2-PopulChromosCount)/2En nuestro ejemplo, que tiene 20 cromosomas (suponiendo que todos los cromosomas son diferentes), el número de comprobaciones sería:
(20*20-20)/2=190esto se confirma con esta comprobación
Si se detectan duplicados, habrá aún menos comprobaciones.
Gracias por su participación activa en el proyecto.
Se introducirán los cambios oportunos en la biblioteca. Aunque los cambios no afectarán a la capacidad de búsqueda del algoritmo, harán que su trabajo sea más racional.
¿Qué estamos viendo?
Aunque los cambios no afectarán en nada a la capacidad de búsqueda del algoritmo
Toda la razón, la calidad del algoritmo no cambiará, aunque inicialmente lo dudaba, pero ahora me lo has demostrado, pero sobre estas dudas encontrado un método de optimización :)
He estudiado el artículo y en el código he encontrado una incoherencia de este tipo, en dos funciones para obtener valores de rangos se utiliza la misma fórmula:
Es decir, se obtienen datos fuera de los valores de dos genes, lo cual es característico de la "mutación artificial". ¿Se trata de un error o hay otra explicación?
Me parece que para el método de replicación es necesario cambiar los signos:
Mínimo = C1+((C2-C1)*ReplicationOffset);
Máximo = C2-((C2-C1)*DesplazamientoDeReplicación);
He estudiado el artículo y he encontrado esta incoherencia en el código, dos funciones utilizan la misma fórmula para obtener valores de rango:
Es decir, se obtienen datos fuera de los valores de dos genes, lo que es característico de la "mutación artificial". ¿Se trata de un error o hay otra explicación?
Me parece que para el método de replicación es necesario cambiar los signos:
Mínimo = C1+((C2-C1)*ReplicationOffset);
Máximo = C2-((C2-C1)*DesplazamientoReplicación);
No hay ningún error ni incoherencia. Tanto en la replicación como en la mutación artificial los límites de aparición probable de un nuevo gen (las secciones de código que has citado) se definen de la misma manera.
Pero para la replicación el área de probabilidad se encuentra dentro de estos límites, y para la mutación artificial - más allá de estos límites.
La replicación sirve para transferir rasgos característicos de los genes de ambos progenitores (dentro de los límites).
La mutación artificial sirve para generar nuevos genes diferentes de los de los progenitores (fuera de los límites).
No hay error ni incoherencia. Tanto en la replicación como en la mutación artificial, los límites de la aparición probable de un nuevo gen (las secciones de código que has citado) se definen de la misma manera.
Pero para la replicación el área de probabilidad se encuentra dentro de estos límites, y para la mutación artificial - más allá de estos límites.
La replicación sirve para transferir rasgos característicos de los genes de ambos progenitores (dentro de los límites).
La mutación artificial sirve para generar nuevos genes diferentes de los de los padres (fuera de los límites).
Por cierto, es muy agradable ser el destructor de uno de los mitos más famosos de los comerciantes relacionados con ZZ (la segunda tarea del artículo). :)
Por lo visto, no he entendido el enunciado de la tarea. Mi declaración:
Los puntos de entrada para el máximo beneficio con la condición de que el min. trade sea de N pips, se encuentran en las cimas del ZigZag con la condición de min. rodilla N + Spread pips.
He publicado algunas funciones de prueba interesantes en el hilo del foro MQL4 "Prueba de la función multiextrema multivariable", 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.
Me doy cuenta de que es muy importante evaluar la validez del ajuste. Uno de los métodos consiste en añadir ruido a los datos originales.
Los códigos fuente de los métodos de optimización alternativos se encuentran aquí(http://alglib.sources.ru/optimization/) y aquí(http://ool.sourceforge.net/).
Obviamente, cada algoritmo de optimización funciona mejor con sus propias clases de funciones objetivo.
¿Qué funciones objetivo utiliza usted en la práctica?