Problème de saisie d'ordres multiples pour un compte en direct avec un courtier spécifique - page 4

 
FinanceEngineer:

Bonjour

Je sais que cela peut paraître étrange. Lorsque je vérifiais la valeur retournée de OrderSend(request,result) dans le code précédent, j'avais un problème de commandes multiples. Maintenant dans mon nouveau code, je ne vérifie pas la valeur retournée de OrderSend(request,result) ( mais j'ai quand même assigné la valeur retournée à une variable pour éviter l'erreur sur la nouvelle version du terminal.


BonjourFinanceEngineer, exactement ce que je vous ai dit, vous ne faites que masquer le vrai problème, puisque à mon avis vous imprimez ce (###) à votre code précédent (le code 10008 retourné), et non la situation de rupture.

if(!OrderSend(request,result) || result.deal==0 )
      {
         Print("OrderSend Code: ",result.retcode); // You are printing this (###) -> 10008
         ...
 
figurelli:

Bonjour Alain,

Je ne vois pas très bien ce que tu as besoin de savoir, puisque nous ne parlons que du nouveau code de FinanceEngineer, et d'un conseil pour tester le code de retour de OrderSend() qui a été modifié par rapport au code original.

Notez que ni son code original ni son nouveau code n'ont le code 10010 à tester, donc si c'est pertinent pour vous, pourquoi ne pas l'avoir demandé dès son premier message ?

Quoi qu'il en soit, pouvez-vous expliquer pourquoi vous auriez besoin du test du code 10010 pour une politique de remplissage FOK ?

Comme ce n'est pas la première fois que je vous vois, vous et d'autres modérateurs, parler de cas où il est vraiment nécessaire de tester ce code pour les ordres FOK (Fill Or Kill), que vous pourriez partager avec nous ?

Merci d'avance.

Je suppose que je peux aussi poser des questions sur ce forum, et ne pas devoir toujours répondre. Simplement cela.

Nous voyons beaucoup de code ici, testant le code retourné (MqlResult) contre 10008 ou 10009, mais quelqu'un peut-il expliquer quelle est la signification réelle de ces codes, quelle est la différence entre "Ordre placé" et "Demande complétée" ? Comme il semble que ce sont les 2 seuls codes qui ne sont pas des codes d'erreur, n'est-ce pas ?

10010 est discutable, la documentation disait:

10008

TRADE_RETCODE_PLACED

Ordre placé

10009

TRADE_RETCODE_DONE

Demande terminée

10010

TRADE_RETCODE_DONE_PARTIAL

Seule une partie de la demande a été complétée

Mais qu'est-ce que cela signifie "Seule une partie de la demande a été complétée". Vous avez noté qu'avec la politique de remplissage du FOK, cela ne peut probablement pas être l'ouverture de 0.5 lot si 1 lot est demandé (par exemple), mais est-ce la seule signification ?

Précédemment, vous avez parlé du code 10010 :

Je ne considère pas ce code comme suffisamment sûr et à l'épreuve du temps et ce n'est qu'un exemple de l'absence de code de retour, alors relisez-le.

Quelle peut être la signification de cette phrase ? "Future proof" ? "Assez sûr" pour... ? "Absence de code de retour", que manque-t-il ? (et pas si important mais, "relire" quoi ?).

 
angevoyageur:

Je suppose que je peux aussi poser des questions sur ce forum, et ne pas devoir toujours répondre. Simplement cela.

Nous voyons beaucoup de code ici, testant le code retourné (MqlResult) contre 10008 ou 10009, mais quelqu'un peut-il expliquer quelle est la signification réelle de ces codes, quelle est la différence entre "Order Placed" et "Request completed" ? Comme il semble que ce sont les 2 seuls codes qui ne sont pas des codes d'erreur, n'est-ce pas ?

10010 est discutable, la documentation le dit:

10008

TRADE_RETCODE_PLACED

Commande passée

10009

TRADE_RETCODE_DONE

Demande terminée

10010

TRADE_RETCODE_DONE_PARTIAL

Seule une partie de la demande a été complétée

Mais qu'est-ce que cela signifie "Seule une partie de la demande a été complétée". Vous avez noté qu'avec la politique de remplissage du FOK, cela ne peut probablement pas être l'ouverture de 0.5 lot si 1 lot est demandé (par exemple), mais est-ce la seule signification ?

Précédemment, vous avez parlé du code 10010 :

Quel peut être le sens de cette phrase ? "Future proof" ? "Suffisamment sûr" pour ... ? "Absence de code de retour", qu'est-ce qui manque ? (et pas si important, mais "relisez" quoi ?).

Comme la plupart des gens, j'ai appris le codage de MQL5 en regardant le code d'autres personnes. Assez étrangement pour moi, jusqu'à présent je n'ai pas vu de code vérifiant le code 10010. Cependant, il pourrait être utile de vérifier. Juste au cas où.

D'après ce que j'ai vu, lorsque je vérifie le code 10008 seul, j'obtiens un ordre de double entrée. Et quand je vérifie le code 10009 en même temps, j'obtiens un ordre de double entrée. Lorsque je vérifie les codes 10008 et 10009, je n'obtiens pas d'ordre à double entrée.

Mais je suis juste curieux de savoir si, d'un point de vue pratique, si vous vérifiez le code 10010 dans votre EA, si l'ordre a vraiment été partiellement exécuté, quelle serait la manière efficace de traiter ce type de situation ?

Je pense probablement que la plupart de ce problème d'envoi d'ordre pourrait être traité en vérifiant le volume en ayant PositionGetDouble(POSITION_VOLUME) dans notre boucle. Cependant, je ne suis pas certain que cela soit plus efficace que de vérifier le code 10008 ou 10009.

Si le serveur du courtier est occupé, les chances de ne pas obtenir le bon volume sont aussi élevées que les chances de ne pas obtenir le code 10008 ou 10009.

Bien à vous.

 
figurelli:

Bonjour Alain,

Je ne vois pas très bien ce que tu as besoin de savoir, puisque nous ne parlons que du nouveau code de FinanceEngineer, et d'un conseil pour tester le code de retour de OrderSend() qui a été modifié par rapport au code original.

Notez que ni son code original ni son nouveau code n'ont le code 10010 à tester, donc si c'est pertinent pour vous, pourquoi ne pas l'avoir demandé dès son premier message ?

Quoi qu'il en soit, pouvez-vous expliquer pourquoi vous auriez besoin du test du code 10010 pour une politique de remplissage FOK ?

Puisque ce n'est pas la première fois que je vous vois, vous et les autres modérateurs, parler, connaissez-vous des cas où il est vraiment nécessaire de tester ce code pour les ordres FOK (Fill Or Kill), que vous pourriez partager avec nous ?

Merci d'avance.

Eh bien, lorsque nous postons sur le forum de MQL5.com, nous supposons que nous parlons à des personnes qui pourraient avoir plusieurs types de besoins lors du codage des conseillers experts ... donc dans ce cas, il est évident que vous pouvez tout simplifier et demander à l'utilisateur de coder un conseiller expert "plus simple", une fois que ses besoins ne sont pas aussi "avancés" que vous pourriez imaginer. Cependant, pour autant que je sache, il existe plusieurs situations où vous ne pouvez pas travailler avec la politique de remplissage FOK.

Laissez-moi vous donner un exemple très simple : supposons que vous travaillez avec des actions et que le volume choisi est de 10.000 actions. Supposons maintenant que ce même conseiller expert travaille avec des "renversements", donc à un signal aléatoire, vous pourriez avoir à envoyer un ordre sur le marché avec un volume égal à 20.000 actions pour exécuter le soi-disant "renversement". Dans ce cas, même les actions très liquides (par exemple les actions brésiliennes de poids lourds PETR4 ou VALE5) peuvent ne pas avoir un volume acheteur ou vendeur égal à 20 000 actions à un moment donné. Dans ce cas, comment traiteriez-vous cette situation dans votre conseiller expert ? Êtes-vous vraiment convaincu que la politique FOK serait la meilleure approche dans ce cas ? Ou essayeriez-vous de considérer ce code 10010 dans votre conseiller expert ?

Comme nous l'avons dit, si vous travaillez en permanence avec de petits lots, la politique de remplissage FOK pourrait être votre meilleure solution. Cependant, parfois les gens ont des besoins plus "avancés"...

 
angevoyageur:

Je suppose que je peux aussi poser des questions sur ce forum, et ne pas devoir toujours répondre. Simplement ça.

Nous voyons beaucoup de code ici, testant le code retourné (MqlResult) contre 10008 ou 10009, mais quelqu'un peut-il expliquer quelle est la signification réelle de ces codes, quelle est la différence entre "Order Placed" et "Request completed" ? Comme il semble que ce sont les 2 seuls codes qui ne sont pas des codes d'erreur, n'est-ce pas ?

10010 est douteux, la documentation dit:

10008

TRADE_RETCODE_PLACED

Ordre placé

10009

TRADE_RETCODE_DONE

Demande terminée

10010

TRADE_RETCODE_DONE_PARTIAL

Seule une partie de la demande a été complétée

Mais qu'est-ce que cela signifie "Seule une partie de la demande a été complétée". Vous avez noté qu'avec la politique de remplissage du FOK, cela ne peut probablement pas être l'ouverture de 0.5 lot si 1 lot est demandé (par exemple), mais est-ce la seule signification ?

Précédemment, vous avez parlé du code 10010 :

Quelle peut être la signification de cette phrase ? "Future proof" ? "Assez sûr" pour... ? "Absence de code de retour", que manque-t-il ? (et pas si important mais, "relire" quoi ?).

Alain, pas de problème, vous n'avez pas à répondre, car vous ne trouverez probablement jamais de cas, puisque c'est obligatoire dans tout bon protocole OMS.

De plus, vous n'avez pas besoin d'expliquer pourquoi vous n'avez pas posé de question après le premier message, puisque c'est probablement hors sujet.

Quoi qu'il en soit, notez que FOK est une vieille politique de remplissage, que MQ a introduit probablement pour traiter la communication avec OMS, donc vous le trouverez dans tous les bons protocoles OMS, comme FIX, par exemple(comme ce sujet de forum de l'année 2009, avant que MT5 existe).

Donc, à mon avis, je ne vois aucune raison de demander le code de retour 10010 pour un ordre Fill ou Kill, et c'est le point, puisque cette règle est obligatoire et les courtiers et les fournisseurs OMS doivent la respecter.

FIX Trading Community: // Fill or Kill Order
FIX Trading Community: // Fill or Kill Order
  • General Q/A
  • www.fixtradingcommunity.org
Have doubt regarding FoK order type. In my view if order is not filled a reject message should be sent by an exchange instead of cancel. Can someone confirm this? No, rejections are to convey that the requested action was not carried out. A FoK order not being filled does not fall in this category, it is rather "works as designed". It is...
 
Malacarne:

Eh bien, lorsque nous postons sur le forum de MQL5.com, nous supposons que nous parlons à des personnes qui pourraient avoir plusieurs types de besoins lors du codage des conseillers experts ... donc dans ce cas, il est évident que vous pouvez tout simplifier et demander à l'utilisateur de coder un conseiller expert "plus simple", une fois que ses besoins ne sont pas aussi "avancés" que vous pourriez imaginer. Cependant, pour autant que je sache, il existe plusieurs situations où vous ne pouvez pas travailler avec la politique de remplissage FOK.

Laissez-moi vous donner un exemple très simple : supposons que vous travaillez avec des actions et que le volume choisi est de 10.000 actions. Supposons maintenant que ce même conseiller expert travaille avec des "renversements", donc à un signal aléatoire, vous pourriez avoir à envoyer un ordre sur le marché avec un volume égal à 20.000 actions pour exécuter le soi-disant "renversement". Dans ce cas, même les actions très liquides (par exemple les actions brésiliennes de poids lourds PETR4 ou VALE5) peuvent ne pas avoir un volume acheteur ou vendeur égal à 20 000 actions à un moment donné. Dans ce cas, comment traiteriez-vous cette situation dans votre conseiller expert ? Êtes-vous vraiment convaincu que la politique FOK serait la meilleure approche dans ce cas ? Ou essayeriez-vous de considérer ce code 10010 dans votre conseiller expert ?

Comme nous l'avons dit, si vous travaillez en permanence avec de petits lots, la politique de remplissage FOK pourrait être votre meilleure solution. Cependant, parfois les gens ont des besoins plus "avancés"...

L'explication est accrocheuse. J'ai pensé la même chose car la plupart d'entre nous traitent probablement moins d'un million de dollars US par transaction. Sur un marché très liquide comme le Forex, la réalisation partielle d'une commande peut être une chose rare. Mais il ne faut jamais dire jamais. Nous vivons dans un monde de probabilités. Rien n'est certain. Il se peut qu'un courtier coincé divise un lot en 0,5 lot. En termes de considérations pratiques, si un courtier ne peut pas remplir un lot à tout moment, je préfère trouver un autre courtier pour négocier.

Cordialement.

 
Malacarne:

Eh bien, lorsque nous postons sur le forum de MQL5.com, nous supposons que nous parlons à des personnes qui pourraient avoir plusieurs types de besoins lors du codage des conseillers experts ... donc dans ce cas, il est évident que vous pouvez tout simplifier et demander à l'utilisateur de coder un conseiller expert "plus simple", une fois que ses besoins ne sont pas aussi "avancés" que vous pourriez imaginer. Cependant, pour autant que je sache, il existe plusieurs situations où vous ne pouvez pas travailler avec la politique de remplissage FOK.

Laissez-moi vous donner un exemple très simple : supposons que vous travaillez avec des actions et que le volume choisi est de 10.000 actions. Supposons maintenant que ce même conseiller expert travaille avec des "renversements", donc à un signal aléatoire, vous pourriez avoir à envoyer un ordre sur le marché avec un volume égal à 20.000 actions pour exécuter le soi-disant "renversement". Dans ce cas, même les actions très liquides (par exemple les actions brésiliennes de poids lourd PETR4 ou VALE5) peuvent ne pas avoir un volume acheteur ou vendeur égal à 20 000 actions à un moment donné. Dans ce cas, comment traiteriez-vous cette situation dans votre conseiller expert ? Êtes-vous vraiment convaincu que la politique FOK serait la meilleure approche dans ce cas ? Ou essayeriez-vous de considérer ce code 10010 dans votre conseiller expert ?

Comme nous l'avons dit, si vous travaillez en permanence avec de petits lots, la politique de remplissage FOK pourrait être votre meilleure solution. Cependant, parfois les gens ont des besoins plus "avancés"...

Salut Malacarne,

Désolé, mais c'est hors sujet, car en tant que modérateurs, nous ne pouvons pas confondre la réalité (ce que l'utilisateur a réellement publié) et les conditions "si".

