При программировании на языке MQL4 у новичков порой возникают ситуации, когда результаты некоторых математических вычислений отличаются от ожидаемых. При этом программа компилируется и работает, но не так, как нужно. Они начинают разбираться в программе, находят новые "ошибки" в языке, реализации функций и т.п. В большинстве случаев последующий...
Aliaksandr Hryshyn: 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:-)
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.
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.
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
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.