¿Cómo saber si el mercado está cerrado? (mql4) - página 5

 

Todavía no he descubierto cómo obtener información adecuada de DayOfWeek. Da el valor correcto el día que el robot se pone en marcha y en algunos otros casos (a veces). Me parece que da un valor correcto cuando abro órdenes. Si no abres nada, te dará el tiempo.

He resuelto el problema de esta manera:

...
int realDay=DayOfWeek();
int curHour=TimeHour(TimeLocal());
   while(!IsStopped())
      {
      if (TimeHour(TimeLocal())<curHour) realDay++; 
      curHour=TimeHour(TimeLocal());
      if (realDay==7) realDay=0;        
...     

Pero aún no lo he probado )))) Debería funcionar.

 
winsight:

Todavía no he descubierto cómo obtener información adecuada de "DayOfWeek". Da el valor correcto el día que el robot se pone en marcha y en algunos otros casos (a veces). Me parece que da un valor correcto cuando abro órdenes. Si no abres nada, te dará el tiempo.

He resuelto el problema de esta manera:

Pero aún no lo he probado ))) Debería funcionar.

Es más fácil: utilice TimeDayOfWeek:

int dayOfWeek = TimeDayOfWeek(TimeCurrent());
 
Ihor Herasko:
De este modo, sólo obtendrá el estado de permiso del instrumento para operar. Si el instrumento se negocia, obtendrá verdades por él cualquier día de la semana.

Alert(bool(MarketInfo(Symbol(),MODE_TRADEALLOWED));

falso

 
Vasyl Nosal:

Alert(bool(MarketInfo(Symbol(),MODE_TRADEALLOWED));

falso

Mi versión es la siguiente:

   Alert("Trade allowed by MarketInfo: ", bool(MarketInfo(Symbol(),MODE_TRADEALLOWED)));
   Alert("Trade allowed by IsTradeAllowed: ", bool(IsTradeAllowed()));
   Alert("Trade allowed by IsTradeAllowed 2-nd version: ", bool(IsTradeAllowed(Symbol(), TimeLocal())));

Resultado:

2015.12.20 16:41:21.196 Test EURUSD,H1: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 16:41:21.196 Test EURUSD,H1: Alert: Trade allowed by IsTradeAllowed: true
2015.12.20 16:41:21.196 Test EURUSD,H1: Alert: Trade allowed by MarketInfo: true

En mi ordenador la hora es GMT+2.

Por eso no entiendo cómo has conseguido ser falso en el primer caso. Tal vez, usted tomó un instrumento que en principio no se negocia.

Las conclusiones son las siguientes:

  1. La primera y la segunda opción son esencialmente idénticas. Sólo señalan el hecho de que el autotrading para el instrumento está habilitado y hay flujo de comercio libre.
  2. La tercera variante es justo lo que necesitamos. Permite conocer el permiso para operar en un instrumento dado su horario de trabajo.
 
Ihor Herasko:

Mi versión es esta:

Resultado:

En mi ordenador la hora es GMT+2.

Por lo tanto, no está claro cómo ha conseguido que la primera opción sea falsa. Tal vez, usted tomó un instrumento que en principio no se negocia.

Las conclusiones son las siguientes:

  1. La primera y la segunda opción son esencialmente idénticas. Sólo señalan el hecho de que el autotrading para el instrumento está habilitado y hay flujo de comercio libre.
  2. La tercera variante es justo lo que necesitamos. Le permite conocer el permiso para operar en un instrumento con respecto a su horario de trabajo.
EURUSD fxOpen
 
Vasyl Nosal:
EURUSD fxOpen

Efectivamente, este corredor tiene el resultado del script anterior:

2015.12.20 17:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 17:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by IsTradeAllowed: false
2015.12.20 17:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by MarketInfo: false

Empezó a comprobar otros corredores. Agente G**X:

2015.12.20 17:18:14.339 Test EURUSD,M314: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 17:18:14.339 Test EURUSD,M314: Alert: Trade allowed by IsTradeAllowed: false
2015.12.20 17:18:14.339 Test EURUSD,M314: Alert: Trade allowed by MarketInfo: true

Agente A***i:

2015.12.20 17:20:40.372 Test EURUSD,M15: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 17:20:40.372 Test EURUSD,M15: Alert: Trade allowed by IsTradeAllowed: true
2015.12.20 17:20:40.372 Test EURUSD,M15: Alert: Trade allowed by MarketInfo: true

Broker I***a F***x:

2015.12.20 17:21:38.663 test GBPUSD,H1: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 17:21:38.663 test GBPUSD,H1: Alert: Trade allowed by IsTradeAllowed: false
2015.12.20 17:21:38.663 test GBPUSD,H1: Alert: Trade allowed by MarketInfo: false

Mi primera prueba de hoy fue en A*****l M*****s.

Así, conseguimos que no todos los brokers tengan funcionando correctamente IsTradeAllowed (primera versión) y MODE_TRADEALLOWED. Y por otro lado, la segunda versión de IsTradeAllowed funciona correctamente en todas partes. Por lo tanto, es mejor utilizarlo.

 
Ihor Herasko:

Efectivamente, este corredor tiene el resultado del script anterior:

Empezó a comprobar otros corredores. Agente G**X:

Agente A***i:

Broker I***a F***x:

Mi primera prueba de hoy fue en A*****l M*****s.

Así, conseguimos que no todos los brokers tengan funcionando correctamente IsTradeAllowed (primera versión) y MODE_TRADEALLOWED. Y por otro lado, la segunda versión de IsTradeAllowed funciona correctamente en todas partes. Por lo tanto, es mejor utilizarlo.

Y hoy

IsTradeAllowed(Symbol(), TimeCurrent())

se muestra cobarde

Por cierto, ¿por qué tienes tiempo local?

 
Vasyl Nosal:

Y hoy

IsTradeAllowed(Symbol(), TimeCurrent())

se muestra cobarde

Por cierto, ¿por qué tienes tiempo local?

Hoy es un día de fiesta, así que es difícil.
 
Alexey Busygin:
Es un fin de semana festivo, así que es difícil.
El hecho es que ninguna de las funciones de reconocimiento funciona al 100%.
 
Vasyl Nosal:
El hecho es que ninguna de las funciones de reconocimiento funciona al 100%.
En algunos casos, la respuesta debe provenir del servidor DC. Y a los DC no les importa mucho, por eso funciona de alguna manera.