Problème de saisie d'ordres multiples pour un compte en direct avec un courtier spécifique - page 3
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
BonjourFinanceEngineer, il serait peut-être mieux de commencer à vérifier le problème des ordres multiples de votre code original, car si nous faisons cela, nous allons probablement aborder d'autres points critiques ici et ne pas perdre le focus, qu'en pensez-vous ?
Bonjour figurelli
Voici mon nouveau code. J'ai changé depuis que j'ai soulevé le problème des ordres multiples sur ce fil.
Jusqu'à présent, ce code fonctionne bien avec plusieurs brokers. Aucun problème d'ordre multiple n'a encore été trouvé après le changement. BlindMist peut essayer ce code pour voir s'il peut éviter le problème d'ordre multiple avec ce courtier.
Bonjour figurelli
Voici mon nouveau code. J'ai changé depuis que j'ai soulevé le problème des ordres multiples sur ce fil.
Jusqu'à présent, ce code fonctionne bien avec plusieurs brokers. Aucun problème d'ordre multiple n'a encore été trouvé après le changement. BlindMist peut essayer ce code pour voir s'il peut éviter le problème d'ordre multiple avec ce courtier.
Veuillez utiliser le bouton SRC lorsque vous postez un code.
Le code que vous avez posté ne peut pas éviter (tous) les ordres doubles, et au contraire il peut provoquer des ordres doubles dans certains cas.
Veuillez utiliser le bouton SRC lorsque vous postez un code.
Le code que vous avez posté ne peut pas éviter (tous) les doubles ordres, et au contraire il peut provoquer des doubles ordres dans certains cas.
Bonjour figurelli
Voici mon nouveau code. J'ai changé depuis que j'ai soulevé le problème des ordres multiples sur ce fil.
Jusqu'à présent, ce code fonctionne bien avec plusieurs brokers. Aucun problème d'ordre multiple n'a encore été trouvé après le changement. BlindMist peut essayer ce code pour voir s'il peut éviter le problème d'ordre multiple avec ce courtier.
SalutFinanceEngineer, notez que dans votre code original vous avez Print("OrderSend Code : "...) à if { } et else { }.
Mais else { } a un break, et votre code de débogage montre retcode = 10008 (TRADE_RETCODE_PLACED) x 10.
Donc, par déduction, vous avez imprimé le débogage de la condition if { } et votre break n'a jamais été utilisé.
Maintenant vous avez changé votre code, et il semble plus clair, mais notez que vous ne testez plus la valeur de retour de OrderSend(), seulement le result.retcode. Vous pourriez corriger cela en utilisant la variable checkOrderSend (*** regardez ici), que j'ai demandé auparavant :
Donc, à mon avis, la première chose à faire est de corriger ce test et de vérifier à nouveau en utilisant le même courtier problématique que vous avez signalé. Si le problème ne se reproduit pas, félicitations, vous avez vraiment résolu le bug, c'est-à-dire que cela n'indique pas que votre code est à l'épreuve du futur ou le plus sûr, mais que nous avons trouvé le bug.
En fait, vous pouvez oublier ou éviter de modifier à nouveau votre code, puisque le bogue ne se reproduit pas, cependant, dans ce cas, vous devez être conscient que vous ne testez plus la valeur de retour de OrderSend().
J'espère que ces informations pourront vous aider.
BonjourFinanceEngineer, notez que dans votre code original vous avez Print("OrderSend Code : "...) à if { } et else { }.
Mais else { } a un break, et votre code de débogage montre retcode = 10008 (TRADE_RETCODE_PLACED) x 10.
Donc, par déduction, vous avez imprimé le débogage de la condition if { } et votre break n'a jamais été utilisé.
Maintenant vous avez changé votre code, et il semble plus clair, mais notez que vous ne testez plus la valeur de retour de OrderSend(), seulement le result.retcode. Vous pouvez corriger cela en utilisant la variable checkOrderSend (*** regardez ici), que j'ai demandé auparavant :
Donc, à mon avis, la première chose à faire est de corriger ce test et de vérifier à nouveau en utilisant le même courtier problématique que vous avez signalé. Si le problème ne se reproduit pas, félicitations, vous avez vraiment résolu le bug, c'est-à-dire que cela n'indique pas que votre code est à l'épreuve du futur ou le plus sûr, mais que nous avons trouvé le bug.
En fait, vous pouvez oublier ou éviter de modifier à nouveau votre code, puisque le bogue ne se reproduit pas, cependant, dans ce cas, vous devez être conscient que vous ne testez plus la valeur de retour de OrderSend().
J'espère que ces informations pourront vous aider.
Qu'en est-il du code de retour 10010 ?
L'ordre à double entrée peut se produire sur n'importe quel courtier, la probabilité de l'obtenir avec Alpari est simplement plus grande car vous recevez beaucoup plus de ticks.
Qu'en est-il du code retourné 10010 ?
L'ordre à double entrée peut se produire sur n'importe quel courtier, la probabilité de l'obtenir avec Alpari est simplement plus grande car vous recevez beaucoup plus de ticks.
SalutFinanceEngineer, notez que dans votre code original vous avez Print("OrderSend Code : "...) à if { } et else { }.
Mais else { } a un break, et votre code de débogage montre retcode = 10008 (TRADE_RETCODE_PLACED) x 10.
Donc, par déduction, vous avez imprimé le débogage de la condition if { } et votre break n'a jamais été utilisé.
Maintenant vous avez changé votre code, et il semble plus clair, mais notez que vous ne testez plus la valeur de retour de OrderSend(), seulement le result.retcode. Vous pouvez corriger cela en utilisant la variable checkOrderSend (*** regarder ici), que j'ai demandé auparavant :
Donc, à mon avis, la première chose à faire est de corriger ce test et de vérifier à nouveau en utilisant le même courtier problématique que vous avez signalé. Si le problème ne se reproduit pas, félicitations, vous avez vraiment résolu le bug, c'est-à-dire que cela n'indique pas que votre code est à l'épreuve du futur ou le plus sûr, mais que nous avons trouvé le bug.
En fait, vous pouvez oublier ou éviter de modifier votre code à nouveau, puisque le bug ne se reproduit pas, cependant, dans ce cas, vous devez faire attention que vous ne testez plus la valeur de retour de OrderSend().
J'espère que ces informations pourront vous aider.
Bonjour
Je sais que cela peut paraître étrange. Quand 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.
Avec ce nouveau code, je n'ai pas de problème de commandes multiples. J'ai utilisé Alpari UK qui a la réputation d'envoyer beaucoup de ticks. Mon code n'est peut-être pas parfait mais pensez à ceci. Il y a un certain nombre de codes retournés qui doivent être vérifiés dans Meta Trader 5.
Le premier d'entre eux est la valeur retournée par OrderCheck, le second est la valeur retournée par OrderSend et le troisième est la valeur retournée assignée à result.retcode. Je pense que quelles que soient les deux premières valeurs renvoyées, ce qui devrait vraiment nous intéresser le plus est la dernière plus le montant du volume réellement exécuté.
Donc, sur la base de ce fait, j'ai simplifié mon code en allant directement vérifier result.retcode. Veuillez me corriger si je me trompe. Je pense que l'exécution des ordres dans MT5 est certainement beaucoup plus sophistiquée que dans MT4 et beaucoup d'entre nous sont confus.
Si nous ne pouvons pas construire un cas clair en utilisant uniquement la logique, alors nous pouvons construire un cas clair en utilisant des expériences. Je recommande donc à BlindMist ou à toute autre personne d'essayer ce code avec son courtier pour voir si le fait de ne pas vérifier la fonction OrderSend peut être réellement utile.
Cordialement.
Si vous me demandez à moi, comme je l'ai déjà dit, 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.
J'ai demandé à tous ceux qui participent à ce sujet. J'ai manqué votre message sur le code 10010, où est-il ?
J'ai demandé à tous ceux qui participent à ce sujet. J'ai manqué votre message sur le code 10010, où est-il ?
Bonjour Alain,
Ce n'est pas clair pour moi ce que tu as besoin de savoir, puisque nous parlons juste du nouveau code de FinanceEngineer, et d'un conseil sur le test du code de retour de OrderSend() qui a été changé 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 en parler, vous et d'autres modérateurs, connaissez-vous des cas où ce code de test est vraiment nécessaire pour les ordres FOK (Fill Or Kill), que vous pourriez partager avec nous ?
Merci d'avance.
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.
Avec ce nouveau code, je n'ai pas de problème de commandes multiples. J'ai utilisé Alpari UK qui a la réputation d'envoyer beaucoup de ticks. Mon code n'est peut-être pas parfait mais pensez à ceci. Il y a un certain nombre de codes retournés qui doivent être vérifiés dans Meta Trader 5.
Le premier d'entre eux est la valeur retournée par OrderCheck, le second est la valeur retournée par OrderSend et le troisième est la valeur retournée assignée à result.retcode. Je pense que quelles que soient les deux premières valeurs renvoyées, ce qui devrait vraiment nous intéresser le plus est la dernière plus le montant du volume réellement exécuté.
Donc, sur la base de ce fait, j'ai simplifié mon code en allant directement vérifier result.retcode. Veuillez me corriger si je me trompe. Je pense que l'exécution des ordres dans MT5 est certainement beaucoup plus sophistiquée que dans MT4 et beaucoup d'entre nous sont confus.
Si nous ne pouvons pas construire un cas clair en utilisant uniquement la logique, alors nous pouvons construire un cas clair en utilisant des expériences. Je recommande donc à BlindMist ou à toute autre personne d'essayer ce code avec son courtier pour voir si le fait de ne pas vérifier la fonction OrderSend peut être réellement utile.
Cordialement.