Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 767
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
No me di cuenta de la respuesta de inmediato. Bueno, para ser sincero, no he entendido muy bien lo que quieres decir con que no hay confusión al respecto.
¿A qué te refieres con "no importa el tiempo queStringToTime() cuente los segundos transcurridos"?
La función esencialmente toma una fecha de izquierda en conjunto (creo que la fecha del PC local es de izquierda) y compara la hora actual del servidor del corredor con ella, ¿por qué no importaría?
De la captura de pantalla anterior, el comentario dice que la hora de su PC local está 1 hora por delante de la hora del corredor, es decir, el cambio GMT es mayor. Si fueran X horas menos, sería crítico, como en el caso que escribí el viernes.
En cuanto al final del tiempo de negociación. Supongo que para la funciónStringToTime() no deberíaimportar cuando el broker termina el día o la semana de negociación...
No tengo otra explicación.
Si son las 11:40 en Moscú, entonces han pasado XXX segundos desde el 01.01.1970 hasta la hora actual.
Cuando sean las 11:40 en Londres, por ejemplo, el número de segundos será el mismo que en Moscú ahora... Esto se debe a que el 01.01.1970 en Londres era como mucho más tarde que la hora actual. No es el tiempo especificado, sino sólo el número de segundos.
Intenta escribir tú mismo una fórmula para calcular el número de segundos desde el 01.01.1970 00:00:00.
Para un periodo corto de tiempo puedes utilizar esta fórmula. Desde el comienzo del mes actual pasó 6*24*60*60 + 11*60*60 + 59*60 + el valor actual de los segundos en el reloj que está mirando.
Por supuesto, la comparación se basa en el número de segundos que han transcurrido desde el año 70, pero este número de segundos lo tiene todo en cuenta: la fecha y la hora.
Me limitaré a poner un ejemplo, que es esencialmente una simplificación de un problema que me encontré recientemente.
Al principio tenía una solución de este tipo:
Y ahora el truco: la impresión especificada en el código aparecerá el viernes, pero no después de las 21:30, sino a las 00:00 del primer tick.
Porque cuando el servidor de mi broker se puso el viernes, en mi PC local todavía era el jueves, el timeshift es diferente.
En el probador, todo está bien y la impresión saldrá como debe ser el viernes después de las 21:30. ¿No es eso confuso?
Por supuesto, la comparación se basa en el número de segundos que han transcurrido desde el año 70, pero este número de segundos lo tiene todo en cuenta: la fecha y la hora.
Por poner un ejemplo, básicamente una simplificación de un problema que me encontré hace poco.
Al principio tenía una solución de este tipo:
Y ahora el truco: la impresión especificada en el código aparecerá el viernes, pero no después de las 21:30, sino a las 00:00 del primer tick.
Porque cuando el servidor de mi broker se puso el viernes, en mi PC local todavía era el jueves, el timeshift es diferente.
En el probador, todo está bien y la impresión saldrá como debe ser el viernes después de las 21:30. ¿No es eso confuso?
Por supuesto que es confuso. Es sólo una confusión en tu cabeza. TimeToString("21:30") dará la fecha actual desde las 21:30:00 hasta las 21:29:59 del día siguiente. Corregiré los comentarios en su código.
Y este código funcionará correctamente
Hay dos terminales MT4 en el mismo portátil: uno con 4 decimales y otro con 5 decimales. En el mismo tiempo el tráfico en el primero es de 105/0 kb, en el segundo de 3450/0 kb. El primero consume un 6% de la CPU y el segundo un 39%. ¿Cuál es el problema? ¿Es esto una norma?
AlexeyVik
He cambiado la fecha de mi ordenador a 2000.
ejecutó este script:
y conseguí esto:
por lo tanto StringToTime() toma la fecha del ordenador local
AlexeyVik
He cambiado la fecha de mi ordenador a 2000.
ejecutó este script:
y conseguí esto:
Así que StringToTime() toma la fecha del ordenador local
¿Y qué? Que lo tome de la luna, siempre y cuando establezca "desde y hasta" el tiempo transcurrido XXX segundos y este número entero lo comparamos con el número de segundos transcurridos desde el 01.01.1970 del tiempo necesario.
Será mejor que compruebes esta línea
donde tenías el problema. Hoy es viernes.
Será mejor que compruebes esa línea
donde tenías el problema. Hoy es viernes.
Lo he comprobado, si el ordenador local tiene una fecha inferior a la del broker, entonces las impresoras están ahí,
pero si el ordenador local tiene una fecha superior a la del agente, no hay impresoras.
es decir, la hora ha pasado, es decir, "11:30".
en el primer caso TimeCurrent() se compara con 2014.11.06 11:30, y en el segundo casocon 2014.11.0811:30
PS corrigió el resaltado
La primera línea es clara, el comentario de la segunda línea no lo es.
¿Por qué el viernes está lejos cuando ya ha llegado? Al fin y al cabo, la segunda línea sólo se ejecuta si es viernes.
Lo he comprobado, si el ordenador local tiene una fecha inferior a la del broker, entonces las impresoras están ahí,
y si la fecha del ordenador local es superior a la del corredor, entonces no hay impresoras.
es decir, la hora ha pasado, es decir, "11:30".
en el primer caso TimeCurrent() se compara con 2014.11.06 11:30, y en el segundo casocon 2014.11.0811:30
PS corrigió el resaltado
Pues aquí tengo la hora local mayor que la del servidor en 1 hora.
Este guión
Da salida a los siguientes valores.
Primero el número de segundos transcurridos desde el 01.01.1970 hasta la hora especificada, y luego la hora en la forma a la que estamos acostumbrados.
Partiendo de esta base, explique qué es lo que le confunde de estos valores.
Sí. En mi segundo comentario estaba pensando en otra cosa.
да.
Hola.
Hay una tarea como esta. (no se puede adjuntar a una garrapata)
Si se activa una orden pendiente {entonces...}.
En mi EA, utilizo Terminal.mqh para calcular las órdenes.
Terminal // Mas_Tip[0] abierto Comprar
// si el número de órdenes de compraha aumentado en 1
si (Mas_Tip[0]+1)
{
función
}
Todo funciona. Pero se dispara en cada siguiente tic.
¿Cómo se puede fijar este caso a una garrapata? Y luego comparar el valor en el tick anterior y en el tick dado.