Errores, fallos, preguntas - página 2821
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 normalización no es un redondeo
Tengo un sobresaliente en teoría, en cómo trabajar con el doble y demás. El algoritmo NormalizeDouble contiene un error. El tema planteado sólo está relacionado indirectamente con la comparación de dobles.
Repito mi pregunta.
La imagen muestra el valor de la variable no normalizada n y el de la variable normalizada m y lo diferentes que son. Pero si quieres comparar tangas, es tu preferencia.
Conozco la teoría, cómo trabajar con el doble y cosas así en una escala A+. El algoritmo NormalizeDouble contiene un error. El tema planteado sólo está relacionado indirectamente con la comparación de dobles.
El algoritmo NormalizeDouble contiene un error.
sí
Creo que A100 escribió sobre ello
pero los desarrolladores desde MQL se han ceñido a esta "característica", por desgracia
Si lo corrigen, el error desaparecerá.
Creo que aparecerán otros fallos y habrá mucho ruido ))))
No lo harán, porque casi todo el mundo compara incluso los doblajes normalizados a través de la normalización. Es decir, lo ponen donde quieren.
Una normalización adecuada debería dar siempre resultado en esta condición.
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Errores, fallos, preguntas
fxsaber, 2020.08.10 11:37
Esta es la única comprobación de que la normalización es correcta. Si siempre dará la razón, nada se romperá.
NormalizeDouble es sólo un cierto algoritmo que se aplica a un número doble. Lamentablemente, hay un error en él. Si se corrige, el error desaparecerá. Todas las demás representaciones dobles no cambiarán por ello.
Creo que no se trata de la función, sino de que las constantes no están normalizadas por el compilador (aunque deberían estarlo).
Entonces las mismas constantes en DLL y MQL no coincidirán.
Entonces las mismas constantes en DLL y MQL no coincidirán.
También es cierto. Además, cualquier normalización supone una pérdida de precisión, así que puede que me esté pasando con la normalización constante.
Sólo hay que modificar el algoritmo de normalización actual.
Sólo hay que modificar el algoritmo de normalización actual.
Ni siquiera sé si se trata de un error en el algoritmo.
Sólo el redondeo no se realiza con round(), ceil(), floor() ya que también devuelven double.Realmente, no se pueden comparar los dobles. Sólo una regla dura.
O, como dice Slava, a través de épsilon o a través de la multiplicación (por ejemplo, por 1/_Punto) con conversión a int con redondeo.
O a través de estos, sobre todo porque funcionan más rápido que los normales:
Más fácil y rápido, por supuesto, a través de epsilon: