![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Por favor, diga-me como trabalhar correctamente com um conjunto de elementos que são estruturas Mqlrates.
Isto é exactamente o que eu quero saber:
MqlRates AdaptedRates[];
ArraySetAsSeries(AdaptedRates,true);
AdaptedRates[300].open=1;
O depurador dá um erro - Acesso inválido à matriz.
Compreendo que utilizando esta forma de gravação, só podemos ler elementos de uma estrutura que é um elemento de uma matriz.
A questão é como escrever correctamente os elementos da estrutura. Não estou interessado em todas elas. O importante é o preço de .abrir .alto .baixo .fechar.
Peço desculpa antecipadamente por esta pergunta provavelmente muito trivial (não sou o programador), mas na ajuda não encontrei a resposta. Ficarei grato por qualquer ajuda.
Definir o tamanho da matriz. ArrayResize
Tanto quanto sei, se eu definir tamanho, por exemplo
:) Não se define matriz estática, mas sim o tamanho da matriz dinâmica com ArrayResize().
Bem, como: ArrayResize(AdaptedRates,302); etc.
Está a utilizar uma matriz dinâmica AdaptedRates[]. Tanto quanto me lembro, ao trabalhar com arrays dinâmicos deve definir o seu tamanho usando a função ArrayResize(). E até agora o compilador está a colidir com o índice 300 especificado na terceira linha.
Esta é uma citação da ajuda.
Swan, Yedelkin obrigado por uma resposta tão rápida.
Tanto quanto sei, se eu definir um tamanho, por exemplo
sim.
MqlRates AdaptedRates[];// deixando assim a matriz dinâmica
ArrayResize(AdaptedRates,302);// e definir o tamanho certo
:) Não se define um array estático, mas sim um array dinâmico usando o ArrayResize().
Bem, como ArrayResize(AdaptedRates,302); etc.
Uma falha no testador de estratégias.
De repente pára e todos os agentes locais e remotos terminaram e assim ficam pendurados.
Pode dizer-me como recomeçar, é uma pena começar tudo de novo?Obrigado pela explicação popular, tanto quanto entendo é desejável que o ArrayResize até aos limites necessários antes de qualquer referência a uma célula de matriz dinâmica , vou tentar.
Nota. Apenas para amortecedores indicadores, isto não precisará de ser feito. O subsistema executivo do terminal trata disto por si só.
Nota 2:ArrayResize() deve de preferência ser aplicado apenas quando é necessário alterar o tamanho de um array dinâmico, e não antes de qualquer acesso aos seus elementos. É bem possível que uma vez seja dado um tamanho a um conjunto dinâmico, e então o programa simplesmente acederá aos seus itens.
Nota. Apenas para amortecedores indicadores, isto não precisará de ser feito. O subsistema executivo do terminal trata disto por si só.
Nota 2:ArrayResize() deve de preferência ser aplicado apenas quando é necessário alterar o tamanho de um array dinâmico, e não antes de qualquer acesso aos seus elementos. É bem possível que uma vez seja dimensionada uma matriz dinâmica e depois o programa simplesmente aceda aos seus elementos.