Cambiar el TF es un problema - página 6

 
Vasyl Nosal:
¿Eso es todo? ¿No va a fallar?
No es el código lo que falla. :) Tómalo y úsalo.
 
Sergei Vladimirov:

Vladimir, ¿por qué haces esto dentro de OnCalculate()? Me refiero a las dos últimas líneas - reinicialización de arrays. Tienes ambos topes calculados en cada barra, es una acción innecesaria.

if(prev_calculated==0)
{
   limit=rates_total-1;
   ArrayInitialize(up_arr,EMPTY_VALUE);
   ArrayInitialize(down_arr,EMPTY_VALUE);
}
¿Por qué ha decidido que la inicialización se realice en cada tic? La condición prev_calculado==0 se ejecuta una o dos veces al inicio del indicador. Durante la operación prev_calculated==0 puede pasar a serlo si se cambia el historial - pero rara vez o nunca y el cambio de historial requiere recalcular el indicador.
 
Sergei Vladimirov:
No es el código lo que falla. :) Tómalo y úsalo.

Gracias:))))))))))))))))))))))))))))))))))))))))))))))))))

¿Quién es el siguiente?

 
Karputov Vladimir:
¿Por qué has decidido que la inicialización tenga lugar en cada tic? La condición prev_calculado==0 se ejecuta una o dos veces al iniciar el indicador. Durante la operación prev_calculated==0 puede llegar a ser si se cambia el historial - pero rara vez o incluso nunca y el cambio de historial requiere recalcular el indicador.
¿Se puede prescindir de la puesta a cero de los búferes durante la carga del historial?
 
Karputov Vladimir:
¿Qué te hace pensar que la inicialización tendrá lugar en cada tic?
¿Dónde he escrito eso? Estaba preguntando por qué reinicializas los buffers en OnCalculate() si luego tienes ambos buffers calculados en todas las barras.
 
Sergei Vladimirov:
¿Dónde he escrito eso? Estaba preguntando por qué reinicializas los buffers en OnCalculate() si luego tienes ambos buffers calculados en todas las barras.
Afirmación incorrecta. Cuando prev_calculated==0 posteriormente paso por alto todas las barras, pero no garantiza la sustitución de todos los valores en los buffers de los indicadores. Por lo tanto, cuando prev_calculated==0 hay que borrar los buffers de los indicadores.
 
Vasyl Nosal:

Gracias:))))))))))))))))))))))))))))))))))))))))))))))))))

¿Quién es el siguiente?

¿Por qué mentir?

 
Karputov Vladimir:
Afirmación incorrecta. Cuando prev_calculated==0, posteriormentepaso por alto todas las barras, perono garantiza la sustitución de todos los valores enlas memorias intermedias de los indicadores. Por lo tanto, en prev_calculated==0 necesito borrar los buffers de los indicadores.

¿Sí? ¿Puedes darme un ejemplo de cuando en tu código no se llena algún valor de algún buffer? Excepto quizás el primer bar de la historia.

 
Sergei Vladimirov:

¿Por qué mentir?

Genialidad.

¿Has probado a cambiar a un par sin historial y luego a otro TF?

 
Sergei Vladimirov:

No era una declaración, era una pregunta.

¿Sí? ¿Tal vez puedas darnos un ejemplo, cuando en tu código algún valor de algún buffer no se llene?

Hagamos esto: toma el código 1.43 de este post y comenta las líneas:

if(prev_calculated==0)
{
   limit=rates_total-1;
//ArrayInitialize(up_arr,EMPTY_VALUE);
//ArrayInitialize(down_arr,EMPTY_VALUE);
}

y mirar el resultado al desplazar el gráfico hacia el fondo del historial y tener el historial cargado.