A mudança do TF é um problema - página 6

 
Vasyl Nosal:
É só isso? Não vai dar errado?
Não é o código que está com falhas. :) Pegue-o e use-o.
 
Sergei Vladimirov:

Vladimir, por que você está fazendo isso dentro da OnCalculate()? Refiro-me às duas últimas linhas - reinicialização das matrizes. Você tem os dois amortecedores calculados em cada barra, é uma ação desnecessária.

if(prev_calculated==0)
{
   limit=rates_total-1;
   ArrayInitialize(up_arr,EMPTY_VALUE);
   ArrayInitialize(down_arr,EMPTY_VALUE);
}
Por que você decidiu que a inicialização será realizada em cada carrapato? A condição pré_calculada==0 é executada uma ou duas vezes no início do indicador. Durante a operação pré_calculada==0 pode tornar-se assim se o histórico for alterado - mas raramente ou nunca e a mudança do histórico requer um novo cálculo do indicador.
 
Sergei Vladimirov:
Não é o código que está com falhas. :) Pegue-o e use-o.

Obrigado:))))))))))))))))))))))))))))))))))))))))))))))))))

Quem é o próximo?

 
Karputov Vladimir:
Por que você decidiu que a inicialização será feita a cada tique? A condição pré_calculada==0 é executada uma ou duas vezes no início do indicador. Durante a operação pré_calculada==0 pode se tornar se o histórico for alterado - mas raramente ou até nunca e a mudança do histórico requer um novo cálculo do indicador.
Você pode fazer sem zerar os amortecedores durante o carregamento do histórico?
 
Karputov Vladimir:
O que o faz pensar que a inicialização ocorrerá a cada tique?
Onde eu escrevi isso? Eu estava perguntando porque você reinicializa os amortecedores na OnCalculate() se você então tem os dois amortecedores calculados em todas as barras.
 
Sergei Vladimirov:
Onde eu escrevi isso? Eu estava perguntando porque você reinicializa os amortecedores na OnCalculate() se você então tem os dois amortecedores calculados em todas as barras.
Declaração incorreta. Quando pré_calculado==0 eu posteriormente contorno todas as barras, mas isso não garante a substituição de todos os valores nos amortecedores indicadores. Portanto, quando pré_calculado==0 você precisa limpar os amortecedores indicadores.
 
Vasyl Nosal:

Obrigado:))))))))))))))))))))))))))))))))))))))))))))))))))

Quem é o próximo?

Por que mentir?

 
Karputov Vladimir:
Declaração incorreta. Quando pré_calculado==0, eu posteriormenteultrapassei todas as barras, masisso não garante a substituição de todos os valores nosbuffers indicadores. Portanto, em pré-cálculo==0 eu preciso limpar os amortecedores indicadores.

Sim? Você pode me dar um exemplo de quando em seu código algum valor de algum buffer não será preenchido? Exceto talvez o primeiro bar da história.

 
Sergei Vladimirov:

Por que mentir?

Gênio.

Você já tentou mudar para um par sem histórico e depois mudar para outro TF?

 
Sergei Vladimirov:

Não foi uma declaração, foi uma pergunta.

Sim? Talvez você possa nos dar um exemplo, quando em seu código algum valor de algum buffer não será preenchido?

Vamos fazer o seguinte: pegue o código 1.43 deste post e comente as linhas:

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

e veja o resultado ao rolar o gráfico para o verso da história e ter a história carregada.

Razão: