Questions des débutants MQL5 MT5 MetaTrader 5 - page 305
![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
Bonsoir à tous ! J'ai décidé de mettre une piste sur les transactions ouvertes dans le testeur, j'ai essayé de passer par OrderGet....() et je me suis rendu compte que la transaction est passée de la catégorie des ordres à une position ouverte, respectivement passé par PositionGet....(), mais encore une fois rien ne fonctionne,
La question est de savoir si je dois maintenant utiliser HistoryDealGet...() ? Ou je ne comprends pas quelque chose ? Comment modifier le SL dans une transaction ouverte dans le testeur ? Merci d'avance pour les commentaires.
Veuillez me diriger vers ! !!! pour savoir comment implémenter dans MQL5 la vérification de la présence (ou de l'absence) d'un objet graphique, par exemple une ligne de tendance ou une ligne verticale ?
Idéalement, j'aimerais utiliser une logique similaire à "Si l'ordre n'existe pas" ou "Si l'ordre existe".
Veuillez me diriger vers ! !!! pour savoir comment implémenter dans MQL5 la vérification de la présence (ou de l'absence) d'un objet graphique, par exemple une ligne de tendance ou une ligne verticale ?
Idéalement, j'aimerais utiliser une logique similaire à "Si l'ordre n'existe pas" ou "Si l'ordre existe".
Pouvez-vous nous conseiller sur la manière d'implémenter correctement l'algorithme d'achat ?
Actuellement, le conseiller expert doit acheter plusieurs fois, jusqu'à ce qu'il reçoive l'information qu'il y a des positions ouvertes, et il prend du retard. Comment faire en sorte que le conseiller expert attende la réponse de la bourse après le premier achat (lorsque les conditions sont réunies).
Le problème maintenant est que la variable Bye_opened devrait devenir vraie et cela devrait empêcher l'EA de faire des transactions inutiles jusqu'à ce que les stops soient déclenchés. Mais modifier la variable Bye_opened prend beaucoup de temps et l'EA a le temps de faire plusieurs transactions.
Que manque-t-il dans mon code ? Veuillez signaler les lacunes.
Le problème maintenant est que la variable Bye_opened devrait devenir vraie et cela devrait empêcher l'EA de faire des transactions inutiles jusqu'à ce que les stops soient déclenchés. Mais les changements de la variable Bye_opened prennent beaucoup de temps et l'EA a le temps de faire plusieurs trades.
Ce n'est pas parce qu'un changement de variable prend beaucoup de temps... comment l'avez-vous déterminé ? Ok, supposons que c'est le cas. Alors la réponse se trouve dans la question. Si vous avez besoin d'un retard dans l'ouverture d'une position, vous devez utiliser Sleep( N ) où N est calculé expérimentalement.
Variante 2. La réponse, encore une fois, est dans la question. Rendez Bye_opened global et changez-le immédiatement après que la position soit ouverte avec succès, directement dans ce module. Réinitialisez de la même manière, comme vous vérifiez l'existence de la position.
...
Si vous insérez une ligne
après la commande : OrderSend(), il n'y aura pas de réouverture des positions.
Il est peut-être préférable de vérifier d'abord si la position est ouverte, puis ...
? ??
Apparemment, il a un robot qui fonctionne à chaque tic. Entre l'envoi de l'ordre au serveur et la réception de la réponse du serveur, plusieurs ticks supplémentaires vont arriver et une position supplémentaire va s'ouvrir sur chaque tick. Ma proposition exclut la situation de répétition des ouvertures. Et il est nécessaire de vérifier si une position a été ouverte ou non.
C'est ce que je dis. Sinon, il comprendrait littéralement tout et manquerait un contrôle important.
C'est donc bien comme ça qu'il faut vérifier correctement ? Désolé, je n'arrive pas à le faire correctement.
Voici le code (tout est situé dans le bloc OnTick) :
Afin d'éviter d'ouvrir des volumes inutiles :
Malheureusement, cette condition ne fonctionne pas lors de l'ouverture d'une transaction.