- Recursos da versão da Web - MetaTrader 5
- MetaTrader 5 para Forex, bolsa de valores e futuros
- Como se tornar uma corretora
Abimael,
Eu não sou um expert em MQL5 então me desculpe se a resposta não resolver sua pergunta, mas vale tentar... E tive esse mesmo problema. Então lendo sobre arrays vi que ele sempre inicia no 0, porém eu estava contanto range a partir do 1. Então apenas aumentei +1 na abertura do meu range e resolveu. Ou seja, neste seu caso, em vez de
double DadosCanal[][5];
eu tentaria com
double DadosCanal[][6];
Abimael,
Eu não sou um expert em MQL5 então me desculpe se a resposta não resolver sua pergunta, mas vale tentar... E tive esse mesmo problema. Então lendo sobre arrays vi que ele sempre inicia no 0, porém eu estava contanto range a partir do 1. Então apenas aumentei +1 na abertura do meu range e resolveu. Ou seja, neste seu caso, em vez de
eu tentaria com
Eu tentei isso, ele até compila, mas na hora em que carrego o arquivo no gráfico da erro array out of range.
Eu tentei isso, ele até compila, mas na hora em que carrego o arquivo no gráfico da erro array out of range.
E tome cuidado porque como é bidimensional, quando vc usa ArraySize() pra saber o tamanho ele lê tudo como se fosse unidimensional.
Portanto, a cada novo elemento:
ArrayResize( DadosCanal, ArraySize(DadosCanal)/5 + 1 );
;)
Se você usa intensamente esta linha de adição de elementos, sugiro isolar o uso do ArraySize() e usar ao invés disso, um contador, já que vc sabe previamente qual é o tamanho do seu vetor...
Dependendo do tamanho do seu vetor, ArraySize() pode se tornar lento...
;)
Se você usa intensamente esta linha de adição de elementos, sugiro isolar o uso do ArraySize() e usar ao invés disso, um contador, já que vc sabe previamente qual é o tamanho do seu vetor...
Dependendo do tamanho do seu vetor, ArraySize() pode se tornar lento...
;)
Flávio, desculpe minha ignorancia, mas eu tentei fazer isso:
DadosCanal[0][1] = preço 1;
DadosCanal[0][2] = preço 2;
DadosCanal[0][3] = preço 3;
DadosCanal[0][4] = preço 4;
DadosCanal[0][5] = preço 1;
ArrayResize( DadosCanal, ArraySize(DadosCanal)/5 + 1 );
DadosCanal[1][1] = Novo preço 1;
DadosCanal[1][2] = Novo preço 2;
DadosCanal[1][3] = Novo preço 3;
DadosCanal[1][4] = Novo preço 4;
DadosCanal[1][5] = Novo preço 1;
Não funcionou
Flávio, desculpe minha ignorancia, mas eu tentei fazer isso:
DadosCanal[0][1] = preço 1;
DadosCanal[0][2] = preço 2;
DadosCanal[0][3] = preço 3;
DadosCanal[0][4] = preço 4;
DadosCanal[0][5] = preço 1;
ArrayResize( DadosCanal, ArraySize(DadosCanal)/5 + 1 );
DadosCanal[1][1] = Novo preço 1;
DadosCanal[1][2] = Novo preço 2;
DadosCanal[1][3] = Novo preço 3;
DadosCanal[1][4] = Novo preço 4;
DadosCanal[1][5] = Novo preço 1;
Não funcionou
Poste sempre seu código-fonte usando o botão abaixo:
E poste o código completo da função, onde todos os elementos estão sendo inicializados, etc... do contrário estaremos voando às cegas...
Experimente colocar antes do ArrayResize(), ArrayPrint(DadosCanal), para ver a estrutura do seu vetor...
Segue!
Não existe DadosCanal[1][5], não seria 0 (ZERO) ?
Cara muito obrigado!!! JA tinha feito um milhão de coisas e já estava pensando em como fazer o negocio sem array. Valeu mesmo, era este o erro!!!
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso