Erros, bugs, perguntas - página 1088

 
MoneyJinn:

Após recompilar o indicador, o erro "array out of range" começou a ocorrer quando se trabalhava com matrizes dinâmicas.

Não ocorreu antes. O que fazer?

Se tiver linhas semelhantes no início do ficheiro

#include <File.mqh> , estes incluem ficheiros que muito provavelmente foram alterados desde a sua compilação anterior, por si ou por outra pessoa

 
Olegts:

Se tiver linhas semelhantes no início do seu ficheiro

#include <File.mqh>, é provável que estes incluam ficheiros alterados desde a sua última compilação, por si ou por outra pessoa.

Não há ficheiros incluídos.

 
MoneyJinn:

Não existem ficheiros plug-in.

então deve afixar o indicador, talvez alguém dê uma vista de olhos à sua vontade)
 

Porque ocorreria um erro de"matriz fora de alcance" mesmo quando se tenta colocar algo numa matriz dinâmica? É uma matriz dinâmica.

Array B1[] Definido como o tampão indicador correspondente

SetIndexBuffer(0,B1,INDICATOR_DATA); ArraySetAsSeries(B1,true);

O tamanho da matriz não é claramente controlado pelo utilizador aqui.

 
MoneyJinn:
Porque ocorreria um erro de"matriz fora de alcance" mesmo quando se tenta colocar algo numa matriz dinâmica? É uma matriz dinâmica.
Isto não significa que aumenta o seu tamanho por si só, a função ArrayResize faz isto e depois pode adicionar dados, mas não mais do que o novo tamanho do array
 
MoneyJinn:
Porque ocorreria um erro de"matriz fora de alcance" mesmo quando se tenta colocar algo numa matriz dinâmica? É dinâmico.
(fcplm)
 
TheXpert:
(fcplm)

Quem o vai prender? Ele é um monumento!

 

Erro de plataforma.

Se ao preencher a matriz B1 do buffer indicador o procedimento SetIndexBuffer(0,B1,INDICATOR_DATA) for chamado repetidamente,

Por exemplo, ao inicializar o indicador, a próxima tentativa de escrever algo na matriz B1 causa o erro"matriz fora de intervalo".

Ao chamar uma vez o procedimento SetIndexBuffer(0,B1,INDICATOR_DATA), tudo funciona bem.

Antes não existia tal coisa.

Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
 
MoneyJinn:

Erro de plataforma.

Se ao preencher a matriz B1 do buffer indicador o procedimento SetIndexBuffer(0,B1,INDICATOR_DATA) for chamado repetidamente,

por exemplo, ao inicializar o indicador, a próxima tentativa de escrever algo na matriz B1 causa o erro"matriz fora de intervalo".

Quando ocorre uma única chamada do procedimento SetIndexBuffer(0,B1,INDICATOR_DATA), tudo funciona bem.

Isso não acontecia antes.

Mas porque o fazes repetidamente?

Ligar um amortecedor significa limpá-lo e prepará-lo para uma ligação dinâmica para cálculos subsequentes. Se lhe chamar uma segunda vez, o buffer anterior será limpo e só será preenchido na próxima chamada do novo cálculo do indicador.

 
Renat:

Porque é que está a fazer isto repetidamente?

A ligação do tampão significa a sua limpeza e preparação para a ligação dinâmica para os próximos cálculos. Se lhe chamar uma segunda vez, o buffer anterior será limpo e só será preenchido na próxima chamada do novo cálculo do indicador.

Esta foi a inicialização completa padrão do indicador, que tem lugar quando o indicador é iniciado e é feita através de Oninit().

Por vezes, quando se actualiza a história, etc., também é necessário fazê-lo.

Nunca ninguém pensou que a inicialização repetida do indicador através de Oninit() faria com que as matrizes parassem de responder.