Fonction OrderSendAsync() - page 5

 
Urain:

À mon avis, un lot d'applications identiques n'est nécessaire qu'à des fins de démonstration. Pour le travail, on utilisera des applications de symboles différents, avec des volumes différents et, bien sûr, des directions différentes. Chaque demande devra donc être vérifiée séparément. Il est donc inutile de les envoyer par lots.

Eh bien, vous devez choisir ici : démarrage unique de la fonction OrderSendPacketAsync(MqTradeRequest& request[], MqlPacketTradeResult& packet_result) qui envoie un tableau pré-rempli request[] de 500 éléments à la fois avec une vérification unique de le code de retour 10008, ou 500 fois le démarrage de la fonction OrderSendAsync() avec 500 fois la vérification du code de retour 10008.
Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
Торговые функции / OrderSend - Документация по MQL5
 
Urain:

...si la structure MqlPacketTradeRequest est la structure d'un tableau dynamique de structures MqlTradeRequest, cela peut casser toute la logique d'un serveur qui a été conçu pour des structures de requêtes simples.

Comment une requête commerciale utilisant un tableau dynamique peut-elle "casser la logique du serveur" ? Si j'ai un bloc, qui traite une variable d'un certain type de structure, alors qu'est-ce qui m'empêche d'appliquer ce bloc à chaque élément d'un tableau du même type ? De même, si aujourd'hui un serveur est "adapté aux structures de requêtes simples", qu'est-ce qui m'empêche d'ajouter une boucle qui, lorsqu'un serveur accepte un tableau dynamique envoyé par la fonction OrderSendPacketAsync(), permettra d'appliquer à son tour un bloc "adapté aux structures de requêtes simples" à chaque élément d'un tel tableau ?
 
papaklass:

A mon avis, la fonction OrderSendAsync() devrait être paramétrée au lieu de créer une boucle pour l'envoi des ordres. Par exemple, OrderSendAsync(Symbol(), number, direction). Comme paramètres : - le symbole, - le nombred'ordres, - le sens des ordres (achat, vente).

Cela ressemble à un cas particulier d'envoi d'une demande de transaction de masse à l'aide d'un tableau dynamique et de la fonction OrderSendPacketAsync(), lorsque les champs"symbole" et "type" sont identiques pourchaque élément du tableau dynamique .
 

Lorsque nous effectuons des transactions asynchrones, nous ne savons pas exactement comment une requête particulière a été déclenchée. En particulier, nous ne savons pas quel volume était en suspens lorsque l'une des requêtes asynchrones a été partiellement exécutée.

Pouvez-vous me dire si j'ai bien compris qu'aussi bien dans le trading de forex que dans le trading d'actions, l'ordre de la propriété d'historique

VOLUME_DE_COMMANDE_ACTUEL

Volume non rempli

nous permet de déterminer sans ambiguïté le degré d'exécution d'une requête asynchrone ? En d'autres termes, est-il exact que lorsqu'un ordre de marché est envoyé de manière asynchrone sur le marché des changes, lorsqu'il apparaît dans l'historique, nous pouvons être sûrs que si ORDER_VOLUME_CURRENT==0.0, l'ordre a été complètement exécuté, mais si ORDER_VOLUME_CURRENT contient une valeur non nulle, alors cette valeur doit être considérée comme le volume non exécuté pour cet ordre de marché des changes ?

La question est motivée par le fait qu'ici : https://www.mql5.com/ru/forum/3775/page28#comment_84851 souligne que la propriété ORDER_VOLUME_CURRENT fait référence aux ordres utilisés en bourse.

 

Question concernant la demande asynchrone apparaissant dans l'historique.

Lorsque OrderSendAsync() renvoie true et que le champ result.retcode contient 10008, alors selon la référence, cela "signifie que la requête a été envoyée, mais ne garantit pas qu'elle a atteint le serveur de négociation".

Question : si une requête asynchrone est envoyée avec succès par le terminal, mais qu'elle n'atteint pas le serveur, cette requête se retrouvera-t-elle toujours dans l'historique ? En d'autres termes, peut-il arriver qu'une requête asynchrone soit envoyée avec succès (selon toutes les indications) au serveur, mais que les informations la concernant n'apparaissent pas dans l'historique ? Si ce scénario est possible, dans quelles conditions ?

Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
Торговые функции / OrderSend - Документация по MQL5
 
Yedelkin:

Question : si une requête asynchrone a été envoyée avec succès par le terminal, mais n'a pas atteint le serveur, les informations concernant cette requête apparaîtront-elles toujours dans l'historique ? En d'autres termes, peut-il arriver qu'une requête asynchrone soit envoyée au serveur avec succès (à tous égards), mais que les informations la concernant n'apparaissent pas dans l'historique ? Si ce scénario est possible, dans quelles conditions ?
Si la demande n'atteint pas le serveur, elle n'a aucune chance d'apparaître dans le terminal du client.
 
Renat:
Si la demande n'atteint pas le serveur, elle n'a aucune chance d'apparaître dans le terminal du client.
Oups ! Il s'avère qu'une demande asynchrone envoyée avec succès peut facilement se perdre et ne pas apparaître dans l'historique.
Документация по MQL5: Торговые функции / OrderSendAsync
Документация по MQL5: Торговые функции / OrderSendAsync
  • www.mql5.com
Торговые функции / OrderSendAsync - Документация по MQL5
 
Yedelkin:
Oups ! Il s'avère qu'une demande asynchrone envoyée avec succès peut facilement se perdre et ne pas figurer dans l'historique.
non.
 
Yedelkin:
Il s'avère qu'une demande asynchrone envoyée avec succès peut facilement se perdre et ne pas figurer dans l'historique.

Le fait est qu'une demande asynchrone n'a pratiquement aucun statut "envoyé avec succès".

L'exécution réussie de la fonction signifie seulement que "l'ordre semble correct du point de vue du client et a été jeté dans le tuyau du réseau, attendez une réponse dans OnTrade".

 
Renat:

Le fait est que la demande asynchrone ne donne pratiquement aucun statut "envoyé avec succès".

L'exécution réussie de la fonction signifie seulement "du point de vue du client, l'ordre semble correct et a été envoyé dans le tuyau du réseau, attendez la réponse dans OnTrade".

Désolé, j'ai été absent pendant un moment.

Cependant, je voudrais clarifier cette phrase : "Wait for reply onTrade" qui fait référence à une situation où une requête n'a pas atteint le serveur.

Si la demande n'a pas atteint le serveur, aucun événement commercial pouvant être lié à cette demande "manquante" ne sera généré. N'est-ce pas ? Et si c'est le cas, je n'obtiendrai pas non plus de réponse appropriée dans OnTrade(). Serait-il correct de tirer une telle conclusion :

Si la fonction OrderSendAsync() se termine avec succès, il se peut que la requête n'atteigne pas le serveur, et dans ce cas il est inutile d'attendre la réponse dans OnTrade()

?

Raison: