erreur 4756 - page 2

 
angevoyageur:
Quelles fonctions, classes/méthodes utilisez-vous pour envoyer/modifier vos ordres ?
OrderSend() après avoir configuré leMqlTradeRequest.
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure - Documentation on MQL5
 
RaptorUK:
OrderSend() après la configuration deMqlTradeRequest

Avez-vous vu ceci (de la doc OrderSend) ?

Il convient de noter que la réussite de l'opération de la méthode OrderSend() ne signifie pas toujours la réussite de la transaction lors du placement d'un ordre de marché. Vérifiez la valeur retcode contenant le code de retour du serveur de négociation , et les valeurs du champ deal ou order selon le type d'opération dans lerésultat renvoyé .


Ilserait plus facile de vous aider en voyant le code.

 
angevoyageur:

Avez-vous vu cela (dans le document OrderSend) ?


Ilserait plus facile de vous aider en voyant le code.

Je vérifie le résultat retourné et n'essaie de placer le SL & TP que s'il retourne TRADE_RETCODE_PLACED ou TRADE_RETCODE_DONE.

         if( result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE ) 
            {
            SetTPandSL = false;
            Print("Return code # ", result.retcode, " Bid ", result.bid, " Ask ", result.ask, " Deal price ", result.price);
            }
         else SetTPandSL = true;

         if(SetTPandSL && ECN)
            {
            // now modify Position to add SL & TP
            ZeroMemory(request);
            ZeroMemory(result);
            request.action = TRADE_ACTION_SLTP;                   // setting the TP & SL
            request.symbol = _Symbol;                             // symbol
            request.sl = lastTick.ask - SL_Size * _Point;        // Stop Loss
            request.tp = lastTick.ask + TP_Size * _Point;        // Take Profit  
            
            //--- send a trade request
            OrderSend(request,result);
            
            //--- write the server reply to log  
            Print(__FUNCTION__,": Placeing SL & TP ",result.comment, " Return code # ", result.retcode);  
            if( result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE ) 
               Print("Return code # ", result.retcode, " Bid ", lastTick.bid, " Ask ", lastTick.ask, " Deal price ", 
                  result.price, " SL: ", request.sl, " TP: ", request.tp, " Freeze: ", Freeze, " Stoplevel: ", Stop );
            }
 
RaptorUK:

Je vérifie le résultat retourné et n'essaie de placer le SL & TP que s'il retourne TRADE_RETCODE_PLACED ou TRADE_RETCODE_DONE.


Il convient de noter que la réussite de l'opération de la méthode OrderSend() ne signifie pas toujours la réussite de l'opération lors du placement d'un ordre au marché. Vérifiez la valeurretcode contenant le code de retour du serveur de négociation, et les valeurs du champ deal ou order selon le type d'opération dans lerésultat renvoyé .

Vous devez vérifier le numéro du ticket de transaction :

  if( (result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE) || result.deal == 0) 

Ce n'est pas le dernier mot, si votre deal ticket est 0, votre modification de SL/TP ne s'exécutera pas de toute façon. Je cherche encore...


 
angevoyageur:

Vous devez vérifier le numéro du ticket de transaction :

Ce n'est pas le dernier mot, si votre deal ticket est à 0, votre modification de SL/TP ne sera pas exécutée de toute façon. Je cherche encore...

Je peux le faire, mais le problème est que la transaction a réussi et que la position a été ouverte ... pourtant, lorsque j'ai essayé d'ajouter le SL & TP, il a échoué avec des Stops invalides, même s'ils n'étaient pas invalides. Il semble que je doive attendre que quelque chose se passe avant de pouvoir envoyer la demande pour définir le TP & SL ... mais je ne sais pas vraiment quelle est la chose officielle et documentée que je devrais attendre.

Merci pour votre réponse :-)

 
RaptorUK:

Je peux le faire, mais le problème est que la transaction a réussi et que la position a été ouverte... pourtant, lorsque j'ai essayé d'ajouter le SL et le TP, cela a échoué avec des Stops invalides, même s'ils n'étaient pas invalides. Il semble que je doive attendre que quelque chose se passe avant de pouvoir envoyer la requête pour définir le TP et le SL... mais je ne sais pas vraiment quelle est la chose officielle et documentée que je devrais attendre.

Merci pour la réponse :-)

Je sais. Je vérifie tous les sites mql5 pour trouver une réponse :-D

Edit :

Il n' y a absolument rien sur ce site qui montre comment mettre un sl / tp avec un type d'exécution de transaction dumarché.

En fait j'ai le même problème mais en utilisant PositionOpen à la place de OrderSend, je peux aussi le faire manuellement.

 
angevoyageur:

Je sais. Je vérifie tous les sites mql5 pour trouver une réponse :-D

Modifier :

Il n' y a absolument rien sur ce site qui montre comment mettre un sl / tp avec un type d'exécution de transaction demarché.

En fait, j'ai le même problème mais en utilisant PositionOpen à la place de OrderSend, je peux aussi le faire manuellement.

J'ai trouvé. Il s'agit d'un problème de synchronisation entre votre EA et le serveur commercial. Vous devez utiliser le gestionnaire d'événements OnTradeTransaction().

Le résultat de l'exécution de la demande de transaction sur un serveur envoyée par la fonction OrderSend() peut être suivi par le handler OnTradeTransaction. Il convient de noter que le gestionnaire OnTradeTransaction sera appelé plusieurs fois lors de l'exécution d'une demande de transaction.

Par exemple, lors de l'envoi d'un ordre d'achat sur le marché, celui-ci est traité, un ordre d'achat approprié est créé pour le compte, l'ordre est ensuite exécuté et retiré de la liste des ordres ouverts, puis il est ajouté à l'historique des ordres, une transaction appropriée est ajoutée à l'historique et une nouvelle position est créée. La fonction OnTradeTransaction sera appelée pour chacun de ces événements.

RTFM ;-) Essayez-le... demain pour moi.
 
angevoyageur:

J'ai trouvé. Il s'agit d'un problème de synchronisation entre votre EA et le serveur de commerce. Vous devez utiliser le gestionnaire d'événements OnTradeTransaction().

RTFM ;-) Essayez-le... demain pour moi.
Ahhhh, merci, je vais regarder :-)
 
RaptorUK:
Ahhhh, merci, je vais regarder :-)
Est-ce le fil de discussion que vous avez trouvé ?https://www.mql5.com/en/forum/10850 il rapporte le même problème que celui que je rencontre.
 

Mon EA apporte des erreurs étranges avec le build 778. Le volume de 0.1 est normalisé et clairement non invalide.

2013.03.12 07:29:57 pivots (SILVER,M5) SILVER a échoué ORDER_TYPE_SELL_STOP avec le volume 0.10 ; err# 4756 check code : 10014 commentaires : Volume invalide

2013.03.12 07:20:00 pivots (SILVER,M5) SILVER a échoué ORDER_TYPE_SELL_STOP avec le volume 0.10 ; err# 4756 code de retour : 10014, commentaires du courtier : Volume invalide

Voici le code qui le fait apparaître

      ResetLastError();
      if(OrderCheck(_request,_check)){
         if(!OrderSend(_request,_result)){
            Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," returned code: ",_result.retcode,", broker comments: ",_result.comment);
            return(false);}
         else{
            if(_result.retcode!=(0||TRADE_RETCODE_PLACED||TRADE_RETCODE_DONE)){
               Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," returned code: ",_result.retcode,", broker comments: ",_result.comment);}}}
      else{
         Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," check code: ",_check.retcode," comments: ",_check.comment);
         return(false); }


Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5
Raison: