OnDeinit en los indicadores - página 3

 

Haga una impresión al principio de OnDeinit y después de cerrar la terminal del cliente, mire el registro de Expert y asegúrese de que OnDeinit ha sido llamado.

Este es su error

for(int i=ObjectsTotal()-1;i>=0;i--)

Está claro que conoces los objetos que tú mismo has creado.

Mantener sus nombres y eliminarlos sin referencia a ObjectsTotal y ObjectName

PS la nueva construcción ha añadido una función para eliminar un grupo de objetos por el prefijo. Te ayudará si nombras tus objetos utilizando el mismo prefijo único en su nombre

 
stringo:

Haga Print al principio de OnDeinit y después de cerrar la terminal del cliente, mire el registro de EA y asegúrese de que OnDeinit fue llamado.

Este es su error

Está claro que conoces los objetos que has creado tú mismo.

Guarde sus nombres y elimínelos sin referencia a ObjectsTotal y ObjectName

PS En la nueva compilación se ha añadido una función para eliminar un grupo de objetos por prefijo. Te ayudará si nombras tus objetos utilizando el mismo prefijo único en su nombre

Ya he podido probar cómo funciona el borrado de un grupo de objetos por prefijo. Genial, pero incluso el código compilado en las builds anteriores no funciona. En consecuencia, puede utilizarse, por ahora, sólo para fines personales. No tenemos que obligar a los usuarios a actualizarse por ello. Muchos ni siquiera saben cómo actualizar hasta que suben la actualización al servidor del DC.
 
stringo:

En realidad, deinit en todos los programas se llama cuando se cierra la terminal.

Hay incluso un código especial para la causa de la desinicialización. REASON_CLOSE

¿Y restablece los topes de los indicadores o no?
 
eevviill:
¿Y restablece los topes de los indicadores o no?
¿Qué es "restablecer los topes de los indicadores"?
 
eevviill:
¿Y restablece los topes de los indicadores o no?
Todo está restablecido. Después de todo, el terminal se cierra )))
 
stringo:

La situación con su indicador se ha resuelto.

La cuestión es que el indicador se calcula no sólo sobre la llegada de los ticks, sino también sobre el primer dibujo y sobre la llegada de la historia que falta.

1. Llega un nuevo tick - el indicador se calcula.

2. Llega el historial que falta, que tapa el hueco entre los últimos datos del último inicio del terminal y el último tick. El indicador se calcula. ¡Pero al mismo tiempo no hay ninguna condición de barra nueva!

Para resolver este problema hay que comprobar el número de barras. Aproximadamente así

Hmm. Poner el bloque de inicialización del buffer EMPTY_VALUE en Inite. El problema sigue siendo.
 

El bloque de inicialización del búfer está vacío tanto en init como en deinit. El resultado es el mismo. Es decir, no existe.

A la espera de los comentarios de los desarrolladores.

 
Scriptong:
Todo se pone a cero. Después de todo, el terminal se cierra )))
Sí, sí.
 
eevviill:
Hmm. El bloque de inicialización del buffer EMPTY_VALUE se pone en Inite.

¿Por qué? Es posible que los búferes internos aún no estén asignados.

¿Qué pasa cuando el buffer está muy cargado (ha llegado un nuevo lote de datos históricos)?

En estos casos, la inicialización de los búferes se realiza antes del cálculo del indicador, cuando está claro que todo el indicador será recalculado

 
stringo:

¿Por qué? Es posible que los búferes internos aún no estén asignados.

¿Y qué pasa cuando el buffer es muy grande (llegó un nuevo lote de datos históricos)?

En estos casos, la inicialización de los búferes se realiza antes del cálculo del indicador, cuando está claro que todo el indicador será recalculado

Bien. La puesta a cero tampoco funciona en deinit.