![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
MathFloor arrondit-il les décimales au nombre entier le plus proche ?
MathFloor() fait ce qui est indiqué dans la documentation... "La fonction MathFloor renvoie une valeur numérique représentant le plus grand nombre entier inférieur ou égal à x".
Est-ce que FirstTarget a un sens en tant que paramètre personnalisé dans "OrderClose()" - en supposant que "sizeClose" était correct ? (voir le code cité)
Non... vous avez ceci :
alors que vous voulez probablement dire ceci...
FirstTarget = OrderOpenPrice() + ( ( OrderTakeProfit()-OrderOpenPrice() ) / 2 ) ;
Utilisez des parenthèses (et des espaces) pour rendre les choses claires et sans ambiguïté.
Votre code n'a pas aidé - désolé.
Pourquoi ? C'est une erreur ?
Pouvez-vous imprimer des variables personnalisées ? Si c'est le cas, je dois m'y prendre mal car elles n'apparaissent pas dans le journal.
Oui, vous pouvez imprimer toutes les variables . ... que faites-vous ? Montrez votre code.
En ce qui concerne l'impression des variables personnalisées, comment dois-je procéder pour "FirstTarget_Buy" ?
Je vais passer du temps à parcourir tout mon code et à imprimer beaucoup de choses - je comprends comment le faire avec les bools et les ints (integer -1 échoue et bool est une déclaration vraie ou fausse - facile.) mais je ne comprends pas comment le faire lorsque vous assignez des fonctions à une variable personnalisée ?
Merci de m'avoir éclairé sur la formule "FirsTarget" ci-dessus ! Désolé, je voulais dire que votre code n'a pas aidé dans le sens où je ne comprends pas comment assembler la formule... Je trouve que c'est vraiment contre intuitif - On aurait pu penser que l'appel à "OrderSelect" vous permettrait de voir simplement quelle était la taille du lot sur ce tickorder... et ensuite simplement le diviser...
Désolé de passer pour un crétin complet !
Désolé d'être passé pour un crétin complet !
Pas du tout, vous devez juste trouver votre point aveugle et l'éclairer, une fois que vous l'aurez fait vous vous demanderez pourquoi vous avez trouvé cela si difficile, tout est facile quand vous savez comment faire.
En ce qui concerne l'impression de variables personnalisées, comment dois-je m'y prendre pour "FirstTarget_Buy" ?
Je vais passer du temps à parcourir tout mon code et à en imprimer beaucoup - je comprends comment le faire avec les bools et les ints (integer -1 échoue et bool est une déclaration vraie ou fausse - facile.) mais je ne comprends pas comment le faire lorsque vous assignez des fonctions à une variable personnalisée ?
Je voulais dire que votre code n'a pas aidé dans le sens où je ne comprends pas comment assembler la formule... Je trouve que c'est vraiment contre intuitif - On aurait pu penser que l'appel à "OrderSelect" vous permettrait de voir simplement quelle était la taille du lot sur ce tickorder... et ensuite de le diviser simplement...
Vous pouvez simplement sélectionner l'ordre, puis utiliser OrderLots() et diviser par deux... vous pouvez le faire, et dans de nombreuses situations, cela fonctionnera. J'écris du code pour tous les cas que je peux prévoir afin de ne pas avoir à le réparer continuellement quand il casse....
Si la taille de votre position est de 2.0 lots, divisée par deux, cela fait 1.0 lot et cela fonctionnera...
Si la taille de votre position est de 0,3 lot, ceci divisé par deux est 0,15 lot et ce sera une taille de position invalide si MODE_LOTSTEP est 0,1... vous pouvez utiliser 0,1 ou 0,2 PAS 0,15 donc vous devez coder cette vérification et cet ajustement.
Ce que vous avez ici ne fonctionnera pas dans tous les cas....
Ahhhh ! Je viens de passer les 15-20 dernières minutes à faire des impressions un peu partout - je commence à comprendre où je me trompe. Je suis en train de sélectionner l'ordre PENDING... CEPENDANT, parce que c'est un ordre en attente, au moment où je le sélectionne, il y a de fortes chances que les lots d'ordre, le stop et les cibles aient changé, donc je dois le mettre dans une boucle pour le synchroniser avec la façon dont mes ordres en attente sont constamment calculés avant qu'ils ne se déclenchent.
Ce satané doubletostr :P - Spot on RaptorUK ! Je peux maintenant voir que cela est calculé correctement, grâce à votre ajustement :)
Je pense que je sais comment faire la plupart des choses maintenant - Juste par curiosité, quelle instruction "if" fonctionnerait pour appeler SEULEMENT l'ordre qui a été déclenché. Pour le moment, je l'ai fait appeler lorsque j'ai un ordre au marché ouvert, mais j'essaie de comprendre comment appeler lorsque l'ordre en attente a été déclenché ?
Le code ci-dessous et l'instruction "if" correspondante semblent juste appeler les ordres en attente ouverts. Je veux juste un moyen d'accéder à une fonction personnalisée spécifique (void par exemple) lorsqu'un ordre a été déclenché ? (si cela a un sens !)
Merci d'avoir éclairci tant de choses pour moi :)
Ahhhh ! Je viens de passer les 15-20 dernières minutes à effacer des empreintes un peu partout - je commence à comprendre où je me trompe.
Facile quand on sait comment![](https://c.mql5.com/mql4/forum/2013/07/rofl_3.gif)
Je pense que je sais comment faire la plupart des choses maintenant - Juste par curiosité, quelle instruction "si" fonctionnerait pour appeler UNIQUEMENT l'ordre qui a été déclenché. Pour l'instant, je l'ai fait appeler lorsque j'ai un ordre au marché ouvert, mais j'essaie de comprendre comment appeler lorsque l'ordre en attente a été déclenché ?
Quand un Pending Order a été déclenché, il devient un OP_BUY ou un OP_SELL, donc....
if(OrderType() == OP_BUY || OrderType() == OP_SELL) { }
Un conseil, utilisez plus d'espaces ... lorsque vous obtenez une erreur de division par zéro et que vous voulez trouver où cela se produit, il est facile de rechercher l'espace/espace et de trouver vos divisions au lieu de tous vos commentaires ... donc j'utilise des espaces autour de = + - / %, etc.
Bon conseil - je vais le faire ! Merci pour votre aide :) Je posterai un message si je réussis à le faire !
Je ne reçois aucune information concernant les empreintes ? Absolument rien ne s'affiche dans le Journal. Je suppose que c'est parce que rien n'est sélectionné en ce qui concerne le type d'ordre dès la première instruction "if" ? D'après ce que je peux voir ici dans le code, j'aurais pensé que je ne suis pas loin du compte, du moins... ?
Ok, je suis de retour ! ... Les nouvelles ne sont pas très bonnes - j'ai essayé et testé de multiples variations de code sans succès. Voici où j'en suis actuellement.
Je ne reçois aucune information concernant les empreintes ? Absolument rien ne s'affiche dans le Journal. Je suppose que c'est parce que rien n'est sélectionné en ce qui concerne le type d'ordre dès la première instruction "if" ? D'après ce que je peux voir ici dans le code, j'aurais pensé que je ne suis pas loin du compte, du moins... ?
Comment sélectionnez-vous l'ordre avant de faire cela ?
if(OrderType() == OP_BUY ){
Vous avez toujours des problèmes ici
Pourquoi pas...
2013.07.31 11:13:52 2013.02.01 16:00 trendfishing_play_ground EURUSD,H1: Order Select returned the error of 0 // Not sure what is going on here? 2013.07.31 11:13:52 2013.02.01 16:00 trendfishing_play_ground EURUSD,H1: The Lots to close is: 0.09000 // This is the right calculation based // upon the total lots opened on a pending order - to half. 2013.07.31 11:13:52 2013.02.01 16:00 trendfishing_play_ground EURUSD,H1: The Lotstep is: 0.01000 2013.07.31 11:13:52 2013.02.01 16:00 trendfishing_play_ground EURUSD,H1: The minimum lots are: 0.01000 2013.07.31 11:13:52 2013.02.01 16:00 trendfishing_play_ground EURUSD,H1: FirstTarget_Buy: 1.37931 // This price is also correct.