Errores, fallos, preguntas - página 738

 
MetaDriver:

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.

 
Karlson:
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.

 
ivandurak:

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.

 
tol64:

Así que, después de todo, acerté a la primera.

No, no lo hiciste. A juzgar por otras explicaciones, el autor inicia la optimización por todos sus parámetros de entrada a la vez, y al mismo tiempo se pregunta si puede saltarse de alguna manera algunas de las pasadas si trpair2==false. Aquí no hay "casillas de verificación en el probador" manuales.
 
Yedelkin:
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. Recuerdo haber enviado una solicitud al Servicio de Atención al Cliente para obtener parámetros programables. Es decir, dependiendo del parámetro que se seleccione (por ejemplo, en la lista desplegable) es una lista común de todos los parámetros externos. No hubo respuesta, así que no es tan sencillo. Y esta pregunta es del mismo hilo. En función del parámetro seleccionado para la optimización, se establece una lista (casillas de verificación) de parámetros optimizados en la lista general.
 
tol64:
Pues bien, yo mismo tengo curiosidad por saber si existe tal solución.
Tampoco he encontrado ninguna solución para esta situación. Por supuesto, es posible atornillar en int OnInit() algún bloque que almacene el valor de los parámetros optimizables para otros símbolos al poner trpair2 en false, y en caso de segunda pasada con trpair2==false y con los 'valores almacenados de los parámetros optimizables para 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 razón REAS_INIT).generaría el evento Deinit con el código de razón de desinicialización REASON_INITFAILED). Pero todo esto parece un poco engorroso.
 
Yedelkin:
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.
Exactamente. Sólo que usted se olvidó de escribir el veredicto si es posible o no.
 
Yedelkin:
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.
Es mucho más sencillo. Cuando se ejecuta una condición, el Asesor Experto puede simplemente borrarla - 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.
 
ivandurak:
Exactamente. Sólo que usted se olvidó de escribir el veredicto si puede o no puede.
Puedes hacerlo. Como en el post anterior pruébalo.
 
tol64:
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.