Errores, fallos, preguntas - página 1962
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
¿Cómo ayuda esto?
La optimización ha pasado, hemos anotado todos los parámetros a buscar con rangos de valores.
Y luego ejecutamos una sola prueba, leemos la lista de parámetros y la mostramos: parámetro = valor. En este caso no conocemos el valor, porque no podemos referirnos a la intu-variable por su nombre.
El parámetro de entrada es bool Optim. En OnInit, se devuelve INIT_FAILED si Optim == true. Al mismo tiempo en OnTesterPass a través de FrameInputs y ParameterGetRange (o en el destructor del objeto de clase global) se escribe el SET real de Optimización.
Entonces se pone Optim = false. Y tomar un parámetro más sinput int Rango, establecerlo a través de ParameterSetRange para cambiar de cero a uno. Leer el archivo SET en OnTesterInit y establecer los valores de todos los parámetros del archivo en ParameterSetRange. Cuando Range == 0 devuelve INIT_FAILED en OnInit.
¡Eso es todo! En lugar de la optimización simple, tienes la optimización imaginaria, que también es más rápida que la optimización simple.... Además de los parámetros de entrada de lectura/escritura.
Pregunta fuera de tema pero le preguntaré si es posible complementar el manual de MQL5 con ejemplos adicionales de implementación de algoritmos más y más claros
Hacer el parámetro de entrada bool Optim. En OnInit se devuelve INIT_FAILED si Optim == true. Al mismo tiempo en OnTesterPass a través de FrameInputs y ParameterGetRange (o en el destructor del objeto de clase global) se escribe realmente SET-file Optimization.
Entonces se pone Optim = false. Y tomar un parámetro más sinput int Rango, establecerlo a través de ParameterSetRange para cambiar de cero a uno. Lee el archivo SET en OnTesterInit y establece los valores de todos los parámetros del archivo en ParameterSetRange. Cuando Range == 0 devuelve INIT_FAILED en OnInit.
¡Eso es todo! En lugar de la optimización simple, tienes la optimización imaginaria, que también es más rápida que la optimización simple.... Además de los parámetros de entrada de lectura/escritura.
Gracias por el algoritmo detallado.
'TesterBenchmark_Example.mq5' TesterBenchmark_Example.mq5 1 1 'TesterBenchmark.mqh' TesterBenchmark.mqh 1 1 0 error(s), 0 warning(s), compile time: 3113 msec 1 1
Tiempo de compilación en 1648
'TesterBenchmark_Example.mq5' TesterBenchmark_Example.mq5 1 1 'TesterBenchmark.mqh' TesterBenchmark.mqh 1 1 0 error(s), 0 warning(s), compile time: 219 msec 1 1
¡Algo se ha retocado!
Error de compilación
Y si se sustituye la línea (*) por
entonces está bien. ¿Cuál es la diferencia?Se parece ahttps://www.mql5.com/ru/forum/1111/page1977#comment_5595772, pero tiene un código de error diferente
Error durante la compilación
Por lo demás:
Está bien. ¿Qué diferencia hay?Error durante la compilación
pero de esta manera:
normalmente. ¿Cuál es la diferencia?La diferencia es enorme. Cuando se llama a g(f), el compilador no tiene ni idea de qué tipo es f, porque sólo se prescribe la plantilla. Si se sobrecarga la plantilla, no hay problema
Tiempo de compilación en 1643.
Tiempo de compilación en 1648
¡Es un ajuste genial!
El mío es el mismo que era, ¡la compilación no es más rápida!
Todavía lo tengo, la compilación no está acelerada
Tal vez no utilizar lo que solía ralentizar en TesterBenchmark.mqh
La diferencia es enorme. Cuando se llama a g(f), el compilador no tiene ni idea de qué tipo es f, porque sólo se prescribe la plantilla. Si se sobrecarga la plantilla, no hay problema