Características da linguagem mql5, subtilezas e técnicas - página 159
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
Pode dizer-me, por favor, pls.
No indicador a ordem das séries, por exemplo fechar[], é definida pelo ArraySetAsSeries() uma vez ou de alguma outra forma ?
É feito em OnCalculate() ou em OnInit() ?
Encontrei uma situação confusa:
Encomendar no fim[], definido por AS_SERIES na entrada no primeiro tick, no tick seguinte muda espontaneamente para normal, ou seja !AS_SERIES.
Ainda não encontrei a razão para isto no código.
em qualquer função que obtenha scalar &arr[] não pode ter a certeza absoluta sobre a direcção da indexação da matriz:-(
Além disso, se mudar a "seriação" no interior, esta direcção permanecerá após o fim da sua função...será um efeito secundário, o que ninguém espera
é por isso que, infelizmente, quando obtiver uma matriz para entrada numa função, lembre-se da sua serialização, coloque-a a uma conveniente e devolva SEMPRE o original de volta quando sair da função
Este é um caso raro com a OnCalculate, mas na prática costumava ser chamado também a partir de outro código.
Além disso, se mudar a "serialização" internamente, esta direcção permanecerá quando a sua função terminar...
Era com isso que eu estava a contar. É por isso que coloquei oArraySetAsSeries(close,true) no blocoOnCalculate(), que é executado apenas uma vez no primeiro login. E esta "serialização" foi de facto estabelecida. No entanto, para minha surpresa, no segundo tique, e mais além, a "seriação" já era o oposto.
Com a OnCalculate é um caso raro, mas na prática também foi chamado a partir de outro código.
Não tenho tais exóticos e, além disso, não altero a "serialização" de séries temporais e matrizes tampão dentro do programa. Por conseguinte, bastar-me-ia fixá-lo uma vez, no início do indicador. Mas, se não pudermos ter a certeza de que a "seriação" destas matrizes está guardada, temos de a definir no início de cada laço OnCalculate(). Isto parece ser algo completamente antinatural.
É uma boa ideia gerar um aviso em tempo de compilação.
Se nada mudou desde os velhos tempos, NULL != "" Muitas pessoas já caíram nesta situação antes.
Se nada mudou desde os velhos tempos, NULL != "" Muitas pessoas já caíram nesta situação antes.
Não é disso que estamos a falar.
Estamos a falar de outra coisa.
Então explique porque não pode ser. Porquê
pode ser, mas
não pode ser.
Então explique porque não pode ser.
O guião acima mostra isto.
O guião acima mostra isto.
Se o fizesse, não haveria dúvidas. Pensa sempre que todos à sua volta devem ler a sua mente, ou estar melhor treinados do que você em programação.
Se o fizesse, não haveria dúvidas. Pensa sempre que todos devem ler a sua mente, ou ser mais hábeis na programação do que você.
Não compreendo as razões para esta reacção. O código terse demonstra a característica a 100%.
Não compreendo as razões para esta reacção. O código terse demonstra a característica a 100%.
Reacção normal. Não compreendo os vossos códigos, pedi uma explicação e a resposta é...
NULL é uma tal ambiguidade que é preciso lidar com ela com cuidado. Especialmente quando aplicado a variáveis de corda.
A partir da documentação
Assim, neste exemplo, NULL não significa que o comprimento da cadeia é igual a zero, mas que a variável não é inicializada.
No seu exemplo
a variável é inicializada. Não está claro para mim como é inicializado e não me apetece resolvê-lo.
Consequentemente,
Indica que a variável é inicializada. Mais uma vez, com o que é a grande questão. Porque pensa que é impossível inicializar uma variável por NULL?
Aparentemente, esta inicialização faz com que o comprimento da corda seja igual a zero, que é o que diz esta verificação