En d'autres termes, si l'utilisateur demande quelque chose et publie le code, et que le code a la ligne ci-dessous (comme la première et ancienne), en tant que Modérateurs notre état d'esprit doit considérer qu'il utilise FOK.

request.type_filling=ORDER_FILLING_FOK;

N'est-ce pas le cas ? Si non, je pense que je dois réviser mes concepts de recherche d'erreurs de code et d'analyse de problèmes.

En fait, si vous n'utilisez pas FOK, comme vos cas brésiliens BM&FBovespa, mon état d'esprit va changer et le code de retour 10010 doit être considéré, mais ceci est absolument hors sujet, et peut-être une meilleure discussion au Forum portugais.

Quoi qu'il en soit, merci d'avoir partagé cette information.

 
FinanceEngineer:

L'explication est accrocheuse. J'ai pensé la même chose car la plupart d'entre nous négocient probablement moins d'un million de dollars US par transaction. Sur un marché très liquide comme le Forex, l'exécution partielle d'une commande peut être une chose rare. Mais il ne faut jamais dire jamais. Nous vivons dans un monde de probabilités. Rien n'est certain. Il se peut qu'un courtier coincé divise un lot en 0,5 lot. En termes de considérations pratiques, si un courtier ne peut pas remplir un lot à tout moment, je préfère trouver un autre courtier pour négocier.

Cordialement.

Dans mon exemple, je parlais de volumes d'environ 200 000 USD... Donc, pour autant que je sache, plusieurs d'entre nous négocient plus de 200 000 USD par transaction... :-)
 
FinanceEngineer:

Comme la plupart des gens, j'ai appris le codage MQL5 en regardant le code d'autres personnes. Assez étrangement pour moi, jusqu'à présent je n'ai pas vu de code vérifiant le code 10010. Cependant, il pourrait être utile de le vérifier. Juste au cas où.


BonjourFinanceEngineer, vous ne voyez pas parce que probablement ces cas concernent la politique de remplissageORDER_FILLING_FOK, comme vous l'utilisez aussi, donc, à mon avis, ce n'est pas nécessaire, comme expliqué dans mes autres messages ici.
 
figurelli:

Salut Malacarne,

Désolé mais c'est hors sujet, car en tant que Modérateurs nous ne pouvons pas confondre la réalité (ce que l'utilisateur a réellement posté) et les conditions "si".

En d'autres termes, si l'utilisateur demande quelque chose et publie le code, et que le code a la ligne ci-dessous (comme la première et l'ancienne), en tant que Modérateurs notre état d'esprit doit considérer qu'il utilise la FOK.

Vous ne le pensez pas ? Si non, je pense que je dois réviser mes concepts de recherche d'erreurs de code et d'analyse de problèmes.

En fait, si vous n'utilisez pas FOK, comme dans le cas de votre BM&FBovespa brésilien, mon état d'esprit changera et le code de retour 10010 doit être considéré, mais ceci est absolument hors sujet, et peut-être une meilleure discussion pour le forum portugais.

Quoi qu'il en soit, merci d'avoir partagé cela.

Merci pour votre opinion... Ce n'est pas mon intention d'apporter de la "confusion" dans l'esprit des gens.

Cependant, je ne pense pas que ce soit hors sujet parce que si vous ne vérifiez pas le code 10010, votre conseiller expert pourrait contourner cette possibilité et envoyer des ordres multiples (totalement lié au sujet, vous ne pensez pas ?)...

C'est ce que nous "essayons" d'alerter depuis les deux derniers messages sur ce même sujet...

Raison: