Cambiar el TF es un problema - página 8

[Eliminado]  

En resumen, la conclusión es ésta.

Contamos manualmente la diferencia entre las barras contadas y las no contadas, y si es más de 1...

restablecemos todos los buffers a la vez o elemento por elemento.

No es agradable. ¿Tal vez los desarrolladores reinicien todo igual si hay una condición?

 
Vasyl Nosal:

En resumen, la conclusión es ésta.

Contamos manualmente la diferencia entre las barras contadas y las no contadas, y si es más de 1...

restablecemos todos los buffers a la vez o elemento por elemento.

No es agradable. ¿Tal vez los desarrolladores reinicien todo igual si hay una condición?

Veinticinco de nuevo :) . En ese caso, ¿para qué necesitas la cabeza? Es imposible prever todas las variantes de reacción a los acontecimientos. La elección de la variante recae sobre los hombros del programador (aunque, no hay nada que hacer aquí, dos líneas: comprobar si es ==0 y reaccionar).
 
Vasyl Nosal:

En resumen, la conclusión es ésta.

Contamos manualmente la diferencia entre las barras contadas y las no contadas, y si es más de 1...

restablecemos todos los buffers a la vez o elemento por elemento.

No es agradable. ¿Tal vez los desarrolladores restablezcan los búferes ellos mismos si hay una condición?

¿Otra vez? :D ¿Y esto después de todas las explicaciones con ejemplos de cómo escribir correctamente los indicadores? )))

[Eliminado]  
Sergei Vladimirov:

¡¿Qué, otra vez?! :D ¿Y esto después de todas las explicaciones con ejemplos de cómo escribir correctamente los indicadores? )))

Entonces, en mi versión y en la tuya va a cero, ¿no?
 
Vasyl Nosal:
Entonces, en mi variante y en la tuya hay puesta a cero, ¿no?

En mi versión, se calcula cada barra. Si el valor del buffer en dicha barra es cero, se convertirá en cero, si es igual a 5, se convertirá en 5. En tu caso, puedes simplemente anular los buffers a través de ArrayInitialize() y luego no calcular aquellas barras en las que el valor de los buffers debe permanecer nulo. Pero, en primer lugar, este es un mal estilo de programación (¡muy malo!), y en segundo lugar, este es un caso especial.

Todas las barras deben ser calculadas explícitamente. Sólo de esta manera puedes estar seguro de que no habrá "basura", datos no calculados, etc. en ninguna celda, y no tendrás que coger bugs (con los que has luchado en este hilo).

Y tampoco es necesario llevar un control de las actualizaciones del historial, es innecesario. Sólo tiene que empezar el cálculo desde la barra [rates_total - MathMax(prev_calculated, 1)], y todo estará siempre garantizado para ser calculado y recalculado, si es necesario.

[Eliminado]  
Sergei Vladimirov:

En mi versión, se calcula cada barra. Si el valor del buffer en dicha barra es cero, se convertirá en cero, si es igual a 5, se convertirá en 5. En tu caso, puedes simplemente anular los buffers a través de ArrayInitialize() y luego no calcular aquellas barras en las que el valor de los buffers debe permanecer nulo. Pero, en primer lugar, este es un mal estilo de programación (¡muy malo!), y en segundo lugar, este es un caso especial.

Todas las barras deben ser calculadas explícitamente. Sólo de esta manera puedes estar seguro de que no habrá "basura", datos no calculados, etc. en ninguna celda, y no tendrás que coger bugs (con los que has luchado en este hilo).

Y no es necesario llevar un registro de las actualizaciones del historial, es innecesario. Basta con iniciar el cálculo con la barra [rates_total - MathMax(prev_calculated, 1)], y siempre se garantizará que todo esté calculado y recalculado si es necesario.

Ouch. Bien.

Los desarrolladores no implementarán nada de todos modos.

Gracias a todos.