![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Pregunta:
Es necesario pasar una matriz de punteros a objetos en una función. Por referencia, por supuesto (un array).
¿Qué sintaxis utilizar?
¿O debería utilizarlo de otra manera?
Declaración de puntero (tipo, tipo de variable): MyObject* hobject
Declaración deuna matriz de punteros (tipo, matriz de variables de tipo): MyObject* hobject[].
Resulta que cuando se pasa por referencia (tipo, matriz de variables de tipo pasado): MyObject* &hobject[]
Lo que es confuso es que no he encontrado información sobre el paso de punteros y matrices de punteros como parámetros de funciones. Pero ni siquiera es una pregunta, sólo un descargo de responsabilidad.
Me enfrenté a tal necesidad. Torcido y brutal, pero se obtiene el resultado correcto. Las banderas se activan en los tres datos de entrada.Y luego se bloquea en falso.
No soy un gran explicador. Déjame intentarlo de nuevo. La tarea consiste en formar una cartera de divisas, cada una con sus propios parámetros. En una cartera optimizada, una moneda puede no participar. He calculado seis monedas en 21 pasos de optimización para cada moneda, y la suma total es de miles de millones.
Ahora la pregunta. Si prohibimos que una moneda opere con una bandera entonces no tiene sentido optimizar sus parámetros, de todas formas no afectarán al resultado de ninguna manera, pero el optimizador seguirá intentando ajustar parámetros que no afecten al resultado. Algo así como que yo mismo sé que no se puede, pero la esperanza sigue ardiendo.
No soy un gran explicador. Déjame intentarlo de nuevo. La tarea consiste en formar una cartera de divisas, cada una con sus propios parámetros. En una cartera optimizada, una moneda puede no participar. He calculado seis monedas en 21 pasos de optimización para cada moneda, y la suma total es de miles de millones.
Ahora la pregunta. Si prohibimos que una moneda opere con una bandera entonces no tiene sentido optimizar sus parámetros, de todas formas no afectarán al resultado de ninguna manera, pero el optimizador seguirá intentando ajustar parámetros que no afecten al resultado. Al igual que yo, sé que no se puede, pero la esperanza sigue calentando.
Así que todavía te dije lo mismo la primera vez.
No debe comprobar estos parámetros en el comprobador.
Para que los parámetros participen en la optimización, hay que marcar estas casillas. Si las casillas no están seleccionadas, estos parámetros no se optimizarán.
P.D. O puede realizar la optimización por separado para cada herramienta. Ahora entiendo lo que quieres decir. :) Y después de todas las optimizaciones, encienda todas las herramientas y vea el resultado acumulado.
Así que, después de todo, acerté a la primera.
No, no está bien. A juzgar por otras explicaciones, el autor comienza la optimización para todos sus parámetros de entrada a la vez, y se pregunta si algunas de las pasadas pueden saltarse de alguna manera si trpair2==false. Aquí no se pueden establecer manualmente las "casillas de verificación en el probador".
Pues bien, yo mismo tengo curiosidad por saber si existe tal solución.
No, no está bien. A juzgar por otras explicaciones, el autor comienza la optimización para todos sus parámetros de entrada a la vez, y se pregunta si algunas de las pasadas pueden saltarse de alguna manera, si trpair2==false. No hay "casillas de verificación" manuales en el probador.
Tampoco he encontrado ninguna solución para esta situación. Por supuesto, es posible combinar en int OnInit() algún bloque que almacene el valor de los parámetros optimizables por otros símbolos al asignar a trpair2 el parámetro false, y en caso de segunda pasada con trpair2==false y con 'valores almacenados de los parámetros optimizables por otros símbolos' generaría un código de retorno distinto de cero (es decir, generaría el evento Deinit con el código de la razón de desinicialización.es decir, generaría el evento Deinit con el código de razón de desinicialización REASON_INITFAILED). Pero todo esto parece bastante tedioso.
Exactamente. Sólo que usted se olvidó de escribir el veredicto si puede o no puede.
Es mucho más sencillo. Cuando se ejecuta una condición, puede simplemente eliminar el Asesor Experto - ExpertRemove(). Lo he implementado en caso de una reducción. Si la reducción ha alcanzado el valor establecido, por ejemplo, durante la optimización, la eliminamos y comenzamos la siguiente pasada.
¿Cómo puede ser "más fácil"? :) Las condiciones para borrar un EA o para REASON_INITFAILED todavía tienen que ser seguidas. Esto es lo que resulta tan problemático.