![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
La flotación es la castración de los números y no ofrece ninguna ventaja. Es mejor hacer frente a todas las pérdidas en las conversiones y utilizar la mayor precisión posible: el doble.
Gracias. Intentaré averiguar dónde estuvo mi error. Mientras tanto, el flotador funciona. No estoy acostumbrado a renunciar. Pero este error me desconcertó.
Personalmente, nunca uso en los cálculos y comparaciones de números el método que compara la diferencia con algún valor mínimo aceptado, siempre trabajo con la máxima precisión posible hasta el 16º signo, y sólo en la última operación hago la normalización. Si manejas correctamente el doble no hay problema, lo cual te aconsejo que hagas, de lo contrario te encontrarás con problemas de distorsión de los resultados asociados a una pérdida de precisión en uno de los pasos de los cálculos/conversiones.
Depende de ti, pero ten en cuenta que TODAS las funciones matemáticas estándar funcionan con números dobles y dan resultados dobles. La aplicación de estas funciones a números flotantes sigue siendo una conversión interna a doble, por lo que, en cualquier caso, se perderá precisión y validez en los resultados obtenidos.
Personalmente, nunca uso en los cálculos y comparaciones de números el método que compara la diferencia con algún valor mínimo aceptado, siempre trabajo con la máxima precisión posible hasta el 16º signo, y sólo en la última operación hago la normalización. Si trabajas con el doble correctamente no hay problemas, cosa que te aconsejo, de lo contrario te encontrarás con problemas de distorsión de los resultados asociados a una pérdida de precisión en uno de los pasos de los cálculos/conversiones.
el precio de la calificación en 2017 es descaradamente correcto
el precio de la calificación en 2017 es descaradamente correcto
así es como debe ser
double AUTOPRICE=MathFloor( NormalizeDouble(Averab,2) )*_Point;
debería ser así.
double AUTOPRICE=MathFloor( NormalizeDouble(Averab,2) )*_Point;
Has cambiado tu código varias veces.
Yo hice lo mismo, experimenté, entendí lo que son double e int, pero cuando calculé explícitamente no eran lo que necesitaba.
La primera línea es la que has sugerido.
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
así que es correcto105143.5000000000 redondeado a 43...
(46-41)/2 = 2,5, redondeado hacia abajo = 2
así que es correcto105143.5000000000 redondeado a 43...
(46-41)/2 = 2,5, redondeado hacia abajo = 2
así es,
pero con diferentes diferenciales (2,3,4,5,6,7) el redondeo hacia abajo es diferente y a veces no es del todo preciso.