[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 464

 
sss2019:
Pouvez-vous me dire quelle fonction doit fermer la moitié de l'ordre, OrderClose() ou OrderCloseBy() ?

S'il existe un ordre ouvert et que seule une partie de celui-ci doit être fermée, il suffit d'utiliser OrderClose() en spécifiant le volume à fermer.
 
sss2019:
Pouvez-vous me dire quelle fonction doit fermer la moitié de l'ordre, OrderClose() ou OrderCloseBy() ?

Fermeture de la moitié du volume des commandes :

   int Ticket = ...
   OrderSelect(Ticket, SELECT_BY_TICKET);
   OrderClose(Ticket, NormalizeDouble(OrderLots()/2), Ask /*или Bid*/, Slippage);
 
MaxZ:

Fermer la moitié du volume des commandes :


OrderSelect() avant OrderClose() n'est pas nécessaire.
 
PapaYozh:

OrderSelect() avant OrderClose() n'est pas nécessaire.
est nécessaire car il utilise OrderLots
 
ilunga:
est nécessaire, car il utilise OrderLots


Dans ce cas :

- Tout d'abord, nous devons vérifier le résultat renvoyé par OrderSelect();

- Deuxièmement, nous devons garder un œil sur le volume obtenu lors du processus de division, sinon il pourrait ne pas se fermer du tout.

 

PapaYozh, MaxZ Le lot est de 0,1, dans le calcul de 30 ( ClosingPercent = 30) les pourcentages devraient être de 0,03, mais l'erreur 131 se produit lors de la fermeture avec ce lot.

           ClosingLot = OrderLots() / 100 * ClosingPercent;
           ClosingLot = NormalizeDouble(ClosingLot,3);
           OrderClose(OrderTicket(),ClosingLot,Ask,Slippage,Green);
 
sss2019:

PapaYozh, MaxZ Le lot est de 0,1, dans le calcul de 30 ( ClosingPercent = 30) les pourcentages devraient être de 0,03, mais l'erreur 131 se produit lors de la fermeture avec ce lot.


Pourquoi normalisez-vous le volume à 3 chiffres ?
 
sss2019:

PapaYozh, MaxZ Il s'agit d'un lot de 0,1, lorsque l'on calcule 30 ( ClosingPercent = 30), le pourcentage devrait être de 0,03, mais l'erreur 131 se produit lors de la clôture avec ce lot.

1) pourquoi normaliser à 3 chiffres ?

2) probablement que le lot minimum est de 0,1 et qu'un lot plus petit est en principe indisponible.

 
PapaYozh:

Pourquoi normalisez-vous le volume à 3 chiffres ?

Eh bien, si le lot est de 0,10, vous ne pouvez pas fermer 30%. Mais j'ai essayé de normaliser à 2 chiffres avec 1 lot et toujours la même erreur.
 
sss2019:

Donc, si le lot est de 0,10, vous ne pouvez pas déjà fermer 30%. Mais j'ai essayé de normaliser à 2 chiffres avec le lot 1 et toujours la même erreur.

les chiffres ne sont pas comptés dans leur ensemble, mais après le point décimal.

Par exemple, en normalisant le nombre 10,044425 à 2 chiffres, on obtient le nombre 10,04.


Oui, et où en est votre sélection de commandes avant d'utiliser OrderLots ?

Raison: