OnDeinit em indicadores - página 4

 
eevviill:
OK. Deinit também não faz a zeragem.

Você ainda não respondeu à pergunta, o que você quer dizer com zerar os amortecedores?

O terminal do cliente não zera o conteúdo dos buffers indicadores. A zeragem deve ser providenciada pelo programador.

Os amortecedores são limpos automaticamente quando o indicador é descarregado

 
stringo:

Você ainda não respondeu à pergunta, o que você quer dizer com zerar os amortecedores?

O terminal do cliente não zera o conteúdo dos buffers indicadores. A zeragem deve ser providenciada pelo programador.

Os amortecedores são excluídos automaticamente ao carregar um 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);
Não funciona nem ininit nem deinit.
 
eevviill:
Não funciona nem no init nem no deinit.
Por que você precisa dele em deinit? E por que uma matriz de indicadores dinâmicos precisaria ser inicializada?
 
eevviill:
Isto não funciona nem no init nem no deinit.

Mais uma vez.

Você deve inicializar a matriz somente antes do recálculo total. E isso só se você preencher a matriz seletivamente e não elemento por elemento

 
stringo:

Mais uma vez.

Você só precisa inicializar a matriz antes do recálculo total. E isso só se você preencher a matriz seletivamente, não um elemento após o outro.

eevviill:
Isto não funciona nem no init nem no deinit.

Por que você precisa dele em deinit? E por que uma matriz de indicadores dinâmicos precisaria ser inicializada?

Você já leu o problema?

 
evillive:
Por que precisamos dele em deinit? E por que inicializar a matriz dinâmica do indicador?

Porque em algum lugar você tem que fazê-lo. Inite diz que você não pode.

Porque apenas 0 barra é contada. Após fechar o terminal e abri-lo após um par de castiçais, a barra 0 é calculada + mais uma barra com um offset para o tempo em que o terminal foi fechado.

 
stringo:

Mais uma vez.

Você só precisa rubricar a matriz antes do recálculo total. E isso só se você preencher a matriz seletivamente e não em uma fila elemento por elemento

Legal. Eu só preencho o elemento 0.

Se você não entender o problema, posso descrevê-lo novamente.

 
eevviill:

Porque em algum lugar você tem que fazê-lo. Inite diz que você não pode.

Porque apenas 0 barra é contada. Depois de fechar o terminal e abri-lo após um par de castiçais, verifica-se que 0 barra é contada + outra com um turno no momento em que o terminal foi fechado.

Na verdade, a barra zero foi calculada corretamente, mas depois a história foi carregada. E uma nova barra zero foi calculada.
 
Vinin:
Na verdade, a barra zero foi calculada corretamente, mas depois o histórico foi carregado. E uma nova barra zero foi calculada.

Aqui. Eu faço uma zeragem tampão para isso. A Inite já disse que você não pode fazer isso.

Eu quero desinibir. Mas também não funciona lá. Por quê?

 
Vou tentar explicar novamente (com os dedos):
  1. O terminal começou a funcionar X tempo após o último arranque
  2. Iniciado o download do histórico, que está faltando (o terminal ficou ocioso por X minutos)
  3. Chamar a OnCalculate para o histórico disponível prevtime= último histórico conhecido, indicador tamanho de buffer N barras
  4. Enquanto o histórico está sendo baixado do servidor, um tique vem
  5. Chamado de OnCalculate do indicador, onde Tempo[0] é um tempo de tick, o indicador o memoriza como tempo prévio, o tamanho do buffer do indicador é N+1 barras (entre N e N+1 barras há uma lacuna na história)
  6. Após o download do histórico, OnCalculate é chamado novamente, mas desta vez não há nenhum buraco no histórico, mas o tempo anterior tem a mesma data que Time[0] - nenhuma nova barra (respectivamente, nenhuma compensação de buffers no indicador), o tamanho do buffer do indicador N+X/barras de tempo e IndBuffer[0] não são os mesmos do passo 5