OnDeinit en los indicadores - página 4

 
eevviill:
DE ACUERDO. Deinit tampoco hace la puesta a cero.

Todavía no has respondido a la pregunta, ¿a qué te refieres con poner a cero los búferes?

El terminal cliente no pone a cero el contenido de los búferes indicadores. La puesta a cero será proporcionada por el programador.

Los búferes se borran automáticamente cuando se descarga el indicador

 
stringo:

Todavía no has respondido a la pregunta, ¿a qué te refieres con poner a cero los búferes?

El terminal cliente no pone a cero el contenido de los búferes indicadores. La puesta a cero será proporcionada por el programador.

Los búferes se borran automáticamente al cargar un indicador

 ArrayInitialize(body_up,EMPTY_VALUE);
ArrayInitialize(body_down,EMPTY_VALUE);
ArrayInitialize(shadow_up,EMPTY_VALUE);
ArrayInitialize(shadow_down,EMPTY_VALUE);
  ArrayInitialize(yell_body_up,EMPTY_VALUE);
ArrayInitialize(yell_body_down,EMPTY_VALUE);
ArrayInitialize(yell_shadow_up,EMPTY_VALUE);
ArrayInitialize(yell_shadow_down,EMPTY_VALUE);
No funciona ni ininit ni deinit.
 
eevviill:
No funciona ni en init ni en deinit.
¿Por qué lo necesitas en deinit? ¿Y por qué habría que inicializar una matriz de indicadores dinámicos?
 
eevviill:
Esto no funciona ni en init ni en deinit.

Una vez más.

Debe inicializar la matriz sólo antes del recálculo total. Y eso es sólo si se llena el array de forma selectiva y no elemento por elemento

 
stringo:

Una vez más.

Sólo es necesario inicializar la matriz antes del recálculo total. Y eso es sólo si se llena la matriz de forma selectiva, no un elemento tras otro

eevviill:
Esto no funciona ni en init ni en deinit.

¿Por qué lo necesitas en deinit? ¿Y por qué habría que inicializar una matriz de indicadores dinámicos?

¿Has leído el problema?

 
evillive:
¿Por qué lo necesitamos en deinit? ¿Y por qué inicializar la matriz dinámica del indicador?

Porque en algún lugar hay que hacerlo. Inite dice que no se puede.

Porque sólo se cuenta la barra 0. Tras cerrar el terminal y abrirlo después de un par de velas se calcula la barra 0 + una barra más con un desfase por el tiempo que se cerró el terminal.

 
stringo:

Una vez más.

Sólo es necesario inicializar la matriz antes del recálculo total. Y eso sólo si rellenas el array de forma selectiva y no en una fila elemento a elemento

Muy bien. Sólo relleno el elemento 0.

Si no entiendes el problema, puedo describirlo de nuevo.

 
eevviill:

Porque en algún lugar hay que hacerlo. Inite dice que no se puede.

Porque sólo se cuenta la barra 0. Tras cerrar el terminal y abrirlo después de un par de velas, resulta que se calcula la barra 0 + otra con un desplazamiento por el momento en que se cerró el terminal.

En realidad, la barra de cero se ha calculado correctamente, pero luego se ha cargado la historia. Y se ha calculado una nueva barra de cero.
 
Vinin:
En realidad, la barra de cero se calculó correctamente, pero luego se cargó el historial. Y se ha calculado una nueva barra de cero.

Aquí. Hago una puesta a cero del buffer para esto. Inite ya ha dicho que no se puede hacer eso.

Quiero deinir. Pero ahí tampoco funciona. ¿Por qué?

 
Intentaré explicarlo de nuevo (con los dedos):
  1. El terminal se puso en marcha X tiempo después de la última puesta en marcha
  2. Iniciada la descarga del historial, que falta (el terminal estuvo inactivo durante X minutos)
  3. Llamar a OnCalculate para el historial disponible prevtime= último tiempo del historial conocido, tamaño del buffer del indicador N barras
  4. Mientras se descarga el historial del servidor, aparece un tick
  5. Llamada a OnCalculate del indicador, donde Time[0] es un tiempo de tick, el indicador lo memoriza como prevtime, el tamaño del buffer del indicador es N+1 barras (entre N y N+1 barras hay un hueco en el historial)
  6. Después de que se descargue el historial, se llama de nuevo a OnCalculate, pero esta vez no hay ningún hueco en el historial, sino que prevtime tiene la misma fecha que Time[0] - no hay ninguna barra nueva (respectivamente, no se borran los búferes en el indicador), el tamaño del búfer de las barras del indicador N+X/Timeframe y IndBuffer[0] no son los mismos que en el paso 5
Razón de la queja: