Questions OrderSend() - page 7

 

Les champs à remplir sont-ils différents de

BOURSE_DE_COMMERCE_SYMBOLE

Exécution de la bourse

diffèrent des champs à

MARCHÉ_DE_L'EXÉCUTION_DES_SYMBOLES

Exécution des ordres sur le marché

? ??

l'aide a un exemple pour le marché seulement

Exécution du marché

Un ordre de transaction pour ouvrir une position en mode d'exécution sur le marché (mode d'exécution sur le marché). Nécessite la spécification de 5 champs :

  • action
  • symbole
  • volume
  • type
  • type_filling

Vous pouvez également spécifier des champs de magie et de commentaires.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 

J'ai lu la documentation, cherché sur le forum... Complètement confus. S'il vous plaît, si ça ne vous dérange pas de me l'expliquer N+1 fois.

1. J'envoie une demande de transaction en utilisantOrderSend. Cette fonction renvoie la valeur vraie.

Nous analysons leretcode (MqlTradeResult). La variable a la valeurTRADE_RETCODE_DONE.

Cette situation garantit-elle l'exécution effective de la commande sur le serveur ? Ou est-il encore nécessaire d'effectuer certains contrôles dans OnTrade, OnTradeTransaction ? Alors quel est l'intérêt d'analyserle retcode s'il ne sert à rien ?

Par exemple, la nécessité de OnTrade et OnTradeTransaction lors de l'utilisation deOrderSendAsync() est claire pour moi.

Sont-ils nécessaires lorsque l'on utilise la fonctionOrderSend() ? Attend-il inconditionnellement l'exécution/le rejet de l'ordre sur le serveur avant d'envoyer le code suivant au conseiller expert ?

 
voix_kas:

...

Sont-ils nécessaires lorsqu'on utiliseOrderSend() ? Attend-il inconditionnellement l'exécution/le rejet de l'ordre sur le serveur avant d'envoyer l'exécution du code EA suivant ?

Si je ne me trompe pas, OrderSend n 'attend pas l'exécution de l'ordre, il signale seulement que l'ordre était correct et a été envoyé au serveur.

La valeur renvoyée est

. Si la vérification de base des structures (vérification des pointeurs) est réussie, elle renvoie vrai - cela n'indique pas l'exécution réussie de l'opération commerciale. Pour obtenir une description plus détaillée du résultat de l'exécution de la fonction, analysez les champs de la structure du résultat.
 
voix_kas: J'envoie une demande de transaction en utilisantOrderSend. Cette fonction renvoie la valeur vraie.

2. analyser leretcode (MqlTradeResult). La variable a la valeurTRADE_RETCODE_DONE.

Cette situation garantit-elle l'exécution effective d'un ordre sur le serveur ?

retcode peut retourner autre chose que RETCODE_DONE :). Mais si un serveur de transactions renvoie exactementTRADE_RETCODE_DONE (ordre exécuté), alors pourquoi devrions-nous vérifier autre chose ? À mon humble avis, dans cette situation, les fonctions OnTrade, OnTradeTransaction feraient simplement double emploi avec le retcode.
 
fyords:

Si je ne me trompe pas, OrderSend n'attend pas que l'ordre soit exécuté, mais signale seulement que l'ordre était vrai et envoyé au serveur de file d'attente.

Dans ce cas, le seul mot "vrai" aurait suffi. Mais les développeurs ont fourni un retcode qui est censé stockerle "Trade serverreturn code".

C'est-à-dire qu'après le fonctionnement de la fonction OrderSend(), je voisTRADE_RETCODE_DONE dans la deuxième ligne de codeet j'essaie de modifier, par exemple, une position qui vient d'être ouverte (qui devrait logiquement exister) dans la troisième ligne de code. Cependant, PositionSelect renvoie un résultat faux. L'itération est répétée. En conséquence, une double position est ouverte par erreur.

Comment pouvons-nous nous protéger contre cette situation ?

1. Se laisser guider uniquement par le retcode et "oublier"OnTrade ?

2. Guidé uniquement parOnTrade et oublier le retcode ?

 
Yedelkin:
retcode peut retourner non seulement RETCODE_DONE :) Mais si un serveur de transactions renvoie exactementTRADE_RETCODE_DONE (ordre exécuté), alors pourquoi devrais-je vérifier autre chose ? À mon humble avis, dans cette situation, les fonctions OnTrade, OnTradeTransaction feraient simplement double emploi avec le retcode.

A en juger par la liste des"codes de retour du serveur de négociation", il n'y a qu'une seule incertitude possible dans le mode d'exécution de la demande de marché :TRADE_RETCODE_LOCKED. Et ici, peut-être, nous ne pouvons pas nous passer de OnTrade.

Permettez-moi de vous demander quelle connexion vous utilisez personnellement ?

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера - Документация по MQL5
 
voix_kas: A en juger par la liste des"Trade server return codes", il n'y a qu'une seule incertitude possible dans le mode d'exécution de la demande de marché :TRADE_RETCODE_LOCKED. Et ici, peut-être, nous ne pouvons pas nous passer de OnTrade.

Puis-je vous demander quelles fixations vous utilisez personnellement ?

Il y a aussi "Placé". Ce sont eux (Placed/Done) que je vérifie du point de vue de l'envoi réussi de la demande.
 
Pouvez-vous citer un code spécifique ?
 
voix_kas: Pouvez-vous citer un code spécifique ?
Non, je ne peux pas vous donner un code spécifique. Premièrement, il est scellé dans les classes depuis un an, et deuxièmement, vous devez le chercher... Vous avez demandé - Quel genre de classeur j'utilise ? - J'ai répondu sincèrement.
 
voix_kas:

Comment s'assurer contre une telle situation ?

1. Utiliser uniquement le retcode et "oublier"OnTrade ?

2. Dois-je utiliser uniquementOnTrade et ne pas utiliser retcode ?

Il est plus fiable de suivre OnTrade, mais vous pouvez aussi vous en passer - analysez la transaction terminée (ResultDeal()).

Il y aura bientôt un article sur ce sujet.

Raison: