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
A flutuação é a castração de números e não oferece nenhuma vantagem. Lidar melhor com todas as perdas nas conversões e usar a maior precisão possível - o dobro.
Obrigado. Vou tentar descobrir onde estava meu erro. Enquanto isso, o carro alegórico está funcionando. Eu não estou acostumado a desistir. Mas este erro me fez passar por um loop.
Pessoalmente, nunca uso nos cálculos e comparações de números o método que compara a diferença com algum valor mínimo aceito, sempre trabalho com a máxima precisão possível até o 16º sinal, e somente na última operação faço a normalização. Se você manejar o dobro corretamente, não há problema, o que aconselho a fazer, caso contrário você encontrará problemas de distorção dos resultados associados a uma perda de precisão em uma das etapas dos cálculos / conversões.
Depende de você, mas note que TODAS as funções matemáticas padrão funcionam com números duplos e dão resultados duplos. A aplicação destas funções aos números flutuantes ainda é uma conversão interna para o dobro, portanto, em qualquer caso, você perderá precisão e validade nos resultados obtidos.
Pessoalmente, nunca uso nos cálculos e comparações de números o método que compara a diferença com algum valor mínimo aceito, sempre trabalho com a máxima precisão possível até o 16º sinal, e somente na última operação faço a normalização. Se você trabalhar com o dobro corretamente, não haverá problemas, o que aconselho a fazer, caso contrário você encontrará problemas de distorção dos resultados associados a uma perda de precisão em uma das etapas dos cálculos / conversões.
o preço de classificação em 2017 é sem dúvida correto
o preço de classificação em 2017 é sem dúvida correto
é assim que deve ser
double AUTOPRICE=MathFloor( NormalizeDouble(Averab,2) )*_Point;
deveria ser assim.
double AUTOPRICE=MathFloor( NormalizeDouble(Averab,2) )*_Point;
Você mudou seu código várias vezes.
Eu fiz a mesma coisa. Eu experimentei, eu entendi o que são o dobro e a int, mas quando eu o calculei explicitamente, eu percebi a coisa errada.
A primeira linha é o que você sugeriu.
2017.02.26 18:24:59.133 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: DOUBLE askP2=105146 bidP2=105141 Averab2=105143.5000000000 AUTOPRICE=1.0514300000
2017.02.26 18:24:59.133 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: FLOAT askP=105146 bidP=105141 Averab=105143.5000000000 AUTOPRICE=1.0514299870
então é isso mesmo105143.5000000000 arredondado para baixo 43 é...
(46-41)/2 = 2,5, arredondado para baixo = 2
então está certo105143.5000000000 arredondado para 43...
(46-41)/2 = 2,5, arredondado para baixo = 2
isso mesmo,
mas com spreads diferentes (2,3,4,5,6,7) o arredondamento para baixo é diferente e às vezes não é muito preciso.