Obtener el número de decimales de cualquier número (no sólo las comillas) evitando Digits() en MQL4 y MQL5 - página 12
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
Esta es probablemente la mejor solución
no es correcto comparar dobles en igualdad, además, la tarea es ser exacto al signo
Mira el archivo stdlib.mq4 en MT4, había un ejemplo de comparación doble correcta
CompararDos()
SZZ: aquí hay un artículo sobre el temahttps://www.mql5.com/ru/articles/1561
Me pregunto cómo contarás logaritmos, potencias con números no enteros, usarás la trigonometría, .... utilizar bibliotecas de terceros, indicadores... Todos tienen errores.
Si necesita una precisión supermega, puede utilizar bibliotecas externas especiales como gnu mp
De lo contrario, si necesita una precisión garantizada (cuando en cada operación se calcula el error), puede utilizar todo tipo de "librerías de intervalo".
si incluso eso no es suficiente - puede utilizar polinomios en lugar de dígitos
pero nunca he visto esos casos, cuando esos circuitos se utilizan realmente en MT:-)
hay un doble para el ojo :-)
no es correcto comparar dobles en igualdad, además, la tarea es ser exacto a un signo
Mira el archivo stdlib.mq4 en MT4, había un ejemplo de comparación doble correcta
CompararDos()
Pues bien, el tiempo de ejecución con CompareDoubles se multiplica por 2. Entonces es mejor así:
Bueno, bueno, y el tiempo de ejecución con CompareDoubles se multiplica por dos. Será mejor que lo hagas así:
Estamos hablando de un cálculo correcto, no puedo comprobar tu código ahora, pero no es difícil, tienes que comparar tu ejemplo con un ejemplo usando DoubleToStr() en el bucle, si no hay diferencia, entonces todo es correcto
ZS: He intentado con fmod() creo que he publicado un ejemplo, no funciona correctamente, como en 0,07 debe comprobar - inmediatamente un error apareció
Estamos hablando de un cálculo correcto, no puedo comprobar tu código ahora, pero no es difícil, tienes que comparar tu ejemplo con el que utiliza DoubleToStr() en el bucle, si no hay diferencia, entonces todo es correcto
Ya lo he comprobado y calculado la velocidad y es la mejor manera. A menos que necesite buscar más de 7 caracteres, por supuesto.
S.s. 0,7 y 0,07 y 500000000,0001, etc. todo calculado correctamente.
s.s. Pero para 500000000.9991, se maneja peor. Pero eso apenas importa en la práctica del mercado de divisas.
Pero en la práctica del mercado de divisas esto apenas tiene importancia.
depende del problema. si se trata de órdenes comerciales, entonces este problema no tiene sentido - los precios se normalizan a Dígitos, mientras que los lotes son relativos al lote mínimo
Si el problema es de modelización matemática, puede ser útil.
depende del problema, si es para órdenes de comercio, entonces esta tarea no tiene sentido en absoluto - los precios están normalizados a Dígitos, y los lotes son relativos al lote mínimo
Si la tarea es de modelización matemática, puede ser útil.
Por supuesto, no para escribir redes neuronales =)) y decir, es conveniente almacenar los precios/lotes/dinero como un entero de 4 bytes con valor decimal, reduciendo el tamaño de los datos en 2 veces.
no es correcto comparar dobles en igualdad, además, la tarea es ser exacto a un signo
Mira el archivo stdlib.mq4 en MT4, había un ejemplo de comparación doble correcta
CompararDos()
SZZ: aquí había un artículo sobre el temahttps://www.mql5.com/ru/articles/1561
Así que la tarea consiste en determinar por cuántos dígitos se normaliza x. Así que está bien. A no ser que fueras demasiado vago para escribir tal escalera.
A no ser que fueras demasiado vago para escribir tal escalera.
Se puede hacer sin escalera, pero se tarda un 10% más.
Se puede hacer sin escalera, pero se tarda un 10% más.
Este: f/=0,0000001; es cuestionable.