Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 708

 
Rustam Bikbulatov:
Bonjour les gars. Pouvez-vous me dire pourquoi j'ai une vingtaine de commandes qui sont fermées en ordre décalé ou dans un ordre différent ? Comment dois-je le réparer ? Existe-t-il une méthode permettant de fermer en une seule fois ?

lors de la fermeture - changer l'ordre des commandes

c'est-à-dire que la boucle devrait être

for(int i=OrdersTotal()-1;i>=0;i--){...}

au moins :-)

PS. Pour autant que l'on ait marché dessus, il peut parfois être utile de clôturer les ordres dans un ordre "décalé".
 
Maxim Kuznetsov:

lors de la fermeture - changer l'ordre des commandes

c'est-à-dire qu'il doit y avoir un cycle

au moins :-)

PS : puisque vous avez de toute façon mis le pied dessus,il peutparfois être utile de clôturer les ordres dans un ordre "décalé" .

S'il s'agit d'une fermeture contrôlée ;)

En général (bien que votre commentaire soit correct), la question portait sur la "méthode de fermeture en une fois", ce qui ne peut être fait dans une boucle.

Ici, vous devez ouvrir la position opposée avec un lot égal à la somme des lots de toutes les positions ouvertes pour le verrouillage, puis fermer tranquillement la position opposée.

 
Artyom Trishkin:

S'il s'agit d'une fermeture contrôlée ;)

Et en général (bien que votre commentaire soit correct) la question portait sur la "méthode de fermeture en une seule fois", ce qui ne peut être fait dans une boucle.

Vous devez ouvrir la position opposée avec un lot égal à la somme des lots de toutes les positions ouvertes pour le verrouillage, puis fermer tranquillement la position opposée.

Et qu'est-ce qui vous empêche de fermer les commandes une à une ?

 
Rustam Bikbulatov:

et qu'est-ce qui empêche les commandes de se fermer en ordre ?

Décalage des indices des ordres dans la liste du marché lorsqu'ils sont supprimés dans une boucle directe de zéro à OrdersTotal()-1.

 
Rustam Bikbulatov:

qu'est-ce qui empêche de clôturer les commandes en ordre ?

Soit vous fermez toutes les positions ouvertes dans le cycle inverse de OrdersTotal()-1 à >=0 dans l'ordre de leur ordre dans la liste, soit vous ouvrez une position opposée pour le verrouillage, puis vous fermez tranquillement les positions requises avec une position opposée.

 
Merci Artem !
 
Artyom Trishkin:

S'il s'agit d'une fermeture contrôlée ;)

En général (bien que votre remarque soit correcte), la question portait sur la "méthode de fermeture en une seule fois", ce qui ne peut être fait dans une boucle.

Ici, vous devez ouvrir la position opposée avec un lot égal à la somme des lots de toutes les positions ouvertes pour le verrouillage, et puis déjà fermer tranquillement avec le compteur

La méthode de clôture la plus appropriée est d'appeler votre agent : "John, ferme la position sur General Electric, nous sommes d'accord sur tout".

:-)

Il n'est pas toujours possible de couvrir avec le volume opposé. Et il glisse plus difficilement - le volume est important.

 
Artyom Trishkin:

Décalage des index des ordres dans la liste du marché lors de leur suppression en séquence directe de zéro à OrdersTotal()-1.

J'ai vu le code pour la fermeture des ordres dans une séquence directe et cela a fonctionné sans échec.

Là, le compteur de la boucle était simplement augmenté d'une unité lorsqu'une commande était fermée avec succès. )))) Je ne me souviens pas exactement et je n'arrive pas à me creuser la tête.

 
Maxim Kuznetsov:

La méthode de clôture la plus correcte consiste à appeler votre agent : "John, ferme la position sur General Electric, nous sommes d'accord sur tout".

:-)

Il n'est pas toujours possible de couvrir avec un volume de comptoir. Et il glisse plus difficilement - le volume est élevé.

Mais tout à la fois :) Et en boucle, un par un.

 
Alexey Viktorov:

J'ai vu le code pour fermer les ordres dans une séquence directe et cela a fonctionné sans aucun problème.

Il a simplement augmenté le compteur de la boucle d'une unité lorsque l'ordre a été fermé avec succès. )))) Ou diminué ? Je ne me souviens pas exactement, et je n'arrive pas à me creuser la tête.

Pour éviter de vous fatiguer le cerveau, vous pouvez rassembler tous les postes que vous avez préparés pour la suppression dans une liste dans l'ordre que vous voulez (dans l'ordre que vous voulez), et les supprimer "nom par nom" en regardant la liste. De cette façon, l'ordre de suppression correct sera maintenu.

Raison: