El segundo valor requiere"MqlDateTime&dt_struct// estructura para tomar valores" y no entiendo cómo usar este MqlDateTime.
Hay un tiempo. La hora tiene parámetros como: año, mes, día, horas, minutos, segundos, etc. Llamando a la función TimeToStruct(), se descompone el tiempo en estos componentes. Entonces, por ejemplo, puedes poner a cero las horas, los minutos y los segundos: obtienes el comienzo del día.
MqlDateTime es un tipo de datos, al igual que int, bool, etc. Es sólo un tipo compuesto, es decir, para acceder a sus campos (horas, minutos, segundos...) hay que utilizar un punto. Por ejemplo: dt_struct.hour - valor de la hora. Más información sobre las estructuras en https://www.mql5.com/ru/docs/basis/types/classes.
y hay un redondeo al principio del día. 86400=24*60*60
De acuerdo con su fórmula obtenemos el número de días entre la barra actual y la remota, pero estos días son condicionales, podría ser las 9 de este día y 1 hora el día anterior, entonces la diferencia en segundos es 122400 , que es 1,42 días - cuando se redondea a 1 día, y la necesidad de ser 2.
Hay tiempo. La hora tiene parámetros como: año, mes, día, horas, minutos, segundos, etc. Llamando a la función TimeToStruct(), se descompone el tiempo en estos componentes. Entonces, por ejemplo, puedes poner a cero las horas, los minutos y los segundos: obtienes el comienzo del día.
MqlDateTime es un tipo de datos, al igual que int, bool, etc. Es sólo un tipo compuesto, es decir, para acceder a sus campos (horas, minutos, segundos...) es necesario utilizar un punto. Por ejemplo: dt_struct.hour - valor de la hora. Más información sobre las estructuras en https://www.mql5.com/ru/docs/basis/types/classes.
-Aleks-: Según tu fórmula obtenemos el número de días que hay entre la barra actual y la remota, pero estos días son condicionales, es decir, pueden ser las 9 horas del día actual y 1 hora del día anterior. Entonces la diferencia en segundos será de 122400, lo que equivale a 1,42 días - al redondear a 1 día, y la necesidad de tener 2.
un día perdido, 23h+24h+9h=2 días 8h... No necesito esta fórmula si la necesito:
Necesito calcular en cada gráfico del marco temporal actual. Para el cálculo necesito saber la fecha del plazo superior (días). Arriba he adjuntado el código - el punto es saber en cada barra el precio máximo del TF superior en el momento de la apertura de la barra en el marco de tiempo actual.
Otra vez:
datetime Day00=86400*(time[n]/86400);//начало дня для time[n]
un día perdido, 23h+24h+9h=2 días 8h... No necesitas esta fórmula si la necesitas:
Otra vez:
Y tú dices estructura... :)
Por qué tienes 23 horas - escribí 1 hora, pero el punto no cambia.
24 (el día anterior - una hora de ayer)+24 (ayer - una hora de hoy)+8 (después de una hora de hoy - menos una hora)=56/24=2,33, así que hizo dos días, ¿no te parece?
Por qué tienes 23 horas - escribí 1 hora, pero la esencia no cambia
24 (anteayer - a la hora de ayer)+24 (ayer - a la hora de hoy)+8 (después de una hora de hoy - menos una hora) =56/24 = 2,33 es decir, son dos días, ¿no te parece?
Ahora imaginemos que no son las 9h de este día sino las 19
24(antes de ayer +24(ayer - 1h hoy)+18(después de 1h hoy - menos 1h)=66/24=2,75 es decir, hace tres días, ¿estás de acuerdo?
Como si el rango no ha cambiado diariamente, y el cálculo durante el día da entonces 2, luego 3 días - en este el problema.
La variante
int DayN=time[0]/86400-time[163]/86400;
Tampoco es bueno, si suponemos que la barra actual es de 1 hora y la calculada es de 23 horas, en este caso el resultado del cálculo será cero, mientras que debería ser 1.
-Aleks-: Esto tampoco funciona si suponemos que la barra actual es de 1 hora y la barra estimada es de 23 horas, en cuyo caso el resultado del cálculo es cero, mientras que debería ser 1.
Será 1, ambos tiempos se redondean primero a un día entero y luego se restan.
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.
Obtendremos los segundos que necesitamos para redondear - el redondeo es el problema.
duh
y hay un redondeo al principio del día. 86400=24*60*60No sé cómo utilizarlo.
El segundo valor requiere"MqlDateTime&dt_struct// estructura para tomar valores" y no entiendo cómo usar este MqlDateTime.
Hay un tiempo. La hora tiene parámetros como: año, mes, día, horas, minutos, segundos, etc. Llamando a la función TimeToStruct(), se descompone el tiempo en estos componentes. Entonces, por ejemplo, puedes poner a cero las horas, los minutos y los segundos: obtienes el comienzo del día.
MqlDateTime es un tipo de datos, al igual que int, bool, etc. Es sólo un tipo compuesto, es decir, para acceder a sus campos (horas, minutos, segundos...) hay que utilizar un punto. Por ejemplo: dt_struct.hour - valor de la hora. Más información sobre las estructuras en https://www.mql5.com/ru/docs/basis/types/classes.
así
y hay un redondeo al principio del día. 86400=24*60*60Hay tiempo. La hora tiene parámetros como: año, mes, día, horas, minutos, segundos, etc. Llamando a la función TimeToStruct(), se descompone el tiempo en estos componentes. Entonces, por ejemplo, puedes poner a cero las horas, los minutos y los segundos: obtienes el comienzo del día.
MqlDateTime es un tipo de datos, al igual que int, bool, etc. Es sólo un tipo compuesto, es decir, para acceder a sus campos (horas, minutos, segundos...) es necesario utilizar un punto. Por ejemplo: dt_struct.hour - valor de la hora. Más información sobre las estructuras en https://www.mql5.com/ru/docs/basis/types/classes.
Según tu fórmula obtenemos el número de días que hay entre la barra actual y la remota, pero estos días son condicionales, es decir, pueden ser las 9 horas del día actual y 1 hora del día anterior. Entonces la diferencia en segundos será de 122400, lo que equivale a 1,42 días - al redondear a 1 día, y la necesidad de tener 2.
un día perdido, 23h+24h+9h=2 días 8h... No necesito esta fórmula si la necesito:
Necesito calcular en cada gráfico del marco temporal actual. Para el cálculo necesito saber la fecha del plazo superior (días). Arriba he adjuntado el código - el punto es saber en cada barra el precio máximo del TF superior en el momento de la apertura de la barra en el marco de tiempo actual.
Y tú dices estructura... :)
un día perdido, 23h+24h+9h=2 días 8h... No necesitas esta fórmula si la necesitas:
Otra vez:Y tú dices estructura... :)
Por qué tienes 23 horas - escribí 1 hora, pero el punto no cambia.
24 (el día anterior - una hora de ayer)+24 (ayer - una hora de hoy)+8 (después de una hora de hoy - menos una hora)=56/24=2,33, así que hizo dos días, ¿no te parece?
Por qué tienes 23 horas - escribí 1 hora, pero la esencia no cambia
24 (anteayer - a la hora de ayer)+24 (ayer - a la hora de hoy)+8 (después de una hora de hoy - menos una hora) =56/24 = 2,33 es decir, son dos días, ¿no te parece?
23h antes de ayer +
24h ayer +
9h hoy=
2 días 8h=2,(33)días
Esa es la forma correcta de hacerlo:
No importa, no es necesario)23h antes de ayer+
24h ayer+
9h hoy=
2 días 8h=2,(33)días
La forma correcta es algo así:
No importa, no es necesario)Ahora imaginemos que no son las 9h de este día sino las 19
24(antes de ayer +24(ayer - 1h hoy)+18(después de 1h hoy - menos 1h)=66/24=2,75 es decir, hace tres días, ¿estás de acuerdo?
Como si el rango no ha cambiado diariamente, y el cálculo durante el día da entonces 2, luego 3 días - en este el problema.
La variante
int DayN=time[0]/86400-time[163]/86400;
Esto tampoco funciona si suponemos que la barra actual es de 1 hora y la barra estimada es de 23 horas, en cuyo caso el resultado del cálculo es cero, mientras que debería ser 1.
Será 1, ambos tiempos se redondean primero a un día entero y luego se restan.