Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 667

 
Leo59:
Por desgracia, no funciona.

init();
if(IsTradeAllowed()) Print("El comercio está permitido");
if(!IsTradeAllowed()) Print("El comercio NO está permitido");


Dice: "Comercio autorizado"

Tiene que haber otra manera. ¿Cómo?

Pruébalo así:

starttime=(int)TimeCurrent()+sec; // например +5 секунд. Эту строку в OnInit

if(TimeCurrent()>starttime) {
...
}

Creo que el principio es claro, y mientras no haya un tick,TimeCurrent no cambiará

 
Vitaly Muzichenko:

Inténtalo de esta manera:

starttime=(int)TimeCurrent()+sec; // например +5 секунд

if(TimeCurrent()>starttime) {
...
}

Creo que el principio es claro, y mientras no haya un tick,TimeCurrent no cambiará

Sí, para el Forex es bueno, porque las garrapatas vienen a menudo. ¿Y si no es para Forex?
 
Leo59:
Sí, para el forex es bueno porque las garrapatas vienen a menudo. ¿Y si no es para Forex?
La cuestión es que durante la inicialización la variable "starttime" será unos segundos más larga que la hora del servidor. Así,cuando los ticks llegan a la apertura del mercado, entoncesTimeCurrentsiempre será más questarttime, y los ticks no importan - la condición se cumple y se cumplirá hasta la próxima reinicialización, por ejemplo, al cambiar de timeframes, o al recargar el terminal.
 
Vitaly Muzichenko:
La cuestión es que durante la inicialización la hora de la variable "starttime" será unos segundos más larga que la hora del servidor.
Necesito procesar la información ahora, antes de que llegue el primer tick, para que cuando llegue el nuevo (primer) tick, todo esté listo para funcionar.
 
Leo59:
No lo es. Compruébalo ahora, si no te importa). Pero, esa no es la cuestión. Necesito procesar la información ahora, antes de que llegue la primera garrapata, para que cuando llegue la nueva (primera) garrapata, todo esté listo.
No necesito procesar nada hasta que no haya una garrapata. Necesitas otra solución, y el enlace que te di debe ser
 
Vitaly Muzichenko:
No necesito procesar nada mientras no haya garrapatas. Necesitas otra solución, y por el enlace que has dado debería ser
Tienes razón, "starttime=(int)TimeCurrent()+sec; // por ejemplo, +5 segundos", por supuesto, es mayor que TimeCurrent(). Me he pasado, parece que tengo el cerebro completamente fundido ))
En el enlace que he puesto pone sólo TimeLocal() pero quería evitarlo.
 
Leo59:
Tienes razón, "starttime=(int)TimeCurrent()+sec; // por ejemplo, +5 segundos", por supuesto, es mayor que TimeCurrent(). Me he pasado, parece que tengo el cerebro completamente fundido ))
El enlace sólo lleva a TimeLocal() y quería evitarlo.

Dependiendo de la tarea, puede intentar utilizar una combinación deTimeCurrent()+OnTimer(), o TimeCurrent()+TimeGMT()+TimeGMTOffset()

Usted puede hacer todas las condiciones por el temporizador y el comercio porTimeCurrent() Hay muchas soluciones, pero la elección depende de usted para su tarea individual.

 
Vitaly Muzichenko:

Dependiendo de la tarea, puede intentar utilizar una combinación deTimeCurrent()+OnTimer(), o TimeCurrent()+TimeGMT()+TimeGMTOffset()

Usted puede ejecutar todas las condiciones por el temporizador y el comercio porTimeCurrent() Hay muchas soluciones, pero la elección depende de usted para su tarea individual.

¿Y cómo, en mi pregunta, se puede aplicar OnTimer()?
 
Leo59:
¿Y cómo, en mi pregunta, se puede aplicar OnTimer()?
Mantenga la bandera de inhibición activada hasta que todo haya sido calculado, por ejemplo...
 
Artyom Trishkin:
Mantener la bandera de no trabajo hasta que todo haya sido calculado, por ejemplo...
Artyom, la pregunta se refería a cómo definir un día libre mediante programación sin recurrir a TimeLocal(). ))