Características del lenguaje mql4, sutilezas y técnicas - página 29
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 hora es la misma en la ventana dedatos?
Sí.
Sí.
Ya veo. Así que realmente es la hora del bar. Sólo tenía una sospecha sobre el parámetro"Línea de tiempo precisa".
Hola!
¿Cuál es la forma correcta de utilizar "double" en el bucle "for"? Parece que no hay ninguna prohibición de utilizar "doble" en la ayuda. Entiendo que tengo que normalizar la "i", pero no me funciona.
Si "expr2=2.6" sigue bien para 9 iteraciones, pero cuando "expr2=2.8" ya muestra 9 iteraciones mal (el valor correcto es 10).
Hola!
¿Cuál es la forma correcta de utilizar "double" en el bucle "for"? Parece que no hay ninguna prohibición de utilizar "doble" en la ayuda. Entiendo que tengo que normalizar la "i", pero no me funciona.
Si "expr2=2,6" sigue estando bien para 9 iteraciones, pero cuando "expr2=2,8" ya muestra 9 iteraciones incorrectas (el valor correcto es 10).
Probablemente tenga que normalizar los valores.
Probablemente haya que normalizar los valores.
Si te refieres a esto, tampoco ha servido de nada:
Si te refieres a esto, tampoco ha servido de nada:
No. Como mínimo hay que optimizarlo
porque eso es lo que te da el valor equivocado. Y puede que los demás no tengan que hacerlo.
Hola!
¿Cuál es la forma correcta de utilizar "double" en el bucle "for"? Parece que no hay ninguna prohibición de utilizar "doble" en la ayuda. Entiendo que tengo que normalizar la "i", pero no me funciona.
Si "expr2=2,6", entonces todo es normal 9 iteraciones, pero cuando "expr2=2,8" muestra no correcto 9 iteraciones (correctamente 10).
Aquí puedes encontrar, leyendo el post de Nikolay, una descripción muy detallada y muy cualitativa del doblehttps://www.mql5.com/ru/forum/1111/page2623#comment_14473837
Si no puede asimilar el material de la primera vez, intente sustituir Print() por printf() en su código con salida de doble al menos a la 15ª cifrahttps://www.mql5.com/ru/forum/1111/page2623#comment_14474138.
Tal vez entonces vea por qué esto es así
No. Al menos deberíamos optimizar esto
porque eso es lo que te da el valor equivocado. Y puede que los demás no tengan que hacerlo.
Gracias, pero tu ejemplo tampoco nos ha dado el resultado correcto. En printf puedes ver que no se produce ninguna normalización:
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 1.0000000000000000000000000000000000000000000000000000000000
0 10:29:31.595 Test_Double_Para EURCHF,H4: i = 1.1999999999999995591079014993738305473327636718750000
0 10:29:31.595 Test_Double_Para EURCHF,H4: i = 1.399999999999991111182158029987476766109466552734375000000000
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 1.59999999999999999866773237044981212151491164199829101562500000000
0 10:29:31595 Test_Double_Para EURCHF,H4: i = 1.7999999999999999982236431605997495353221893310546875000000
0 10:29:31.595 Test_Double_Para EURCHF,H4: i = 1.999999999997779553950749686919152736638618359375000000
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 2.1999999999999997335464740899624302983283996582031250000000
0 10:29:31.595 Test_Double_For EURCHF,H4: i = 2.39999999999999991191821580299876766109466552734375000000000
0 10:29:31595 Test_Double_For EURCHF,H4: i = 2.6000000000088817841970012523233890533447265625000000000
0 10:29:31595 Test_Double_For EURCHF,H4: MaxPass: 10 count: 9
0 10:29:31.595 Test_Double_For EURCHF,H4: Last i = 2.800000000002664535259100375697016716003417968750000000
aquí puedes encontrar, leer el post de Nikolay, él describió el trabajo con el doble de una manera muy detallada y muy cualitativahttps://www.mql5.com/ru/forum/1111/page2623#comment_14473837
Si no puede digerir el material de la primera vez, intente sustituir Print() por printf() con salida de doble al menos a 15º dígitohttps://www.mql5.com/ru/forum/1111/page2623#comment_14474138.
Tal vez entonces vea por qué esto es así.
Gracias, entiendo por qué ocurre, por eso intenté normalizarlo. A mí no me ha funcionado. La opción de Alexey Viktorov tampoco lo arregló, los valores siguen sin normalizarse. Así que la pregunta sigue siendo, ¿se puede usar "doble" en un bucle y obtener siempre el número correcto de iteraciones?
Así que la pregunta sigue siendo, "doble" se puede utilizar en el bucle
puede
y obtener siempre el número correcto de iteraciones?
el valor de double es siempre correcto, pero no se corresponde con el sistema decimal posicional que se quiere ver u obtener
Gracias, entiendo por qué sucede esto, por eso intenté normalizar. A mí no me ha funcionado. La opción de Alexey Viktorov tampoco lo arregló, los valores siguen sin normalizarse
Cualquier manipulación con la doble conversión siempre tendrá limitaciones, dudo que este problema se pueda resolver de la manera como en tus ejemplos
Hacer una solución fiable: en el bucle utilizar int y la fórmula para calcular el valor resultante de doble y no utilizar la adición de doble como resultado durante las iteraciones en el bucle - una vez más mirar mi ejemplo en el diálogo con Nikolaev