Discussion de l'article "Guide étape par étape pour rédiger un conseiller expert en MQL5 pour les débutants" - page 6
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
Bonjour, je suis en train d'apprendre à écrire des Expert Advisors sur l'exemple de cet article.
Je suis en train d'apprendre à écrire des Expert Advisors sur l'exemple de cet article et j'ai rencontré le problème suivant - en essayant d'envoyer une requête pour une transaction, j'obtiens l'erreur 10014 - wrong volume. J'ai vérifié le volume maximum autorisé pour la transaction SYMBOL_VOLUME_MAX - j'obtiens 0. Mais en même temps, les transactions manuelles sont ouvertes normalement.
Pouvez-vous me dire ce que je fais mal ou où chercher ? J'utilise le code de l'Expert Advisor, qui est joint à l'article.
Je vous remercie.
Bonjour,
Le code semble parfait mais lorsque je l'essaie, j'obtiens l'erreur suivante
2011.11.13 23:39:58 2011.11.01 14:20:00 Alert : The Sell order request could not be completed -error:47562011.11.13 23:39:58 2011.11.01 14:20:00 failed instant sell 1.00 EURUSD at 1.36833 sl : 1.37133 tp : 1.35833 [Invalid request]
Aucune transaction n'est exécutée.
Quelqu'un peut-il m'aider à résoudre ce problème ?
Merci d'avance.
F
Bonjour,
Le code semble parfait mais lorsque je l'essaie, j'obtiens l'erreur suivante
2011.11.13 23:39:58 2011.11.01 14:20:00 Alert : The Sell order request could not be completed -error:47562011.11.13 23:39:58 2011.11.01 14:20:00 failed instant sell 1.00 EURUSD at 1.36833 sl : 1.37133 tp : 1.35833 [Invalid request]
Aucune transaction n'est exécutée.
Quelqu'un pourrait-il nous aider à résoudre ce problème ?
Merci de votre compréhension.
F
J'ai posé la même question et personne n'a répondu.
J'ai trouvé.
Il s'agit d'un bug. Il faut ajouter une ligne de code
ZeroMemory(mrequest) ;
cette ligne doit se trouver avant les lignes mrequest.action=... mrequest.price=... etc.
Bonjour.
Merci beaucoup pour ce guide clair et détaillé.
J'ai un problème. Le programme se compile, mais à la première tentative de création d'une requête, l'erreur suivante apparaît : "Request to set Sell order failed - error code:4756"
Je n'ai rien trouvé dans la documentation. Pouvez-vous me dire ce que je peux faire ou où je peux trouver des informations ?
J'ai un problème. Le programme se compile, mais à la première tentative de création d'une requête, l'erreur suivante apparaît : "Request to set Sell order failed - error code:4756"
Je n'ai rien trouvé dans la documentation. Pouvez-vous me dire ce que l'on peut faire à ce sujet ou où trouver des informations ?
Corrigé, téléchargez la version mise à jour de l'Expert Advisor.
Le problème se situait dans la structure mrequest, qui doit être mise à zéro au préalable à l'aide de la fonction ZeroMemory. Avant les lignes contenant "mrequest.action=TRADE_ACTION_DEAL ;" (p. 199 et 245), vous devez ajouter "ZeroMemory(mrequest) ;".
J'ai posé la même question et personne n'a répondu.
Je l'ai trouvée.
Il s'agit d'un bug. Il faut ajouter une ligne de code
ZeroMemory(mrequest) ;
cette ligne doit se trouver avant les lignes mrequest.action=... mrequest.price=... etc.
Est-il toujours nécessaire de procéder ainsi, c'est-à-dire de mettre à zéro la structure de la requête avant la requête ?
Avant d'envoyer une requête, tous les champs de la structure doivent être initialisés (dans ce cas, cela se fait à l'aide de la fonction ZeroMemory, bien que vous puissiez le faire élément par élément), l'initialisation doit être effectuée après la déclaration de la structure.
Est-ce indiqué dans le manuel de référence ? (Je n'ai pas l'occasion de le vérifier maintenant).
Il s'avère qu'il suffit de déclarer une variable de type structure une fois au niveau global du programme, de l'initialiser une fois et de ne plus revenir à la question de l'utilisation de la fonction ZeroMemory ?
Le manuel dit-il quelque chose à ce sujet ? (Je n'ai pas l'occasion de le vérifier maintenant)
Aucune variable n'est obligée d'être mise à zéro lorsqu'elle est déclarée. C'est le programmeur qui doit nettoyer/assigner toutes les variables lui-même avant de les utiliser.
L'utilisation de variables non initialisées (ou incomplètement initialisées) (en particulier les structures) est une erreur très courante en programmation.
Il s'avère qu'il suffit de déclarer une variable de type structure une fois au niveau global du programme, de l'initialiser une fois et de ne plus revenir à la question de l'utilisation de la fonction ZeroMemory ?
Il vaut mieux initialiser correctement les variables plutôt que de se battre (inutilement et plus dangereusement) avec l'initialisation en la portant au niveau global.
Il est tellement facile de se poser la question "pourquoi je pense que quelqu'un va initialiser les variables et surtout les structures complexes à ma place" ?
Il est très pratique de mettre à zéro les structures sans ZeroMemory gênant lors de la déclaration :