Características da linguagem mql5, subtilezas e técnicas - página 146
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
Foi encerrado logo a partir do primeiro posto. Quando o número mínimo é multiplicado por algo menos do que um, obtém-se zero.
como seria o código correcto?
Como será o código certo?
Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais
Características da linguagem mql5, subtilezas e truques
fxsaber, 2019.10.28 11:42
compilação: expressão não booleana
não é uma boa opção para mim
Não sou eu que o faço.
Para estetas, pode criar uma estrutura DOUBLE com operadores apropriados. Mas isto tem pouco a ver com a prática. No exemplo prático original.
ForUM sobre comércio, sistemas automatizados de comércio e testes estratégicos
Características da linguagem mql5, complexidades e técnicas
fxsaber, 2019.10.28 07:24
Maneira de ser apanhado na divisão por zero, mesmo com um cheque.O erro é, de facto, compreensível. Mas enquanto se escreve um código como este, nem sempre é óbvio que tal verificação não é suficiente para evitar a divisão por zero.
Só precisa de zerar o item da matriz que está a ser criado. É a ausência de inicialização que causa colisões neste caso. É por isso que simplesmente fiz a zeragem no meu código. Não quero incomodar-me com a visão geral.
compilação: expressão não booleana
não é uma boa opção para mim
Há algo de errado consigo.
É mais confuso porque dividir por zero dá uma excepção, pelo menos para mim.
Alguma coisa está a levar-vos a todos ao caminho errado.
fxsaber:
Aqui não há problema
2019.10.28 20:45:47.010 tst1 (EURUSD,H4) 2.224851351121351e-308 --> true
2019.10.28 20:45:47.010 tst1 (EURUSD,H4) -nan --> true
UPD:
verificar por inf
2019.10.28 22:04:00.163 tst1 (EURUSD,H4) 1. dev = inf ---> false
2019.10.28 22:04:00.163 tst1 (EURUSD,H4) 2. dev = inf ---> true
Não há aqui qualquer problema.
Pesquisado no Google "C++ dupla divisão zero", o seu código não funcionará para números não normalizados, precisa disto:
guião de meditação ))))
Tema interessante. Encontrei algo aqui. Particularmente digno de nota no bloco teórico.
abs(u - v)/abs(u) <= epsilon && abs(u - v)/abs(v) <= epsilon; // (4)
abs(u - v)/abs(u) <= epsilon || abs(u - v)/abs(v) <= epsilon; // (5)
Desta forma, todas as condições de sub e sobrefluxo podem ser guardadas em segurança. O acima referido, porém, não funcionará quando v ou u for zero. Nestes casos, a solução é recorrer a um algoritmo diferente, por exemplo(1).
A quê? Tudo o que vejo é um aviso idiota, se for absolutamente válido.
Conversões booleanas
Um prvalue dos tipos integral, ponto flutuante, enumeração não copiada, ponteiro, e ponteiro para membros pode ser convertido em um prvalue do tipo bool.
O valor zero (para enumeração integral, ponto flutuante e não copiado) e o ponteiro nulo e os valores nulos de ponteiro para membro tornam-se falsos. Todos os outros valores tornam-se verdadeiros.
Em geral, é pura ignorância escrever estes IsEqual(), IsInf() e IsZerro(). Não vou entrar na discussão.
A quê? Tudo o que vejo é um aviso idiota, se for absolutamente válido.
Em geral, é completa ignorância escrever tais IsEqual(), IsInf(), IsZerro(). Não vou entrar na discussão.
IsInf() e IsNaN() estão a funcionar,
IsEqual() e IsZerro() são questionáveis, pesquisadas no Google a partir de algumas fontes como "truque para o dobro".