Comment savoir si le marché est fermé ? (mql4) - page 5

 

Je n'ai toujours pas trouvé comment obtenir des informations adéquates à partir de "DayOfWeek". Il donne la valeur correcte le jour où le robot démarre et dans certains autres cas (parfois). Il me semble qu'il donne une valeur correcte lorsque j'ouvre des ordres. Si vous n'ouvrez rien, il vous donnera la météo.

J'ai résolu le problème de cette façon :

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

Mais je ne l'ai pas encore testé )))). Cela devrait fonctionner.

 
winsight:

Je n'ai toujours pas trouvé comment obtenir des informations adéquates à partir de "DayOfWeek". Il donne la valeur correcte le jour où le robot démarre et dans certains autres cas (parfois). Il me semble qu'il donne une valeur correcte lorsque j'ouvre des ordres. Si vous n'ouvrez rien, il vous donnera la météo.

J'ai résolu le problème de cette façon :

Mais je ne l'ai pas encore testé ;)) Cela devrait fonctionner.

C'est plus facile - utilisez TimeDayOfWeek :

int dayOfWeek = TimeDayOfWeek(TimeCurrent());
 
Ihor Herasko:
De cette façon, vous n'obtiendrez que le statut d'autorisation de l'instrument à négocier. Si l'instrument est négocié, vous en obtiendrez la vérité tous les jours de la semaine.

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

faux

 
Vasyl Nosal:

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

faux

Ma version est la suivante :

   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())));

Résultat :

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

Sur mon ordinateur, l'heure est GMT+2.

C'est pourquoi je ne comprends pas comment vous avez réussi à vous tromper dans le premier cas. Peut-être avez-vous pris un instrument qui n'est pas négocié en principe.

Les conclusions sont les suivantes :

  1. La première et la deuxième option sont essentiellement identiques. Ils indiquent seulement que la négociation automatique pour l'instrument est activée et qu'il existe un flux commercial libre.
  2. La troisième variante est exactement ce dont nous avons besoin. Il vous permet de connaître l'autorisation de négocier sur un instrument compte tenu de son calendrier de travail.
 
Ihor Herasko:

Ma version est la suivante :

Résultat :

Sur mon ordinateur, l'heure est GMT+2.

Il n'est donc pas clair comment vous avez réussi à vous tromper sur la première option. Peut-être avez-vous pris un instrument qui n'est pas négocié en principe.

Les conclusions sont les suivantes :

  1. La première et la deuxième option sont essentiellement identiques. Ils indiquent seulement que la négociation automatique pour l'instrument est activée et qu'il existe un flux commercial libre.
  2. La troisième variante est exactement ce dont nous avons besoin. Il vous permet de connaître l'autorisation de négocier sur un instrument par rapport à son calendrier de travail.
EURUSD fxOpen
 
Vasyl Nosal:
EURUSD fxOpen

En effet, ce courtier a le résultat du script ci-dessus :

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

J'ai commencé à vérifier d'autres courtiers. Broker 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

Courtier 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

Mon premier test aujourd'hui était sur A*****l M*****s.

Ainsi, nous obtenons que tous les courtiers n'ont pas un fonctionnement correct de IsTradeAllowed (première version) et MODE_TRADEALLOWED. Et d'autre part, la deuxième version de IsTradeAllowed fonctionne correctement partout. Il est donc préférable de l'utiliser.

 
Ihor Herasko:

En effet, ce courtier a le résultat du script ci-dessus :

J'ai commencé à vérifier d'autres courtiers. Broker G**X :

Courtier A***i :

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

Mon premier test aujourd'hui était sur A*****l M*****s.

Ainsi, nous obtenons que tous les courtiers n'ont pas un fonctionnement correct de IsTradeAllowed (première version) et MODE_TRADEALLOWED. Et d'autre part, la deuxième version de IsTradeAllowed fonctionne correctement partout. Il est donc préférable de l'utiliser.

Et aujourd'hui

IsTradeAllowed(Symbol(), TimeCurrent())

cela montre la lâcheté

Au fait, pourquoi avez-vous l'heure locale?

 
Vasyl Nosal:

Et aujourd'hui

IsTradeAllowed(Symbol(), TimeCurrent())

montre la lâcheté

Au fait, pourquoi avez-vous du temps local ?

Aujourd'hui est un jour férié, donc c'est difficile.
 
Alexey Busygin:
C'est un week-end de vacances, donc c'est difficile.
Le fait est qu'aucune des fonctions de reconnaissance ne fonctionne à 100%.
 
Vasyl Nosal:
Le fait est qu'aucune des fonctions de reconnaissance ne fonctionne à 100%.
Dans certains cas, la réponse doit provenir du serveur DC ! Et les DCs ne s'en soucient pas vraiment. C'est pourquoi ça marche d'une certaine manière.
Raison: