Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 535
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
Hay que especificar eso de inmediato :) .
La situación es la siguiente: si hay una barra en el gráfico, corresponde a una celda en el buffer del indicador. Mientras no escribas algo en esta celda, almacenará basura.
Cuando se dividen enteros (int, long, datetime, etc.) el resultado es un entero, es decir, se descarta el resto. 00:00 de hoy y 23:59:59 de ayer, la diferencia será de 1 día.
En primer lugar, no lo es: se ha demostrado experimentalmente en el indicador.
En segundo lugar, cómo se obtiene un 1 - demuéstramelo matemáticamente, dado que originalmente estamos calculando en segundos.
Exactamente igual que la puesta a cero de los tipos simples. Asignándoles un valor de 0. Una vez que se ha asignado a los campos requeridos un valor de 0 - utilice la operación inversa StructToTime().
En cero:
MqlDateTime str1;
datetime Open_timePos=iTime(_Symbol,0,pos);
TimeToStruct(Open_timePos,str1);
str1.hour=0;
str1.min=0;
str1.sec=0;
datetime start_time=StructToTime(str1);
Print("день=",TimeToStr(start_time));
Aleksey Lebedev:
При делении целых чисел(int,long,datetime и т.п.) результат целое число, т.е. остаток отбрасывается. 00:00 сегодня и 23:59:59 вчера, разность будет равна 1дню.
-Aleks-:
En primer lugar no está - demostrado experimentalmente en el indicador.
No discutas lo básico).
-Aleks-:
En segundo lugar cómo se obtiene el 1 - muéstrame matemáticamente, dado que inicialmente tenemos el cálculo en segundos.
Utilice la conversión a través de la estructura, si es más fácil de entender.
No desafíes lo básico)
Utilice la conversión de estructuras si es más fácil de entender.
Lo que se entiende es lo que se ha tratado. No he probado tu código para ejecutarlo, pero creo que lo has hecho tú mismo, así que explícame sin ser inteligente cómo funciona:
86401/86400-86400/86400 es igual a 1, si por las reglas de las matemáticas 1,000012-1=0,000012 , mientras que int debería redondear a un número entero, es decir, 0.
Lo que se entiende es lo que se ha tratado. No he probado a ejecutar tu código, pero creo que lo has hecho tú mismo, así que explícame sin complejos cómo funciona:
86401/86400/86400 es igual a 1, si según las reglas de las matemáticas 1,000012-1=0,000012 , e int debe redondear a entero, es decir, 0.
pero hazlo)
El inicio del día 00:00:00 se divide entre 86400 sin resto, el anterior es al menos 1 segundo menos. Redondeo: se descarta el resto de la división, no la expresión completa.
86400/86400=1
86399/86400=0
y luego ejecutarlo)
El inicio del día 00:00:00 se divide por 86400 sin un resto, siendo el anterior al menos 1 segundo menos. Redondeo: se descarta el resto de la división, no la expresión completa.
86400/86400=1
86399/86400=0
¡Chicos! ¿Es posible mostrar el indicador en el gráfico de forma programada? ¿O sólo a mano?