mql5: Vou tentar explicar novamente (com os dedos):
O terminal começou a funcionar X tempo após o último arranque
Iniciado o download do histórico, que está faltando (o terminal ficou ocioso por X minutos)
Chamado OnCalculate para o indicador sobre o histórico disponível prevtime = último histórico conhecido, indicador tamanho de buffer N barras
Enquanto o histórico está sendo baixado do servidor, um tique vem
Chamado de OnCalculate do indicador, onde Tempo[0] é um tempo de tick, o indicador o memoriza como prétempo, o tamanho do buffer do indicador é N+1 barras (entre N e N+1 barras há uma lacuna na história)
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
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ê?
O que init() e deinit() tem a ver com isso? A operação é necessária em um lugar bem diferente. Vou repeti-lo novamente. Após o cálculo, a história foi carregada.
Você deu um link para o código que funciona na OnCalculate. Perguntei como você sabe que a inicialização no DeInit não funciona. Deixe-me especificar, por precaução, que depois de OnDeinit() nada do código indicador funciona (nem OnInit(), nem OnCalculate()). Portanto, você pode verificar a zeragem das matrizes somente no próprio OnDeinit().
Você deu um link para o código que funciona na OnCalculate. Perguntei como você sabe que a inicialização no DeInit não funciona. Deixe-me especificar, por precaução, que depois de OnDeinit() nada do código indicador funciona (nem OnInit(), nem OnCalculate()). Portanto, você pode verificar o fato de zerar as arrays somente no próprio OnDeinit().
Eu forneci um link para
OperaçãoAbertura do indicador M1 - terminal fechado - abriu-o em alguns minutos. O resultado está em capturas de tela.
Vou tentar explicar novamente (com os dedos):
O que tem a ver com isso?
Estou perguntando por que não funciona.
O que isso tem a ver com o tempo anterior?
Estou perguntando por que não funciona.
E como você sabe que não está funcionando? Como você verifica?
E por que inicializar os amortecedores indicadores antes de descarregá-los? Já está descarregado, não está?
Osbuffers indicadores devem ser inicializados quando todos os valores indicadores forem totalmente recalculados:
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ê?
O que init() e deinit() tem a ver com isso? A operação é necessária em um lugar bem diferente. Vou repeti-lo novamente. Após o cálculo, a história foi carregada.
Eu fiz uma versão funcional.
Como você sabe se não está funcionando? Como você verifica?
O que init(), deinit() tem a ver com isso? A operação é necessária em outro lugar. Vou repetir. Após o cálculo, o histórico foi carregado.
Fez uma versão funcional.
Eu ainda acertei na primeira vez por sua recomendação.
Estou me perguntando por que o deinit não funciona para zerar as arrays?
https://forum.mql4.com/ru/65066/page2#1015138
Você deu um link para o código que funciona na OnCalculate. Perguntei como você sabe que a inicialização no DeInit não funciona. Deixe-me especificar, por precaução, que depois de OnDeinit() nada do código indicador funciona (nem OnInit(), nem OnCalculate()). Portanto, você pode verificar a zeragem das matrizes somente no próprio OnDeinit().
Você deu um link para o código que funciona na OnCalculate. Perguntei como você sabe que a inicialização no DeInit não funciona. Deixe-me especificar, por precaução, que depois de OnDeinit() nada do código indicador funciona (nem OnInit(), nem OnCalculate()). Portanto, você pode verificar o fato de zerar as arrays somente no próprio OnDeinit().
Eu forneci um link para
OperaçãoAbertura do indicador M1 - terminal fechado - abriu-o em alguns minutos. O resultado está em capturas de tela.
É assim que eu testo.
Eu ainda acertei na primeira vez por sua recomendação.
Estou me perguntando por que deinit não funciona com zeragem de arrays?
Ou o deinit não funciona quando o terminal está fechado?
Funciona, mas não adianta limpar os amortecedores indicadores - eles não são salvos.
Por quê?
Por que o valor do buffer 0 cheio é salvo, mas não zerado?