Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 532
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
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.