Atualize a janela do gráfico - página 2

 

O "problema" pode ser que os indicadores utilizem um limite, ou seja, a função IndicatorCounted()
a fim de não repintar barras.

A mudança do cronograma é reajustada que, WindowRedraw() não pode. Sua função é redesenhar os objetos, não os índices indicadores.

WindowRedraw( )
Redireciona a carta atual forçadamente. É normalmente usado após as propriedades dos objetos terem sido alteradas.

Eu sei que normalmente vou em frente e recalculo cerca de 1000 barras na maioria das coisas que escrevo, e isso é
iniciado com um clique no botão direito do mouse Refresh.

Se você não limitar severamente o loop para o indicador, você recebe uma atualização do indicador a cada tick.

 
? alguns têm alguma pista do que está acontecendo? Por que eu não vejo nenhum efeito depois de usar o WindowRedraw()?

Muito obrigado,
 

Você é "difícil de ler" ?

 
oi fisi,

logo após quase dois meses, recebi sua última resposta. Só não sei como pulei isso. Ainda estou tendo problemas em "redesenhar meu indicador". agora vou tentar resolver o problema com as informações que você me deu. muito obrigado,,..,
 

Mostre seu código...

 
brspMA:
oi fisi,

logo após quase dois meses recebi sua última resposta. Só não sei como pulei isso. Ainda estou tendo problemas em "redesenhar meu indicador". agora vou tentar resolver o problema com as informações que você me deu. muito obrigado,
Eu li este tópico e acho que há um problema em seu código => a função WindowRefresh() não o ajudará.
 
oi,

Acho que estou tentando redefinir o indicador para forçá-lo a redesenhar tudo novamente desde o início!? minha questão é que estou usando uma função que muda os dados passados em função dos novos dados, e o resultado é que meu gráfico se torna uma massa ao longo do tempo. Preciso redesenhar todo o meu indicador periodicamente. ultimamente, tenho mudado o período de tempo, de modo que quando volto ao período de tempo em que estava, tenho as janelas do meu gráfico limpas (redesenhadas) . aqui está o esquema do meu código:

int start(){
   int limit;
   int counted_bars=IndicatorCounted();
   //---- check for possible errors
   if(counted_bars<0) return(-1);
   //---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   if (limit>GV) limit = GV;
   //---- main loop
   for(int i=limit; i>=1; i--){
 
 
{calculates the variable and feed the buffers}
 
return(0);}
muito obrigado,,..,
 
insira 2 linhas em seu código

int start(){
   int limit;
   int counted_bars=IndicatorCounted();
   //---- check for possible errors
   if(counted_bars<0) return(-1);
   //---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
 
   double startTime=GetTickCount();
   if (limit>GV) limit = GV;
   //---- main loop
   for(int i=limit; i>=1; i--){
 
 
{calculates the variable and feed the buffers}
 
   double finishTime=GetTickCount();
   Print("Calculation time is ",(finishTime-startTime)/1000.0," seconds");
return(0);}
 

O que é GV?

O que tenho feito recentemente, é algo assim:

for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){

Ele remonta a parte visível do indicador em cada tic tac, mas não as barras que estão fora de vista.

 
phy:

O que é GV?

O que tenho feito recentemente, é algo assim:

for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){

Ele remonta a parte visível do indicador em cada tic tac, mas não as barras que estão fora de vista.


GV é uma variável global que eu uso para definir o limite de acordo com o tempo que eu quero voltar a testar.

vocês são fantásticos!! Vou implementar este código esta tarde.

for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){
obrigado por sua generosidade,..,