Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 705

 
exsistentia:

Apparemment, je n'ai pas expliqué le problème de façon précise. Le problème est qu'il y a un ordre GBPUSD ouvert (pas en attente), le prix ouvert est 1.61029. La fonction OrderOpenPrice, telle que je la comprends, est censée renvoyer le prix d'ouverture réel de l'ordre (1,61029), mais elle renvoie une valeur arrondie à 4 décimales, 1,6103. Testé sur différents ordres avec différents prix ouverts - le résultat est le même : le dernier chiffre est manquant.


Pour cela, il y a DoubleToStr(), qui écrira avec de vrais chiffres, mais qui écrira avec 4 ! Voir la Documentation en haut à gauche, vous y trouverez tout et apprendrez beaucoup + tutoriel !

Et voilà :

Alert("Цена открытия ",OPP);// не так

Alert("Цена открытия ",DoubleToStr(OPP,Digits);// а так
 
borilunad:


Il y a DoubleToStr() pour cela, qui écrira avec de vrais chiffres, mais de cette façon il écrira avec 4 ! Voir la Documentation en haut à gauche, vous y trouverez tout et apprendrez beaucoup + tutoriel !

Et voilà :



Merci beaucoup ! Et je lis le tutoriel, et j'écris une EA au fur et à mesure.

Et une autre question : quel est le moyen le plus simple de savoir qu'une commande donnée est clôturée (par ticket) ? Dois-je utiliser la fonction OrderCloseTime, ou existe-t-il une fonction spéciale à cet effet ?

 
exsistentia:



Merci beaucoup ! Je suis en train de lire le tutoriel et d'écrire un EA au fur et à mesure.

Et une autre question : quel est le moyen le plus simple de savoir si un ordre est fermé (par ticket) ? Dois-je utiliser la fonction OrderCloseTime, ou existe-t-il une fonction spéciale à cet effet ?

   if(OrderSelect(ticket,SELECT_BY_TICKET) && OrderCloseTime()>0) {
      // Ордер закрыт
      }

La variable ticket doit contenir le numéro de ticket de la commande en cours de vérification.
 
artmedia70:

La variable ticket doit contenir le numéro de ticket de la commande en cours de vérification.

Si l'ordre est fermé, ne devrait-on pas le retrouver dans l'historique (MODE_HISTORY) ?
 
artmedia70:

La variable ticket doit stocker le numéro de ticket de la commande en cours de vérification
.

Merci.

Une autre question. Il y a un bloc dans l'EA qui devrait supprimer les ordres en attente, en fonction de la clôture des ordres de marché :

OrderSelect(T1,SELECT_BY_TICKET) ;
datetime cls1 ;
cls1=OrderCloseTime() ; // temps de clôture d'un ordre
OrderSelect(T2,SELECT_BY_TICKET) ;
datetime cls2 ;
cls2=OrderCloseTime() ; // temps pour clôturer 2 ordres
Alert(cls1," ",cls2) ;

if(cls1==0 && cls2==0) //si les deux ordres sont ouverts
return(0) ;
else
CLS++ ; //drapeau de fermeture pour l'un des ordres

if(cls1>0 && CLS==1) //supprime les ordres en attente selon l'ordre qui est fermé
OrderDelete(T3) ;
if(cls2>0 && CLS==1)
OrderDelete(T4) ;
return(0) ;
}

Le bloc ne fonctionne pas pour une raison quelconque (il ne ferme pas les ordres en attente) et Alert affiche toujours "0 0". J'ai spécifiquement fermé un des ordres ouverts mais rien ne se passe. On a l'impression que l'EA ne détecte pas qu'un ordre a déjà été fermé et qu'il traite maintenant des données périmées. Quel pourrait être le problème ?

 
exsistentia:

Merci.

Une autre question. Il y a un bloc dans l'EA qui devrait supprimer les ordres en attente, en fonction de la clôture des ordres de marché :


Le bloc ne fonctionne pas pour une raison quelconque (les ordres en attente ne sont pas fermés) et Alert affiche toujours "0 0". J'ai volontairement fermé un des ordres ouverts mais rien ne se passe. On a l'impression que l'EA ne détecte pas que l'ordre a déjà été clôturé et qu'il traite maintenant les données obsolètes. Quel pourrait être le problème ?

Où se trouve le ticket de commande? Et d'où vient OrderCloseTime si l'ordre est toujours actif (du moins, il est sélectionné parmi les actifs par le code) ?
 
evillive:
Où se trouve le ticket de commande ? Et d'où vient OrderCloseTime si l'ordre est toujours actif (du moins, il est sélectionné parmi les ordres actifs par le code) ?
Oh, arrêtez de rager. Le pool est ignoré dans ce cas. Seul un temps de fermeture supérieur/égal à zéro permet de déterminer à partir de quelle liste l'ordre a été sélectionné. C'est dommage de ne pas connaître ces bases ;)
 
evillive:

si un ordre est fermé, ne devrait-on pas le rechercher dans l'historique (MODE_HISTORY) ?
S'il est sélectionné par l'index - oui, dans l'historique, s'il est sélectionné par le pool de tickets est ignoré. Apprenez les mathématiques ;)
 
artmedia70:
Oh, arrêtez de rager. Le pool est ignoré dans ce cas. Seule une heure de fermeture supérieure/égale à zéro permet de déterminer dans quelle liste la commande a été sélectionnée. C'est dommage de ne pas connaître ces bases ;)


Je ne cherche presque jamais par ticket, plutôt par index, c'est peut-être dommage, mais que faire ;)

mais la recherche du bon billet n'y est pas citée, peut-être qu'il le cherche mal et se plaint ensuite que le code ne fonctionne pas....

 
evillive:

Je ne cherche presque jamais par ticket, plutôt par index, c'est peut-être dommage, mais que faire ;)

mais chercher le bon ticket là dans le code n'a rien donné, peut-être qu'il le cherche mal et qu'il se plaint ensuite que le code ne fonctionne pas....

C'est le bordel dehors...
Raison: