Discussion de l'article "Guide étape par étape pour rédiger un conseiller expert en MQL5 pour les débutants" - page 17

 
Très bien ! Je vous remercie de votre attention.
 

J'ai téléchargé le fichier et débogué le code, et il a affiché cet avertissement. Quelqu'un peut-il m'aider ?


la valeur de retour de'OrderSend' devrait être vérifiée


 

Bonjour, je suis un nouveau venu et je teste également le robot.

Essayez ceci :

// OrderSend(mrequest,mresult) ;

bool res=OrderSend(mrequest,mresult) ;

// Obtenir le code de résultat

if(res && (mresult.retcode==10009 || mresult.retcode==10008)) //La demande est terminée ou la commande est passée

{

Alert("Un ordre d'achat a été placé avec succès sur le ticket n° :",mresult.order," !!") ;

}

else

{

Alert("La demande d'ordre d'achat n'a pas pu être complétée -erreur :",GetLastError()) ;

ResetLastError() ;

retour ;

}

Si je me trompe, merci de me corriger !

Source de la recherche : https://www.mql5.com/en/forum/23663

return value of 'OrderSend' should be checked
return value of 'OrderSend' should be checked
  • 2014.05.03
  • www.mql5.com
Hi ! I'm wondering how to do that ...:/ the warning appeared @ the last update...
 

Lors du débogage, j'obtiens toujours une erreur lorsque j'envoie la commande. Je pensais que c'était mon code, mais même quand je teste le fichier mql5 pour le téléchargement, il me donne aussi une erreur.



 
northedan:

Lors du débogage, j'obtiens toujours une erreur lorsque j'envoie la commande. Je pensais que c'était mon code, mais même quand je teste le fichier mql5 pour le téléchargement, il me donne aussi une erreur.



Je pense que l'exemple est en devises, donc la variable lot qui est 0.1 n'est pas adaptée à votre test, essayez de la changer comme ceci (en changeant la variable mrequest.volume) :


double minSymbolLot = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN) ;

mrequest.action = TRADE_ACTION_DEAL ; // exécution immédiate de l'ordre

mrequest.price = NormalizeDouble(latest_price.ask,_Digits) ; // dernier prix demandé

mrequest.sl = NormaliseDouble(latest_price.ask - STP*_Point,_Digits) ; // Stop Loss

mrequest.tp = NormaliseDouble(latest_price.ask + TKP*_Point,_Digits) ; // Take Profit

mrequest.symbol = _Symbol ; // paire de devises

mrequest.volume = minSymbolLot ; // nombre de lots à négocier

mrequest.magic = EA_Magic ; // Numéro magique de l'ordre

mrequest.type = ORDER_TYPE_BUY ; // Ordre d'achat

mrequest.type_filling = ORDER_FILLING_FOK; // Type d'exécution de l'ordre

mrequest.deviation=100 ;

 
Quelqu'un sait-il si je peux utiliser cet EA pour les mini-index ou les mini-dollars ?
 
Sella170:
Est-ce que quelqu'un sait si je peux utiliser cet EA pour les mini-index ou les mini-dollars ?

Avez-vous compris la stratégie ? Etes-vous conscient des risques ? Avez-vous analysé les niveaux SL et TP ? Connaissez-vous les indicateurs techniques utilisés ? Savez-vous les paramétrer ? Savez-vous comment personnaliser les variables pour chaque actif (WIN et WDO) ?

Le code lui-même a été développé pour n'importe quel actif et vous pouvez l'identifier grâce au "_Symbol" et pour n'importe quel temps graphique "_Period".

Il est maintenant important que vous sachiez ce que vous faites lorsque vous exécutez l'EA. Si vous choisissez de le faire, je vous suggère de ne travailler que sur des comptes de démonstration jusqu'à ce que vous maîtrisiez l'outil et que vous ayez une meilleure compréhension du marché boursier.

[ ]'s

 

Les gars,

Voici un code simple et rapide à modifier si vous avez une erreur avec l'ouverture de plusieurs ordres en même temps.

Remplacez ce code : de la ligne 167 -177

   if(PositionSelect(_Symbol)==true) // nous avons une position ouverte
     {
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         Buy_opened=true;  //Il s'agit d'un achat
        }
      else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
        {
         Sell_opened=true; // Il s'agit d'une vente
        }
     }

par ceci :

   int total= PositionsTotal();
   for(int i=0;i<total;i++)
     {
      if(PositionGetSymbol(i)==_Symbol);
        {
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
           {
            Buy_opened=true;  //Il s'agit d'un achat
           }
         else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
           {
            Sell_opened=true; // Il s'agit d'une vente
           }
        }
      }

Merci @Samuel Olowoyo

 
Korobejnik:

Conseillez-nous sur la manière de résoudre le problème. Le conseiller expert ouvre plusieurs positions d'affilée pour acheter, de même pour vendre.

L'Expert Advisor ne voit pas qu'il y a déjà des positions d' achat et de vente ouvertes et en ouvre de nouvelles, malgré le fait qu'il y ait une vérification dans le code.

sur les positions déjà ouvertes. La vérification ne fonctionne pas pour une raison quelconque.

Puisqu'il n'y a pas d'aide de la part des trolls-modérateurs ici, je vais copier la réponse du forum anglais :

Les gars, voici un code simple et rapidement modifiable, si vous avez une erreur avec plusieurs ordres qui s'ouvrent en même temps. Remplacez ce code : de la ligne 167 -177

   if(PositionSelect(_Symbol)==true) // nous avons un poste à pourvoir
     {
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         Buy_opened=true;  //Il s'agit d'un achat
        }
      else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
        {
         Sell_opened=true; // Il s'agit d'une vente
        }
     }

Avec ceci :

   int total= PositionsTotal();
   for(int i=0;i<total;i++)
     {
      if(PositionGetSymbol(i)==_Symbol);
        {
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
           {
            Buy_opened=true;  //Il s'agit d'un achat
           }
         else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
           {
            Sell_opened=true; // Il s'agit d'une vente
           }
        }
      }
 
Locus_Neminis:

Puisque je ne peux pas obtenir d'aide des trolls-modérateurs ici, je vais copier la réponse du forum anglais :

Les gars, c'est un simple code modifiable rapidement si vous avez une erreur avec l'ouverture de plusieurs commandes en même temps. Remplacez ce code : de la ligne 167 -177

par ceci :

Cela n'aidera pas. J'ai un fil de discussion sur mon profil à ce sujet. La cause et la solution du problème s' y trouvent.
Je ne comprends pas les trolls.