[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 366
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
no hay garrapatas.
Quizás la falta de normalización dentro de la EA provoca este efecto.
Sin embargo, cuando aparece la pestaña de parámetros de entrada, la optimización en sí no se produce.
¡El probador hace algo, en la parte inferior se puede ver el número actual de rebasamientos (7/62), pero al terminar en las pestañas resultados de optimización, y el gráfico de optimización está Vacío!
La marca de verificación del parámetro es, por supuesto, ....
Ni siquiera sé hacia dónde mirar...
El comprobador no proporciona resultados repetibles con datos inalterados, ya que la dispersión cambia sin saberlo cuando se comprueba.
Cura:https://www.mql5.com/ru/forum/119830
Los valores vacíos pueden indicar que el resultado de la optimización de determinados parámetros no es rentable, es decir, una fuga. Intente ejecutar uno de los parámetros con Visualización y podrá ver este resultado.
En cuanto a la normalización, tampoco creo que haya tal efecto, ya que al ser los mismos valores, los números matemáticos serán exactamente los mismos, por lo que no habrá cambios.
En cuanto a "qué pensar", a veces es mejor no pensar y aplazar la pregunta; la idea y los pensamientos vendrán después. Tienes que dar a tu cerebro espacio para maniobrar, descansar y pensar sin esforzarte.
1. el asesor es rentable.
2. Ya lo he comprobado a mano: es rentable en todo el rango del parámetro. Sólo quería ampliar un poco el rango y hacer el paso más pequeño.
El comprobador no proporciona resultados repetibles con datos inalterados, porque la dispersión cambia sin saberlo durante la prueba.
La cura:https://www.mql5.com/ru/forum/119830
El spread es flotante, ¿no?
otra cosa es que tenga que estar cimentado en la historia...
en general el resultado flota ligeramente y el número de operaciones no cambia...así que este tema no me asusta demasiado...
La otra cosa es que el optimizador no funciona en absoluto. Esto es molesto...
esto es lo que dice el probador en el registro..:
2013.05.29 12:20:10 Se han realizado 8 pases durante la optimización, 8 resultados han sido descartados por ser insignificantes
El comprobador no proporciona resultados repetibles con datos inalterados porque la dispersión cambia sin saberlo durante la prueba.
La cura:https://www.mql5.com/ru/forum/119830
Puede que sea posible, pero el tamaño de mi extensión se pone en Info - y se muestra cuando se cambia. En el probador no he notado que el spread flote. Toma los datos de los parámetros estándar de MarketInfo de la cuenta corriente y no los modifica más.
Esta cura cambia el spread p-r para que puedas ver diferentes resultados de optimización con diferentes spreads. Según tengo entendido, este es el único propósito para el que se necesita el software del enlace.
2013.05.29 12:20:10 Se han realizado 8 pases durante la optimización, 8 resultados han sido descartados por ser insignificantes
Así es, estos resultados fueron marcados como insignificantes. - Por eso no aparece en los resultados ni en el gráfico.
Creo que tengo un problema más profundo.
Mi primera pregunta ayer fue cómo optimizar los parámetros dentro de una función de usuario.
Me dijeron: muévelos al doble externo
Lo hice.
y ahora el optimizador arroja el resultado... debo haberlos movido incorrectamente.
Aquí está el código. Es un modificador común de parar y tomar
En lugar de STOP y TAKE, solía haber números 100 y 200
He cambiado los números a STOP y TAKE
y al principio del código he añadido
extern double STOP = 100;
extern double TAKE = 200;
¿Hay algún error aquí?
(el propio modificador funciona al 100%)
Por ahora estoy mirando el código, pero permitiré algunos comentarios a lo largo del camino.
Esta línea no tiene ningún sentido:
point=MarketInfo(Symbol(),MODE_POINT); /* поскольку это ровным счетом то же самое, что штатный параметр */ Point
Sólo será necesario si tiene una estrategia multidivisa, pero entonces, en lugar de una estrategia multidivisa, tiene que utilizar
Symbol()
Deberá utilizar otros valores predefinidos, pero no esta función normal.
Esta variable tampoco es necesaria.
total=OrdersTotal();
Porque dentro de su función se aplica sólo una vez, en la enumeración, que por alguna razón está comentada, y sólo desordena el código. - De ahí la pregunta - ¿Por qué ha comentado la enumeración por orden?
Esto:
mejor agrupados en general - la condición es la misma. Por cierto, los has escrito de forma diferente por estructura. - Es a la cuestión de la pérdida de la estructura. El estilo de la escritura debe ser uniforme - entonces se puede ver la estructura y los posibles errores saldrán como baches después de la nevada.
De lo que has presentado no he encontrado ningún punto principal que pueda afectar al resultado. Pero... Sólo has presentado una función aquí (bastante descuidada, a no ser que cuentes la enumeración comentada - esto se refleja en la pregunta). Para decir el veredicto - no necesitas la función, necesitas el código del programa, porque no sabes dónde y dónde está la causa y tienes que buscarla. Para ello, debe ejecutar el programa en el probador y ver con sus propios ojos los errores que pueden producirse. Entonces ya recorre el código (o en orden inverso) y busca la causa.
Como sensación general puedo decir que tú, Oleg, tienes bastantes descuidos (indiferencia, diría yo). Esto puede llevar a 1. A la basura del sistema en uso. 2. Pérdida de la estructura como resultado de esta basura y dificultad para identificar y detectar el bicho. Así que mi consejo es este. - Si es posible, tire toda la "basura" (excesos) del código - el error será más fácil de encontrar. - Este es un error clásico de la mayoría de las personas que piden ayuda: el descuido.
Probablemente sea más profundo que eso.
Mi primera pregunta ayer fue cómo optimizar los parámetros dentro de una función personalizada.
Me dijeron: ponlos en doble externo.
Lo hice.
Y ahora el optimizador arroja el resultado... aparentemente, los saqué de alguna manera equivocada.
No, creo que te equivocas. El probador lanza el resultado no por los parámetros que ponemos, sino porque los resultados no pasan el criterio de significación.
Pero es posible que el propio programa contenga un error. Además, los resultados inestables son una indicación indirecta de ello. - Significa que algo va mal. En mi consulta, no permito que esos programas lleguen al mundo real. Porque si algo va mal, significa que la situación es incontrolable. Y cualquier cosa puede salir.
Los parámetros Stop-Loss y Take-Profit, por definición, están en variables externas en cualquier programa, y no sólo porque necesiten ser optimizados. No es que vayas a entrar en tu código cada vez que quieras cambiarlos. Por lo tanto, no importa si se trata de variables externas o internas. - Eso es seguro.
Por ahora estoy viendo el código, pero permitiré algunos comentarios a lo largo del camino.
Esta línea no tiene ningún sentido:
Sólo lo necesitarás si tienes una estrategia multidivisa, pero entonces en lugar de
Tendrá que sustituir otros valores predefinidos, pero no esta función básica.
Esta variable tampoco es necesaria.
Se utiliza sólo una vez dentro de la función en la enumeración, que se comenta por alguna razón y sólo desordena el código. - De ahí la pregunta - ¿Por qué ha comentado la enumeración por órdenes?
Aquí está.
En general, sería mejor agruparlas - la condición es la misma.
Bueno, no he encontrado ningún punto principal de lo que has presentado que pueda afectar al resultado. Pero... Aquí sólo has presentado una función (bastante descuidada, a no ser que cuentes la enumeración comentada - esto se refleja en la pregunta). Para decir el veredicto - no necesitas la función, necesitas el código del programa, porque no sabes dónde y dónde está la causa y tienes que buscarla. Para ello, debe ejecutar el programa en el probador y ver con sus propios ojos los errores que pueden producirse. A continuación, ya ejecutar a través del código (o en orden inverso) y buscar esta causa.
Como sensación general puedo decir que tú, Oleg, tienes bastante descuido (indiferencia, diría yo). Esto puede llevar a 1. A la basura del sistema en uso. 2. Pérdida de la estructura como resultado de esta basura y dificultad para identificar y detectar el bicho. Así que mi consejo es este. - Si es posible, tire toda la "basura" (excesos) del código - el error será más fácil de encontrar. - Este es un error clásico de la mayoría de la gente que pide ayuda: el descuido.
Yo no he escrito este modificador.
Lo tengo preparado desde las bibliotecas.
Lo principal es que funciona al 100%.
Pero por qué el parámetro dentro de él no está optimizado - esa es la pregunta.....
No hay errores básicos.
El resto del código funciona.
Poner cualquier condición en el algoritmo.
- comprar
-Modificar
- cerrar
---------------------------
y tratar de prooptimizar el parámetro dentro de mi orden MODIFICADORA - es decir, detener y tomar
No, creo que se equivoca. El probador no es expulsado por los parámetros que pone, sino porque los resultados no pasan los criterios de significación.
Pero es posible que el propio software contenga un error. Además, los resultados inestables son una indicación indirecta de ello. - Significa que algo va mal. En mi consulta, no permito que esos programas lleguen al mundo real. Porque si algo va mal, significa que la situación es incontrolable. Y cualquier cosa puede salir.
Los parámetros Stop-Loss y Take-Profit, por definición, están en variables externas en cualquier programa, y no sólo porque necesiten ser optimizados. No es que vayas a entrar en el código cada vez que quieras cambiarlos. Por lo tanto, no importa si se trata de variables externas o internas. - Eso es seguro.
Bueno, mira,
Si devuelvo todo ahora, es decir, quito los parámetros externos STOP y TAKE y escribo números dentro de la función en lugar de ellos, entonces el EA se ha ejecutado semana tras semana durante 10 semanas y muestra resultados claros.
Si cambio manualmente los parámetros de parada y despegue, todo funcionará y dará resultados ligeramente diferentes (por supuesto)
Pero ahora, ¿por qué, cuando cambio estos parámetros fuera del modificador, el optimizador los considera insignificantes?