Questions d'un "mannequin - page 197

 
FiftyStars:

Comment puis-je déterminer quand la prochaine barre s'ouvrira, c'est-à-dire celle qui ne s'est pas encore formée ?

En général, vous ne pouvez pas ; bien que dans le cas de délais d'une demi-heure ou plus, la probabilité d'une prédiction correcte dépasse 99,9%.
 

Est-il possible de mettre en boucle une demande comme celle-ci pour ouvrir une commande ? )

      while(result.retcode!=TRADE_RETCODE_DONE)
      {
        if(OrderCheck(request,check))
        {
          OrderSend(request,result);
        }
        if((MQL5InfoInteger(MQL5_TESTING)||MQL5InfoInteger(MQL5_OPTIMIZATION)))break;
      }
 
G001: Est-il possible de mettre en boucle une demande comme celle-ci pour ouvrir une commande ? )
Pas souhaitable. Imaginez, par exemple, qu'au lieu de TRADE_RETCODE_DONE, le serveur renvoie la réponse que la commande a été passée. Votre code surchargerait alors le serveur avec le même type de demandes.
 
Yedelkin:
Pas souhaitable. Imaginez, par exemple, qu'au lieu de TRADE_RETCODE_DONE, le serveur renvoie une réponse indiquant qu'une commande a été passée. Ensuite, votre code inondera le serveur avec le même type de demandes.

Est-ce que ce serait mieux ?

      int ResBear = -1;
      while(ResBear == -1)
      {
        if(OrderCheck(request,check))
        {
          ResBear = OrderSend(request,result);
        }
        if((MQL5InfoInteger(MQL5_TESTING)||MQL5InfoInteger(MQL5_OPTIMIZATION)))break;
      }
 
G001: Est-ce que ce sera mieux comme ça ?

Peu probable. Regardez la description de la fonction OrderSend(). Elle devrait vous dire que si elle est exécutée avec succès, vous devez encore vérifier le code de retour. Nous allons donc devoir utiliser la méthode la plus fastidieuse : prendre une liste de codes de retour et réfléchir au comportement du programme pour chacun de ces codes. C'est-à-dire "nous avons envoyé OrderSend(), obtenu le code de retour, réagi au retcode que nous avons reçu".

Le deuxième point. Il est préférable d'utiliser le modèle d'événement. C'est-à-dire ne pas boucler l'exécution de la fonction après l'arrivée d'un tick, et après plusieurs tentatives infructueuses, quitter la fonction et attendre un nouveau tick.

 
Merci, vraiment fastidieux, je vais mettre une meilleure limite aux tentatives.
 
G001: Merci, vraiment fastidieux, je vais mettre une meilleure limite aux tentatives.

Il faudra bien que vous le fassiez un jour de toute façon :) Je parle de ma propre expérience.

 
J'en suis sûr, mais jusqu'à présent, les connaissances font défaut.
 

Désolé, comment faire pour qu'il n'y ait pas de condition dans le testeur, mais qu'il y ait une condition dans le testeur en mode visuel ?

La liste des propriétés ne le permet pas, et pour une raison quelconque, cette condition ne fonctionne pas pour moi :

if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_TESTER)==1 && MQL5InfoInteger(MQL5_VISUAL_MODE)==1)

 
if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_TESTER)==1 && MQL5InfoInteger(MQL5_VISUAL_MODE)==1)

de cette condition ressort qu'elle sera performante dans trois situations :

1) Lorsque le testeur fonctionne

2)Lorsque le testeur ne fonctionne PAS

3) Quand le testeur visuel fonctionne

pour que la fonction fonctionne toujours, vous devriez probablement supprimer la deuxième condition et relier la première et la troisième avec &&.