COLORIR BANDAS DE BOLLINGER

 
Olá!
Ainda sou iniciante e acabei encontrando um problema ao tentar colorir as Bandas de Bollinger em um EA. Já tentei pesquisar no Fórum, no YouTube, na documentação... Mas não consigo encontrar a solução.
Está dando o erro "array out of range". Já pesquisei sobre o erro, mas no meu caso, especificamente, não resolveu.
Criei uma Label para cada banda de bollinger (superior, centrar e inferior), descrevendo tudo que é necessário. Até aí, sem problemas.
Criei os arrays de cada uma das bandas.
Em onInit, "Setei" os buffers  (3 das bandas e 3 das cores) e dei valor ao handle.
O problema está ocorrendo em OnCalculate: copio os buffers e crio um loop "for" para colorir e desenhar o indicador automaticamente.
Em "i" recebe o valor de "prev_calculated" e para "i" < "rates_total" soma 1.
Dessa forma, pego os buffers das cores com referência em "i" e dou o número da cor desejada. Nisso dá "array out of range" e não faz nada. O máximo que eu consigo foi criar uma só linha ou deixar o gráfico tudo bugado.
Se alguém puder ajudar, eu estou a dias tentando saber como fazer isso. Se precisar eu envio o arquivo aqui.

 

Quando for assim posta o codigo que sempre tem alguem para te ajudar. Vou falar coisas que podem ou não te auxiliar

Algumas funções retornam os numeros de barras em ordem decrescente, herança do MQL4, mas no MQL5 a 0 é a mais antiga e o rates_total é o numero da mais recente. Isso as vezes causa esse erro de estar tudo "embaralhado",  

O erro de Array é chato, o melhor jeito de resolvê-lo para mim é avançar passo a passo e mostrar o valor das variáveis no quadro de expressões. Lembre F9 marca um ponto de parada e com F11 ele executa linha a linha, para colocar uma variável no quadro de expressão basta escrever seu nome lá ou no momento da depuração clicar com o botão esquerdo do mouse na variável e mandar adicionar visualização.



Espero que esses passos ajudem.

 
FABIO:
Olá!
Ainda sou iniciante e acabei encontrando um problema ao tentar colorir as Bandas de Bollinger em um EA. Já tentei pesquisar no Fórum, no YouTube, na documentação... Mas não consigo encontrar a solução.
Está dando o erro "array out of range". Já pesquisei sobre o erro, mas no meu caso, especificamente, não resolveu.
Criei uma Label para cada banda de bollinger (superior, centrar e inferior), descrevendo tudo que é necessário. Até aí, sem problemas.
Criei os arrays de cada uma das bandas.
Em onInit, "Setei" os buffers  (3 das bandas e 3 das cores) e dei valor ao handle.
O problema está ocorrendo em OnCalculate: copio os buffers e crio um loop "for" para colorir e desenhar o indicador automaticamente.
Em "i" recebe o valor de "prev_calculated" e para "i" < "rates_total" soma 1.
Dessa forma, pego os buffers das cores com referência em "i" e dou o número da cor desejada. Nisso dá "array out of range" e não faz nada. O máximo que eu consigo foi criar uma só linha ou deixar o gráfico tudo bugado.
Se alguém puder ajudar, eu estou a dias tentando saber como fazer isso. Se precisar eu envio o arquivo aqui.

Como o colega disse seria interessante postar o codigo para ter uma ajuda melhor...

Voce disse que quer colorir uma banda de bolinger, entao cada linha plotada tera 2 dados que estao certos pelo que voce explicou. Mas verique la em cima no codigo se o valor das quantidades estao atualizadas (3 plots e 6 buffers) e se todas as linhas estao como do tipo colorida. O problema eh que possivelmente voce esta com o "i" em algum momento igual ou superior ao rates_total. Pela explicacao do codigo nao parece ter como, tem alguns casos onde voce poderia estar aplicando menos 1 a prev_calculated e acabar com um valor inicial de -1 para o indice? Acredito que isso cobre o que da pra dizer disso que passou...

 
Aray  out of range  ocorre quando seu looping ou atribuição de valores à variável é  maior do que a própria, faltando memória para a mesma.
Veja se quando você declara a banda de bollinger você declara a quantidade de índice correto no objeto.
Outra coisa, não precisa colorir num looping.
Tente usar um if bandadebollinger[índiceUM] atender ao seu critério, então colorir...
Razão: