Características del lenguaje mql5, sutilezas y técnicas - página 146
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
Estaba cerrado desde el primer puesto. Cuando el número mínimo se multiplica por algo menos que uno, se obtiene el cero.
¿cómo sería el código correcto?
¿Cómo será el código correcto?
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Características del lenguaje mql5, sutilezas y trucos
fxsaber, 2019.10.28 11:42
compilación: expresión no booleana
no es una buena opción para mí
Yo no lo hago.
Para los estetas, se puede crear una estructura DOBLE con los operadores adecuados. Pero esto tiene poco que ver con la práctica. En el ejemplo práctico original.
ForUM sobre el comercio, los sistemas de comercio automatizados y la comprobación de estrategias
Características del lenguaje mql5, complejidades y técnicas
fxsaber, 2019.10.28 07:24
Que manera de quedar atrapado en la división por cero, incluso con un cheque.De hecho, el error es comprensible. Pero al escribir un código como éste, no siempre es obvio que esa comprobación no es suficiente para evitar la división por cero.
Sólo hay que poner a cero el elemento del array que se está creando. La ausencia de inicialización es lo que provoca las colisiones en este caso. Por eso simplemente hice la puesta a cero en mi código. No quiero molestar con la visión general.
compilación: expresión no booleana
no es una buena opción para mí
Hay algo malo en ti.
Es más confuso por qué dividir por cero da una excepción de fpu, al menos para mí.
Algo te está llevando por el camino equivocado.
fxsaber:
No hay problema.
2019.10.28 20:45:47.010 tst1 (EURUSD,H4) 2.224851351121351e-308 --> true
2019.10.28 20:45:47.010 tst1 (EURUSD,H4) -nan --> true
UPD:
comprobar si hay inf
2019.10.28 22:04:00.163 tst1 (EURUSD,H4) 1. dev = inf ---> false
2019.10.28 22:04:00.163 tst1 (EURUSD,H4) 2. dev = inf ---> true
No hay ningún problema.
Busqué en Google "C++ double zero divide", tu código no funcionará para números no normalizados, necesitas esto:
guión de meditación ))))
Un tema interesante. Encontré algo aquí. Cabe destacar el bloque de teoría.
abs(u - v)/abs(u) <= epsilon && abs(u - v)/abs(v) <= epsilon; // (4)
abs(u - v)/abs(u) <= epsilon || abs(u - v)/abs(v) <= epsilon; // (5)
De este modo, todas las condiciones de desbordamiento y subdesbordamiento pueden protegerse de forma segura. Sin embargo, lo anterior no funcionará cuando v o u sea cero. En estos casos, la solución es recurrir a un algoritmo diferente, por ejemplo(1).
¿A qué? Todo lo que veo es una advertencia idiota, si es perfectamente válida.
Conversiones booleanas
Un prvalue de tipo integral, de punto flotante, de enumeración sin cobertura, de puntero y de puntero a miembro puede convertirse en un prvalue de tipo bool.
El valor cero (para la integral, el punto flotante y la enumeración sin escalas) y el puntero nulo y los valores del puntero nulo a miembro se convierten en falsos. Todos los demás valores se convierten en verdaderos.
En general, es pura ignorancia escribir estos IsEqual(), IsInf() e IsZerro(). No voy a entrar en la discusión.
¿A qué? Todo lo que veo es una advertencia idiota, si es absolutamente válida.
En general, es una completa ignorancia escribir tales IsEqual(), IsInf(), IsZerro(). No voy a entrar en la discusión.
IsInf() y IsNaN() funcionan,
IsEqual() e IsZerro() son cuestionables, buscados en Google como "truco para el doble".