Comment travailler correctement dans MT5 avec OrderSend ? - page 4

 
fxsaber:
Malheureusement, seulement à travers une béquille - une variable globale du terminal.

Et par des béquilles supplémentaires pour s'assurer que la variable principale est supprimée en cas de crash, par exemple.

Ainsi, ma variante avec l'attente d'une transaction dans l'historique est plus fiable et plus simple. Mais c'est toujours une béquille.

 

Je n'ai pas vérifié, mais peut-être qu'après l'envoi de l'ordre, tous les EA reçoivent l'événement correspondant pourOnTradeTransaction.

Ensuite, tout est résolu sans béquilles et pour plusieurs EA sur le même symbole.

 
prostotrader:

Voulez-vous que je vous aide à contourner ces mésaventures (à partir de mon expérience personnelle de trading avec des robots MT5 sur un compte réel) ?

Ajouté

Totalement gratuit :)

Je le veux ! :)
 
prostotrader:
Les gens ne veulent pas penser par eux-mêmes, ils veulent que les autres le fassent pour eux... Malheureusement, c'est vrai.
Pour penser, il faut avoir des informations sur lesquelles réfléchir. Comment pouvez-vous réfléchir s'il n'y a pas assez d'informations de base ?
 
fxsaber:

Les gens ne se contentent pas de réfléchir mais partagent également leurs solutions. Les développeurs ne disent rien à ce sujet, malheureusement.

Pas un seul exemple dans la documentation sur ce sujet. Et ça, c'est avec la fonction principale.

Je soutiens. S'il était écrit quelque part que OrderSend() attend une réponse du serveur et ce qui se passe ensuite, il ne serait pas nécessaire de trouver des solutions de contournement pour vérifier.

Il existe un excellent article sur les commandes, les transactions et les positions, ainsi que sur le travail avec eux et leur cache, qui détaille tout. Cependant, il ignore complètement les processus qui se déroulent lors de l'envoi de la commande elle-même.

 
fxsaber:
Ma suggestion

prostotrader:

Utilisez-le.

Que se passe-t-il si l'événement OnTrade() est déclenché avant que le traitement OnTick() ne soit terminé. Parfois, le temps est compté. Attendre qu'il atteigne OnTrade() peut être problématique. En outre, la fonction OrderSend() elle-même est conçue de manière à ce que je puisse obtenir des informations sur ses résultats sur-le-champ. Ou pas ?
 
Oleg Shenker:
Et que se passe-t-il si l'événement OnTrade() est déclenché avant que le traitement OnTick() ne soit terminé. Parfois, le temps est compté. Attendre que l'événement OnTrade() se produise peut être problématique. En outre, la fonction OrderSend() elle-même est conçue de manière à ce que je puisse obtenir des informations sur ses résultats sur-le-champ. Ou pas ?

OrderSend() est une fonction absolument synchrone - si un ticket est reçu, tout est exécuté.

Voici un exemple

Ajouté, et voici les logs

https://www.mql5.com/ru/forum/38456/page85#comment_2888263

ФОРТС. Вопросы по исполнению
ФОРТС. Вопросы по исполнению
  • www.mql5.com
С большими проблемами удалось это сделать (начальник отдела по работе с профессиональными клиентами ДЦ Открытие Евгений Сергеевич,.
Dossiers :
TestOrders.mq5  23 kb
 
Andrey Khatimlianskii:
Non exécuté, mais envoyé au serveur MT5.

Non. Pour la Bourse - je suis allé à la Bourse (je n'ai peut-être pas réussi :) ), pour le FOREX je ne sais pas.

Ajouté

Ie (pour la bourse), si vous obtenez un ticket dans la fonction OrderSend((), cela signifie que l'ordre est accepté par la bourse.

Ajouté

Voir photo (il y a eu des changements en 1375)

 
Andrey Khatimlianskii:

Il s'agit d'un cas particulier d'envoi d'un ordre à cours limité à une bourse. Qu'en est-il d'un ordre de marché en forex ?

J'ai dit que je ne connaissais pas le FOREX.
 
Andrey Khatimlianskii:

Pas une seule fois dans ce fil. Seulement sur la synchronisation de MT5 et d'OrderSend.

Donc la réponse ne colle pas.

Non. Pour l'échange - je suis allé à l'échange (peut-être pas rempli :) ), pour le FOREX je ne sais pas.

Ajouté

Ie (pour la bourse), si vous obtenez un ticket dans lafonction OrderSend((), cela signifie que l'ordre est accepté par la bourse.

Ajouté

Voir photo (il y a eu des changements en 1375)