Fermeture des demi-lots.

 

J'ai donc réussi à intégrer une boucle qui supprime l'ordre en attente et en réapplique un autre sur la base que le stop est synchronisé avec la moyenne mobile. Les lots sont calculés en fonction de la distance entre l'entrée et le stop. Non seulement cela, mais j'ai réussi à comprendre comment l'objectif de profit fonctionne avec la distance du stop sous forme de ratio (extern int - quelque chose que j'ai choisi 1-2-3 R;R etc.) - donc cela bouge aussi.

Merci pour les commentaires sur les messages précédents concernant l'impression de mon code et d'autres détails !


Quoi qu'il en soit, j'essaie de liquider la moitié de la position lorsque le prix atteint 50% de mon objectif de profit du ratio 2x... Je sais que je dois imprimer les choses dans le journal et je suis en train de le faire, mais quelqu'un pourrait-il me dire si j'écris mal ? Peut-être en ce qui concerne "OrderLots()/2" ?

"btp" = renvoie un prix spécifique.

         if(Bid == btp-OrderOpenPrice()/2+OrderOpenPrice()){
         
         for(int q=OrdersTotal()-1; q >=0; q--)
         {
            if(OrderSelect(q,SELECT_BY_POS,MODE_TRADES)==true){
              Print(" Stop loss value for the order is ", OrderStopLoss());
              Print("lots for the order ",OrderLots());
            }
            else if(OrderSelect(q,SELECT_BY_POS,MODE_TRADES)==false){
              Print(" OrderSelect failed error code is ",GetLastError());
            }
            if(OrderMagicNumber()==MagicNumber)
             if(OrderSymbol()==Symbol())
              if(OrderType()==OP_BUYSTOP)
               
               CloseHalfLong = OrderClose(OrderTicket(),OrderLots()/2,Bid,3,CLR_NONE);
         
            if(CloseHalfLong!=TRUE)Print("LastError = ", GetLastError());
         }
         }
 
DomGilberto:

J'ai donc réussi à intégrer une boucle qui supprime l'ordre en attente et en réapplique un autre sur la base que le stop est synchronisé avec la moyenne mobile. Les lots sont calculés en fonction de la distance entre l'entrée et le stop. Non seulement cela, mais j'ai réussi à comprendre comment l'objectif de profit fonctionne avec la distance du stop sous forme de ratio (extern int - quelque chose que j'ai choisi 1-2-3 R;R etc.) - donc cela bouge aussi.

Merci pour les commentaires sur les messages précédents concernant l'impression de mon code et d'autres détails !


Quoi qu'il en soit, j'essaie de liquider la moitié de la position lorsque le prix atteint 50% de mon objectif de profit du ratio 2x... Je sais que je dois imprimer les choses dans le journal et je suis en train de le faire, mais quelqu'un pourrait-il me dire si j'écris mal ? Peut-être en ce qui concerne "OrderLots()/2" ?

"btp" = renvoie un prix spécifique.

Je ne pense pas que OrderLots()/2 soit suffisant (excusez le jeu de mots) dans toutes les situations, je suis sûr que vous devez valider la taille de la position que vous cherchez à clôturer par rapport à MarketInfo() MODE_LOTSTEP et MODE_MINLOT.

Regardez ici : https://www.mql5.com/en/forum/143966

 
RaptorUK: Je ne pense pas que OrderLots()/2 soit suffisant (excusez le jeu de mots) dans toutes les situations, je suis presque sûr que vous devez valider la taille de la position que vous cherchez à clôturer par rapport à MarketInfo() MODE_LOTSTEP et MODE_MINLOT.
Exactement. Voir mon CloseOrder()
 

Merci RaptorUK - Je ne suis pas sûr de savoir où je regarde WHRoeder sur votre lien, mais merci.

C'est moi, ou le processus de fermeture des lots sur une position ouverte est un peu contre intuitif... il semble inutilement compliqué, compte tenu de ce que je veux faire...

Mec, je pense que j'ai assez regardé ce code pour une journée - Je ne comprends pas comment j'utilise MarkerInfo() avec OrderClose... cela semble inutilement complexe.

 
DomGilberto:

Merci RaptorUK - Je ne suis pas sûr de savoir où je regarde WHRoeder sur votre lien, mais merci.

C'est moi, ou le processus de fermeture des lots sur une position ouverte est un peu contre intuitif... il semble inutilement compliqué, compte tenu de ce que je veux faire...

Mec, je pense que j'ai assez regardé ce code pour une journée - Je ne comprends pas comment j'utilise MarkerInfo() avec OrderClose... cela semble inutilement complexe.

Si la taille de la position de votre ordre est de 0,3 lot et que vous voulez en fermer la moitié, cela ferait 0,15 lot, si le MODE_LOTSTEP de votre courtier est de 0,1, alors 0,15 est une taille de lot non valide... donc avant d'utiliser la fonction OrderClose(), validez la taille de la position que vous êtes sur le point de fermer.
 
Ah je l'ai eu ! Merci RaptorUK ! Dernière question, quand vous dites valider la taille du lot, voulez-vous dire la comparer en utilisant des instructions If ?
 
DomGilberto: Je ne sais pas où je regarde WHRoeder sur votre lien, mais merci.
Le lien le plus haut sur cette page
 
Ah gotchya ! C'est un codage épique... :o !

J'espère pouvoir conserver ce niveau de programmation un jour... (avec un peu plus de patience de votre part - je plaisante :P)


Merci WHRoeder !
 
DomGilberto:
Ah je l'ai eu ! Merci RaptorUK ! Dernière question, lorsque vous dites valider la taille du lot, voulez-vous dire la comparer en utilisant des instructions If ?

Non, je dis qu'il faut l'ajuster pour qu'il soit conforme à MODE_LOTSTEP et MODE_MINLOT ... alors il est valide (validé), si vous regardez le lien que j'ai posté...

mlots = MathFloor(mlots / lotstep) * lotstep; 

Supposons que mlots était de 0,15, que mlots (MODE_MINLOT) était de 0,1 et que lotstep (MODE_LOTSTEP) était de 0,1, le code ferait donc ceci

mlots = MathFloor(0.15 / 0.1) * 0.1; 
//  MathFloor(0.15 / 0.1) ==  MathFloor( 1.5 )  gives 1

//  mlots = 1 * 0.1;  

donc mlots serait ajusté de 0.15 à 0.1 et serait valide.

 
Ah, c'est vrai ! Merci d'avoir éclairci ce point - je l'ai compris !