Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1110
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
Renvoie parfois l'erreur 4108 - mauvais ticket pour OrderClose. Est-il possible que OrderTicket() ne corresponde pas au ticket dans OrderSelect? La variable ticket peut être égale à zéro.
Il me faut beaucoup de temps pour reproduire l'erreur, il est plus facile de demander.Renvoie parfois l'erreur 4108 - mauvais ticket pour OrderClose. Est-il possible que OrderTicket() ne corresponde pas au ticket dans OrderSelect ? La variable ticket peut être égale à zéro.
Il me faut beaucoup de temps pour reproduire l'erreur, il est plus facile de demander.Vous sélectionnez une commande par ticket. Êtes-vous sûr que la commande sélectionnée n'est pas déjà fermée ? Mais vous essayez de le refermer... Vérifiez l'heure de fermeture après avoir sélectionné avec succès le billet.
Vous sélectionnez l'ordre sur le billet. Et vous êtes sûr que l'ordre sélectionné n'est pas déjà fermé ? Mais vous essayez de la refermer. Vérifiez l'heure de fermeture après une sélection réussie sur le billet.
Je vérifierai quand je reproduirai l'erreur. Tous les tickets sont stockés dans des variables globales. Lorsque la commande est clôturée, ils sont supprimés. Avant que le ticket OrderSelect() ne soit pris dans les variables globales. Si le ticket n'est pas dans les variables - cette variable sera 0, et donc la commande ne doit pas être sélectionnée et OrderSelect() retournera false. Mais en général, oui, cela vaut la peine de vérifier. Merci.
Je vérifierai quand je reproduirai l'erreur. Tous les billets sont stockés dans des variables globales. Lorsque la commande est clôturée, ils sont supprimés. Avant que le ticket OrderSelect() ne soit pris dans les variables globales. Si le ticket n'est pas dans les variables - cette variable sera 0, et donc la commande ne doit pas être sélectionnée et OrderSelect() retournera false. Mais en général, oui, cela vaut la peine de vérifier. Merci.
Il est standard de vérifier le cours de clôture lorsqu'un ordre est sélectionné par ticket. Vous ne sauriez pas autrement si l'ordre est fermé et sélectionné dans la liste des ordres fermés, ou s'il est encore ouvert et sélectionné dans la liste des ordres au marché.
La façon la plus irréfléchie est de stocker les billets dans des variables globales. Ils doivent être tirés de l'environnement commercial - les informations actuelles sont là.
Il est standard de vérifier le cours de clôture lorsqu'un ordre est sélectionné par ticket. Vous ne saurez d'aucune autre manière si l'ordre est fermé et s'il est sélectionné dans la liste des ordres fermés, ou s'il est encore ouvert et s'il est sélectionné dans la liste des ordres au marché.
C'est faire preuve de la plus grande myopie que de stocker les billets dans des variables globales. Ils doivent être tirés de l'environnement commercial - les informations actuelles sont là.
Si je sélectionne comme ceci : OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES), est-ce que cela est censé résoudre partiellement le problème ? Je stocke les billets dans des variables globales pour d'autres raisons, eh bien, je l'ai utilisé dans ce cas aussi.
Si je sélectionne comme ceci : OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES), est-ce que cela est censé résoudre partiellement le problème ? Je stocke les billets dans des variables globales pour d'autres raisons, et je les ai utilisées dans ce cas également.
Non, il ne le fera pas - le pool (MODE_TRADES) est ignoré lors de la sélection par ticket.
Renvoie parfois l'erreur 4108 - mauvais ticket pour OrderClose. Est-il possible que la fonction OrderTicket() ne corresponde pas au ticket dans OrderSelect ? La variable ticket peut être égale à zéro.
Il me faut beaucoup de temps pour reproduire l'erreur, il est beaucoup plus facile de demander.Il suffit généralement de vérifier la présence d'ordres au marché :
OrderCloseTime() == 0 //la commande est ouverte
OrderCloseTime() > 0 //l'ordre est fermé
pour les ordres limités, vous devez également vérifier le prix de clôture; s'il est égal à 0, l'ordre limité a été annulé.
Bonjour !
Partagez le code en utilisant la méthode PositionClosePartial, si vous le pouvez.
En théorie, je comprends comment cela fonctionne, mais j'aimerais voir un code fonctionnel.
Ou me conseiller où chercher.
Merci d'avance.
Bonjour !
Partagez le code en utilisant la méthode PositionClosePartial, si vous le pouvez.
En théorie, je comprends comment cela fonctionne, mais j'aimerais voir un code fonctionnel.
Ou me conseiller où chercher.
Je vous en suis reconnaissant à l'avance.
En fait, il s'agit d'une seule ligne de code. Mais vous devez obtenir le ticket de position pour cela. Voici l'Expert Advisor de OnInit qui ouvre une position avec 0.2 lot et ferme la moitié de la position en OnTick.
Ou bien voici le code complet de la classe CTrade