Veja a captura de tela do Comentário após fechar o terminal e abri-lo após 1 minuto.
Número de elementos inicializados e que o primeiro, segundo, terceiro e quarto elemento do buffer está vazio.
O indicador conta apenas o 0° tampão. Então, por que 2 velas?
Porque quando você analisa para uma nova barra, você não verifica o número de barras, mas apenas o tempo. Quando você inicia o terminal ou quebra a conexão com o servidor durante a operação, antes que as barras em falta (até o histórico completo) cheguem, um tique vem. Neste tick, uma nova vela é criada, mas há uma lacuna (falta de histórico) entre ela e o histórico no terminal, que será baixada do servidor e inserida no sistema, e como você não analisa o número de barras, você vai pensar que não há uma nova barra no próximo cálculo, e é aí que a segunda vela aparece. Após a abertura de um novo bar, ele desaparecerá.
mql5: Porque quando você analisa para uma nova barra, você não verifica o número de barras, mas se limita a verificar o tempo. Quando você inicia o terminal ou quebra a conexão com o servidor durante a operação, um tique vem antes que as barras que faltam (ao histórico completo) cheguem. Neste tick, uma nova vela é criada, mas há uma lacuna (falta de histórico) entre ela e o histórico no terminal, que será baixada do servidor e inserida no sistema, e como você não analisa o número de barras, você vai pensar que não há uma nova barra no próximo cálculo, e é aí que a segunda vela aparece. Após a abertura de um novo bar, ele desaparecerá.
022:52:04.765 Custom indicator Test\test EURUSD.z,M1: loaded successfully
022:52:04.795 test EURUSD.z,M1: initialized
022:52:04.795 test EURUSD.z,M1: rates_total = 75183022:52:11.902 test EURUSD.z,M1: rates_total = 75184022:52:28.712 test EURUSD.z,M1: uninit reason 9022:52:28.712 test EURUSD.z,M1: OnDeinit сработал 75184022:52:28.832 Custom indicator test EURUSD.z,M1: removed
022:57:10.366 Custom indicator Test\test EURUSD.z,M1: loaded successfully
022:57:10.396 test EURUSD.z,M1: initialized
022:57:10.396 test EURUSD.z,M1: rates_total = 75184022:57:14.972 test EURUSD.z,M1: rates_total = 75185022:57:59.167 test EURUSD.z,M1: rates_total = 75190
// Локальное время наверное отстаёт от серверного на несколько секунд. На сервере было уже 58 минут.
022:58:34.237 test EURUSD.z,M1: uninit reason 1022:58:34.237 test EURUSD.z,M1: OnDeinit сработал 75190022:58:34.247 Custom indicator test EURUSD.z,M1: removed
Por favor, peça uma resposta simples aos desenvolvedores.
Quando o terminal é fechado, a função DeInit() é executada nos programas anexados à carta?
A rigor, não.
OnDeinit é executado. O DeInit só será executado se você o chamar explicitamente da OnDeinit.
Se você estiver se referindo à antiga função deinit, tenha também em mente que os nomes das funções são sensíveis a maiúsculas e minúsculas. Ou seja, deInit é uma função desconhecida, deinit é um ponto de entrada padrão na desinicialização (como OnDeinit)
E não importa que no deinit a zeragem ocorra quando o terminal é fechado?
Quem se importa? Quando o terminal é fechado, esses buffers não são mais necessários, pois serão imediatamente liberados quando o programa for descarregado, o que ocorre imediatamente após o OnDeinit
Tente apenas mudar o cronograma. OnDeinit funcionará, os amortecedores permanecerão (porque a descarga do programa não acontece neste caso), mas ninguém garante seu conteúdo da "vida passada".
Leia, finalmente, a documentação! https://docs.mql4.com/ru/runtime/running e https://docs.mql4.com/ru/runtime /event_fire#deinit
Quem se importa? Quando o terminal é fechado, esses buffers não são mais necessários, pois serão imediatamente liberados quando o programa for descarregado, o que ocorre imediatamente após o OnDeinit
Tente apenas mudar o cronograma. OnDeinit funcionará, os amortecedores permanecerão (como o programa não é descarregado neste caso), mas ninguém garante seu conteúdo da "vida passada".
Leia, finalmente, a documentação! https://docs.mql4.com/ru/runtime/running e https://docs.mql4.com/ru/runtime /event_fire#deinit
Então, no meu caso, os amortecedores já estão sendo divididos quando a tabela é reaberta?
eevviill: Então, no meu caso, os amortecedores são bifurcados quando o gráfico é reaberto?
Você não tem bifurcação tampão.
É assim que você mesmo preenche seu buffer. A primeira vez, quando você o desenha; a segunda vez, quando você recebe uma porção de dados. Ambas as vezes você opera com o mesmo valor de Tempo[0].
É assim que você mesmo preenche seu buffer. A primeira vez na renderização e a segunda vez na chegada dos dados. Ambas as vezes você opera com o mesmo valor de Tempo[0].
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Desenvolvedores, você tem um erro em algum lugar.
Veja a captura de tela do Comentário após fechar o terminal e abri-lo após 1 minuto.
Número de elementos inicializados e que o primeiro, segundo, terceiro e quarto elemento do buffer está vazio.
O indicador conta apenas o 0° tampão. Então, por que 2 velas?
Desenvolvedores, você tem um erro em algum lugar.
Veja a captura de tela do Comentário após fechar o terminal e abri-lo após 1 minuto.
Número de elementos inicializados e que o primeiro, segundo, terceiro e quarto elemento do buffer está vazio.
O indicador conta apenas o 0° tampão. Então, por que 2 velas?
Porque quando você analisa para uma nova barra, você não verifica o número de barras, mas se limita a verificar o tempo. Quando você inicia o terminal ou quebra a conexão com o servidor durante a operação, um tique vem antes que as barras que faltam (ao histórico completo) cheguem. Neste tick, uma nova vela é criada, mas há uma lacuna (falta de histórico) entre ela e o histórico no terminal, que será baixada do servidor e inserida no sistema, e como você não analisa o número de barras, você vai pensar que não há uma nova barra no próximo cálculo, e é aí que a segunda vela aparece. Após a abertura de um novo bar, ele desaparecerá.
E não importa que no deinit a zeragem ocorra quando o terminal é fechado?
Vasily, execute um indicador de teste que imprime o número de barras.
Isto é o que se imprime no tronco.
Talvez isto lhe diga de onde vem o problema...
Por favor, peça uma resposta simples aos desenvolvedores.
Quando o terminal é fechado, a função DeInit() é executada nos programas anexados à carta?
A rigor, não.
OnDeinit é executado. O DeInit só será executado se você o chamar explicitamente da OnDeinit.
Se você estiver se referindo à antiga função deinit, tenha também em mente que os nomes das funções são sensíveis a maiúsculas e minúsculas. Ou seja, deInit é uma função desconhecida, deinit é um ponto de entrada padrão na desinicialização (como OnDeinit)
E não importa que no deinit a zeragem ocorra quando o terminal é fechado?
Quem se importa? Quando o terminal é fechado, esses buffers não são mais necessários, pois serão imediatamente liberados quando o programa for descarregado, o que ocorre imediatamente após o OnDeinit
Tente apenas mudar o cronograma. OnDeinit funcionará, os amortecedores permanecerão (porque a descarga do programa não acontece neste caso), mas ninguém garante seu conteúdo da "vida passada".
Leia, finalmente, a documentação! https://docs.mql4.com/ru/runtime/running e https://docs.mql4.com/ru/runtime /event_fire#deinit
Quem se importa? Quando o terminal é fechado, esses buffers não são mais necessários, pois serão imediatamente liberados quando o programa for descarregado, o que ocorre imediatamente após o OnDeinit
Tente apenas mudar o cronograma. OnDeinit funcionará, os amortecedores permanecerão (como o programa não é descarregado neste caso), mas ninguém garante seu conteúdo da "vida passada".
Leia, finalmente, a documentação! https://docs.mql4.com/ru/runtime/running e https://docs.mql4.com/ru/runtime /event_fire#deinit
Então, no meu caso, os amortecedores são bifurcados quando o gráfico é reaberto?
Você não tem bifurcação tampão.
É assim que você mesmo preenche seu buffer. A primeira vez, quando você o desenha; a segunda vez, quando você recebe uma porção de dados. Ambas as vezes você opera com o mesmo valor de Tempo[0].
Você não está tendo uma divisão tampão.
É assim que você mesmo preenche seu buffer. A primeira vez na renderização e a segunda vez na chegada dos dados. Ambas as vezes você opera com o mesmo valor de Tempo[0].
OK.
Por favor, corrija a ajuda em inglês e pronto.
Também a ajuda inglesa diz quea ArrayInitialize não devolve nada.