Características da linguagem mql4, sutilezas e técnicas - página 29
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
O tempo é o mesmo na janela dedados?
Sim.
Sim.
Estou vendo. Então é realmente a hora do bar. Acabei de ter uma suspeita sobre o parâmetro"Linha do tempo precisa".
Olá!
Qual é a maneira correta de usar o "duplo" no loop "para"? Não parece haver nenhuma proibição de usar "duplo" na ajuda. Entendo que tenho que normalizar o "i", mas isso não funciona para mim.
Se "expr2=2,6" ainda estiver ok para 9 iterações, mas quando "expr2=2,8" já estiver mostrando 9 iterações incorretas (o valor correto é 10).
Olá!
Qual é a maneira correta de usar o "duplo" no loop "para"? Não parece haver nenhuma proibição de usar "duplo" na ajuda. Entendo que tenho que normalizar o "i", mas isso não funciona para mim.
Se "expr2=2,6" ainda estiver bem para 9 iterações, mas quando "expr2=2,8" já estiver mostrando 9 iterações incorretas (o valor correto é 10).
Provavelmente preciso normalizar os valores.
Provavelmente, será necessário normalizar os valores.
Se você quis dizer desta forma, também não ajudou:
Se você quis dizer desta forma, também não ajudou:
Não. No mínimo, você tem que otimizá-lo
porque isso é o que lhe dá o valor errado. E os outros podem não ter que fazê-lo.
Olá!
Qual é a maneira correta de usar o "duplo" no loop "para"? Não parece haver nenhuma proibição de usar "duplo" na ajuda. Entendo que tenho que normalizar o "i", mas isso não funciona para mim.
Se "expr2=2,6", então ainda assim 9 iterações, mas quando "expr2=2,8" mostra não corrigir 9 iterações (corretamente 10).
Aqui você pode encontrar, leia o post de Nikolay, descrição muito detalhada e muito qualitativa do duplohttps://www.mql5.com/ru/forum/1111/page2623#comment_14473837
Se você não conseguir assimilar o material desde a primeira vez, tente substituir Print() por printf() em seu código com saída de pelo menos o dobro a 15º dígitohttps://www.mql5.com/ru/forum/1111/page2623#comment_14474138.
Talvez então você veja porque isto é assim
Não. No mínimo, você tem que otimizar isto
porque isso é o que lhe dá o valor errado. E os outros podem não ter que fazê-lo.
Obrigado, mas seu exemplo também não nos deu o resultado certo. No printf você pode ver que nenhuma normalização acontece:
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 1.0000000000000000000000000000000000000000000000000000000000
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 1.1999999999999999999999555910790149937383830305473327636636718750000
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 1.399999999999991111182158029987476766109466552734375000000000
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 1.599999999999999999999866773237044981212121514911641998291015625000000000000
0 10:29:31595 Test_Double_For EURCHF,H4: i = 1.79999999999999999999982236431605997495353221893310546875000000
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 1.999999999999999777779553950749686919151527366386186359375000000
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 2.1999999999999997335464740899624302983283996582031250000000
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 2.399999999999999999999999119182158029987476766766109466552734375000000000
0 10:29:31595 Test_Double_For EURCHF,H4: i = 2.6000000000000088817841970012523233890533447265625000000000
0 10:29:31595 Test_Double_For EURCHF,H4: MaxPass: 10 count: 9
0 10:29:31.595 Test_Double_For EURCHF,H4: Last i = 2.8000000000000002664535259100375697016716003417968750000000
aqui está, leia o post de Nikolay, ele descreveu o trabalho com o dobro de detalhes e com grande qualidadehttps://www.mql5.com/ru/forum/1111/page2623#comment_14473837
Se você não puder digerir o material desde a primeira vez, tente substituir Print() por printtf() com saída de pelo menos o dobro do 15º dígitohttps://www.mql5.com/ru/forum/1111/page2623#comment_14474138.
Talvez então você veja porque isto é assim.
Obrigado, eu entendo porque isso acontece, é por isso que tentei normalizá-lo. Não funcionou para mim. A opção de Alexey Viktorov também não a corrigiu, os valores permanecem não normalizados. Então a pergunta permanece, pode "dobrar" ser usado em loop e sempre obter o número correto de iterações?
Portanto, a questão permanece, "duplo" pode ser usado no loop
pode
e obter sempre o número correto de iterações?
o valor do dobro é sempre correto, mas não corresponde ao sistema decimal posicional que você gostaria de ver ou obter
Obrigado, eu entendo porque isto acontece, é por isso que tentei normalizar. Não funcionou para mim. A opção de Alexey Viktorov também não a corrigiu, os valores permanecem não-normalizados
Qualquer manipulação com a dupla conversão sempre terá limitações, duvido que este problema possa ser resolvido da maneira como em seus exemplos
Faça uma solução confiável: no loop use int e fórmula para calcular o valor do resultado do dobro e não use a adição do dobro como resultado durante as iterações no loop - mais uma vez veja o meu exemplo no diálogo com Nikolaev