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

 

Et nous le faisons :

MqlTick Tick;
bool IsNewTick(string symbol)
  {
   MqlTick t;
   SymbolInfoTick(symbol,t);
   if(t.time>Tick.time)
     {
      SymbolInfoTick(symbol,Tick);
      return(true);
     }
   return(false);
  }

La fonction indique s'il y a un nouveau tick sur l'instrument.

Génial pour OnTime. Seulement pour chaquesymbole, il doit y avoirun Tickdifférent

 
Vasyl Nosal:

Wow, c'est beaucoup de texte.

MarketInfo(Symbole(),MODE_TRADEALLOWED)

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.
 
Ihor Herasko:
Cela ne vous donnera que le statut d'autorisation de négociation de l'instrument. Si l'instrument est négociable, vous obtiendrez du vrai sur celui-ci n'importe quel jour de la semaine.
C'est faux.
 
Avant d'envoyer une commande, effectuez un contrôle, http://docs.mql4.com/check/istradeallowed.
 
Ramiz Mavludov:
Avant d'envoyer une commande, effectuez un contrôle, http://docs.mql4.com/check/istradeallowed.
Et cela fait référence au bouton auto-trade.
 
Vasyl Nosal:
Et cela fait référence au bouton auto-trade.
Je ne comprends pas. Si l'auto-trading n'est pas activé, votre EA ne devrait rien faire du tout.
 
Ramiz Mavludov:
Je ne comprends pas. Si l'auto-trading n'est pas activé, votre EA ne devrait rien faire du tout.
Non. Il peut et, en fait, le plus souvent, il ne devrait rien faire. Lorsque le bouton AutoTrade est désactivé, il ne peut fonctionner qu'avec les fonctions de trading. Le reste des calculs est bon.
 
Ramiz Mavludov:
Je ne comprends pas. Si vous n'activez pas l'auto-trading, votre EA ne devrait rien faire du tout.
Ce qui est écrit sur le lien n'a aucun rapport avec la question de la fermeture du marché.
 
Vasyl Nosal:
C'est faux.

Il faudrait peut-être le vérifier à nouveau. La dernière fois que j'ai travaillé sur cette question, c'était avant la mise à jour de MQL4. À l'époque, ce moyen indiquait la possibilité de négocier sur le symbole en général, et non à un moment précis. En outre, l'aide est maintenant formulée de telle manière qu'elle ne donne pas de réponse claire. Attendons le week-end pour vérifier. Ou peut-être que quelqu'un a des actions américaines dans la liste des symboles pour lesquels le marché est maintenant fermé. Alors nous pouvons le vérifier maintenant.

Quant à IsTradeAllowed indiqué par Ramiz Mavludov, il est effectivement correct. Cette fonction vous permet de vérifier la situation d'un marché fermé. Et vous pouvez le savoir maintenant à l'avance, au lieu d'attendre le week-end :

   datetime curDay = D'2015.12.14 05:00';
   Print("Trade allowed for 2015.12.14 05:00: ", IsTradeAllowed(_Symbol, curDay));
   
   datetime sunday = D'2015.12.20 03:00';
   Print("Trade allowed for Sunday: ", IsTradeAllowed(_Symbol, sunday));

Résultat :

2015.12.16 13:37:23.662 TestData EURUSD,Daily: Trade allowed for Sunday: false
2015.12.16 13:37:23.662 TestData EURUSD,Daily: Trade allowed for 2015.12.14 05:00: true
 
Ihor Herasko:

Il faudrait peut-être le vérifier à nouveau. La dernière fois que j'ai travaillé sur cette question, c'était avant la mise à jour de MQL4. À l'époque, ce moyen indiquait la possibilité de négocier sur le symbole en général, et non à un moment précis. En outre, l'aide est maintenant formulée de telle manière qu'elle ne donne pas de réponse claire. Attendons le week-end pour vérifier. Ou peut-être que quelqu'un a des actions américaines dans la liste des symboles pour lesquels le marché est maintenant fermé. Alors nous pouvons le vérifier maintenant.

Quant à IsTradeAllowed indiqué par Ramiz Mavludov, il est effectivement correct. Cette fonction vous permet de vérifier la situation d'un marché fermé. Et vous pouvez le savoir maintenant à l'avance, au lieu d'attendre le week-end :

Résultat :

Oui, c'est vrai.

Je pensais qu'il voulait direboolIsTradeAllowed() ;.

Raison: