Rejoindre la communauté
banner_forum
Devenez membre de la plus grande
communauté francophone sur le Forex
Partagez, échangez et apprenez en gagnant des crédits sur votre compte de trading

Cherche aide sur une erreur : Warning sur une fonction => "return value of 'OrderClose' should be checked"

  • richelieu2609

    Bonjour tout le monde,

    Je rencontre un problème sur l'EA que je suis en train de créer:

    " void AnnuleAchat()
    {

    for(int x = OrdersTotal() - 1; x >= 0; x--)
    {
    if(OrderSelect(x,SELECT_BY_POS,MODE_TRADES))
    {
    if (OrderType()==OP_BUYSTOP)
    OrderClose(OrderTicket(), lots, Ask, 3, Brown);
    }
    }
    } "

    La fonction que vous voyez ci-dessus sert à répertorier tous les ordres d'achat ouverts pour les clôturer (du moins c'est ce que je pense).

    L'ennui c'est que MetaEditor m'affiche un avertissement lorsque je veux le compiler ("return value of 'OrderClose' should be checked";).

    Repérez-vous une erreur dans cette portion de code ?
    Comment régler ce problème ?
    Est-ce-que les avertissements empêche un EA de fonctionner ?

    Toute aide est la bienvenue :)
  • Mikiburger

    Bonjour,
    Il me semble que ce code ne va pas fermer tous tes ordres mais uniquement annuler les buy stop.
    Et pour ne plus avoir le message d'erreur, essaye d'écrire un truc du genre:
    Ticket=OrderClose(OrderTicket(), lots, Ask, 3, Brown);
    A la place de:
    OrderClose(OrderTicket(), lots, Ask, 3, Brown);
  • richelieu2609 — en réponse à Mikiburger dans son message #120985

    Mikiburger, le 07/02/2021 dit :
    Bonjour, Il me semble que ce code ne va pas fermer tous tes ordres mais uniquement annuler les buy stop. Et pour ne plus avoir le message d'erreur, essaye d'écrire un truc du genre: Ticket=OrderClose(OrderTicket(), lots, Ask, 3, Brown); A la place de: OrderClose(OrderTicket(), lots, Ask, 3, Brown);


    Merci beaucoup pour votre aide précieuse, Mikiburger !

    Ducoup, j'ai écris à la place "bool Ticket=OrderClose(OrderTicket(), lots, Ask, 3, Brown)" et ça fonctionne MERCI :)

    Mais je ne comprends ce que vous voulez dire par annuler les buystop... Pourriez-vous m'expliquer, s'il vous plaît ?
  • Mikiburger

    Si tu mets :
    if (OrderType()==OP_BUYSTOP)
    bool Ticket=OrderClose(OrderTicket(), lots, Ask, 3, Brown)

    Il y a une sélection sur les ordre stop en buy.
    Donc il ne va fermer que ceux là

    Si tu veux fermer tout les types d'ordre, tu ne dois pas mettre le "if".
    Garde juste :
    bool Ticket=OrderClose(OrderTicket(), lots, Ask, 3, Brown)
  • Mikiburger

    En fait l'idée est de pouvoir vérifier que l'ordre est bien passé et d'avoir une alerte si ce n'est pas le cas.

    Pour ça il faut rajouter après un code du genre:
    if (Ticket<=0) Print("Last Error: ", GetLastError());
  • richelieu2609 — en réponse à Mikiburger dans son message #120999

    Mikiburger, le 08/02/2021 dit :
    En fait l'idée est de pouvoir vérifier que l'ordre est bien passé et d'avoir une alerte si ce n'est pas le cas. Pour ça il faut rajouter après un code du genre: if (Ticket<=0) Print("Last Error: ", GetLastError());


    J'avais intégré cette portion de code mais ça m'a retourné pleins d'erreurs, il faut que je taffe dessus.

    En tout cas, merci pour les explications ça m'aide beaucoup :)
  • Mikiburger

    L'erreur vient peut être du fait que tu as utilisé une variable booléenne.
    Essaye avec "int" à la place de "bool"
  • richelieu2609

    Sauvé...encore une fois !

    Merci beaucoup Mikiburger !