No para los desarrolladores de MT. ¿Por qué sustituir INIT_PARAMETERS_INCORRECT? - página 2

 

Puede crear su propio conjunto de optimización en OnTesterInit y hacer que el optimizador piense que sólo se está optimizando un sinput int NumPass.

Es difícil decir qué efecto tendrá esto en el resultado final: si se encontrará el extremo global (local) deseado.

No estoy dispuesto a proporcionarle un ejemplo, eche un vistazo a la Documentación. Allí está bien escrito.

 
fxsaber:

Una receta es que los desarrolladores hagan que el resultado de los pases INCORRECTOS se cuente como el pase CORRECTO más cercano que se haya contado previamente. Esto igualará los agujeros en la superficie de optimización.

A esto se oponen los desarrolladores. En este caso, otros individuos de la población "sobrevivirán". Y la genética comenzará a trabajar con errores.

 

¿Qué tal si escribimos una función que sólo dé salida a las cadenas válidas por número?

Lo primero que se me ocurre es una tabla de 117649 valores, y que la genética busque números en esa tabla.

 
Sergey Savinkin:

A esto se oponen los promotores. En este caso, otros individuos de la población "sobrevivirán". Y la genética comenzará a funcionar mal.

Yo también estaría en contra de dicho algoritmo. INCORRECTO es un conjunto de parámetros inaceptables, no puede ser sustituido por el "más cercano aceptable".

 
Sergey Savinkin:

A esto se oponen los promotores. En este caso, otros individuos de la población "sobrevivirán". Y la genética comenzará a trabajar por error.

La genética en la práctica es casi siempre errónea, que es lo normal. Sin una investigación adecuada en este ámbito, no afirmaría nada sobre la opción propuesta.

 
Georgiy Merts:

¿Qué tal una función que devuelva sólo las cadenas válidas por número?

Lo primero que se me ocurre es una tabla de 117649 valores y que la genética busque números en esa tabla.

Foro sobre trading, sistemas de trading automatizados y comprobación de estrategias

No para los desarrolladores de MT. ¿Por qué sustituir INIT_PARAMETERS_INCORRECT?

fxsaber, 2018.07.10 16:22

Puede crear su conjunto de optimización en OnTesterInit y hacer que el optimizador piense que sólo se está optimizando un sinput int NumPass.

Es difícil decir qué efecto tendrá esto en el resultado final: si se encontrará el extremo global (local) requerido.

Depende en gran medida del criterio de satisfacción con el resultado final.


Es evidente que si seguimos la enumeración completa de y = x^2. A continuación, baraja las filas de forma aleatoria y crea un nuevo conjunto basado en el barajado. El AG no encontrará el vértice de la parábola.

 
fxsaber:

Obviamente, si se traza una enumeración completa de y = x^2. A continuación, se barajan aleatoriamente las cadenas de opimización y se crea un nuevo conjunto basado en el barajado. El AG no encontrará el vértice de la parábola.

Sí, aquí resulta que estos mismos INCORRECTOS "destrozan" demasiado el espacio de la función de aptitud.

Me temo que no hay nada que hacer, excepto rediseñar los parámetros de entrada. Omitir OnTick() como sugieres es sólo una muleta que sustituye al parámetro INCORRECTO, en realidad el algoritmo genético se "mata" de todos modos. La genética requiere algunos "gradientes" de la función de resultado, así que podemos usarlos para movernos a los máximos. Pero cuando hay más INCORRECTAS que valores válidos, ¿cómo se encuentra este máximo?

Sospecho que salvo la fuerza bruta total no puedes hacer nada, e incluso la fuerza bruta total encontrará una solución muy inestable.
 

Se necesita un poco de habilidad para establecer los parámetros de entrada.

Se puede dar un ejemplo muy común. Cuando se optimiza el intervalo de negociación diario, las horas de inicio y fin del día son los dos parámetros de entrada más comunes.

Pero esto es mucho peor para GA que, por ejemplo, especificar la hora de inicio y la duración. Aparentemente es lo mismo, pero no para la AG. En el segundo caso, la AG lo haría mejor. Aunque "mejor" es una valoración bastante subjetiva.

 

Georgiy Merts:

cuando tenemos más INCORRECTAS que valores válidos - ¿cómo se encuentra este máximo?

Tomemos la misma parábola de arriba. Supongamos que hacemos INCORRECTO el intervalo de prueba del 90% del valor de un solo parámetro de entrada. El actual AG se estrellará en dicha tarea. Sin embargo, si se procede con la opción sugerida, el GA lo hará bien.


Creo que @Andrey Dik puede ayudar en estas cuestiones. Pero incluso la crítica constructiva de la AG regular no terminó bien para él...

 
fxsaber:

Tomemos la misma parábola de arriba. Supongamos que hacemos INCORRECTO en el intervalo de prueba el 90% del valor del único parámetro de entrada. La actual AG moriría en esa tarea. Sin embargo, si procede con la variante sugerida, el GA lo hará bien.

¿Cómo? Sustituyendo las incorrecciones por las correcciones más cercanas... Me temo que todo depende de cómo distribuyamos estas mismas incorrecciones. Es muy posible que las correcciones más cercanas - se alejen de la parte superior.

Sí, y resultará que en lugar de conjuntos de parámetros erróneos -tendremos resultados correctos- lo que también, en mi opinión, no debería hacerse -¿qué encontramos entonces? Obtendremos un máximo y tendrá un parámetro incorrecto ?