Hilfe! Warum der EA einen Handel nicht schließt - Seite 7

 

Finden Sie nicht, dass 20000 Wiederholungsversuche ein bisschen übertrieben sind? Wenn das Schließen 5 Mal hintereinander fehlschlägt, ist es Zeit, aufzuhören.

Es wäre schön, die Fehlermeldung zu drucken, wenn das Schließen fehlschlägt.

 
Ich werde den Troll nicht mehr füttern...
 

Hallo Crossy,

Du hast Recht, ich sehe nur einen Teil Deines Codes und Du hast wahrscheinlich andere Pläne im Kopf, und sicherlich hilft es nicht, 4000 Zeilen Code zu lesen, um einen klaren Kopf zu bekommen - ich auch.

Sie sagten, dass Ihr EA einen Handel nicht schließen kann. Wir müssen also herausfinden, was die Ursache dafür ist, und uns damit befassen. So sehe ich das auch:

:D

#include <stdlib.mqh>   
   ...
for(int pos = OrdersTotal(); pos >= 0 ; pos--) 
   {
   if ( OrderSelect(pos, SELECT_BY_POS, MODE_TRADES) 
        && OrderMagicNumber() == My_Magic_Number
        && OrderSymbol() == Symbol())
      {
       if (OrderType() = OP_BUY) // we close long
         {
         for (int try_to_close = 1; try_to_close <= 100; try_to_close ++)
            {
            bool success = OrderClose (OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, Yellow);
            if (success = false)
               {
               int Error = GetLastError();
               Print ("Unable to close ticket ",OrderTicket()," with error ",ErrorDescription(Error)); // from #include <stdlib.mqh>
               if (TRY_CLOSE_AGAIN_OR_NOT(Error) == false ) break; // 
               }
            }
         }
         
       if (OrderType() = OP_SELL) // we close short
         {
         // do the same with sell
         
         }
      }   
   }
//+------------------------------------------------------------------+
bool TRY_CLOSE_AGAIN_OR_NOT(int err) // True
  {
  switch (err)
     {
      case 1:   return (false); //error_string="no error";                                                 
      case 2:   return (false); //error_string="common error";                                          
      case 3:   return (false); //error_string="invalid trade parameters";                                
      case 4:   Sleep (500); return (true); //error_string="trade server is busy";                               
      case 5:   return (false); //error_string="old version of the client terminal";                  
      case 6:   Sleep (500); return (true); //error_string="no connection with trade server";                 
      case 7:   return (false); //error_string="not enough rights";                                
      case 8:   Sleep (500); return (true); //error_string="too frequent requests";                                
      case 9:   return (false); //error_string="malfunctional trade operation (never returned error)"; 
      case 64:  return (false); //error_string="account disabled";                        
      case 65:  return (false); //error_string="invalid account";                   
      case 128: Sleep (500); return (true); //error_string="trade timeout";                                    
      case 129: return (false); //error_string="invalid price";                               
      case 130: return (false); //error_string="invalid stops";                          
      case 131: return (false); //error_string="invalid trade volume";                 
      case 132: return (false); //error_string="market is closed";                      
      case 133: return (false); //error_string="trade is disabled";                       
      case 134: return (false); //error_string="not enough money";                   
      case 135: return (false); //error_string="price changed";                         
      case 136: return (false); //error_string="off quotes";                              
      case 137: Sleep (500); return (true); //error_string="broker is busy (never returned error)";    
      case 138: return (false); ////error_string="requote";                                 
      case 139: return (false); //error_string="order is locked";                           
      case 140: return (false); //error_string="long positions only allowed";                 
      case 141: return (false); //error_string="too many requests";                               
      //case 145: return (true); //error_string="modification denied because order too close to market";  
      case 146: Sleep (500); return (true); //error_string="trade context is busy";                              
      //case 147: return (true); error_string="expirations are denied by broker";                    
      //case 148: return (true); error_string="amount of open and pending orders has reached the limit"; 
      //case 149: return (true); error_string="hedging is prohibited";                                   
      case 150: return (false); //error_string="prohibited by FIFO rules";  
      default : return (false);         
     }
     
  return(false); // can not manage the err we get out
  }
 

Sie haben also das Problem, dass NICHT ALLE Aufträge geschlossen werden. Dieser Code, den Sie eingefügt haben - wird NIE ALLE Aufträge schließen. Wenn Sie also Hilfe benötigen, fügen Sie den gesamten Code ein, der mit der Schließung von Aufträgen arbeitet. Es ist nicht nötig, den gesamten Code einzufügen (ich verstehe, dass Sie ihn geheim halten wollen), aber Sie werden nie Hilfe bekommen, wenn Sie nicht einen Teil des Codes einfügen, der mit dem Problem zu tun hat (in diesem Fall gibt es KEINEN Code für das Schließen von SHORT-Orders).

 
onewithzachy:

Hallo Crossy,

Du hast Recht, ich sehe nur einen Teil Deines Codes und Du hast wahrscheinlich andere Pläne im Kopf, und sicherlich hilft es nicht, 4000 Zeilen Code zu lesen, um einen klaren Kopf zu bekommen - ich auch.

Sie sagten, dass Ihr EA einen Handel nicht schließen kann. Wir müssen also herausfinden, was die Ursache dafür ist, und uns damit befassen. So sehe ich das auch:

:D


Danke onewithzachy für diese Idee. Es ist überall nützlich, wie es hier ist.

Bitte lassen Sie es noch ein paar Stunden laufen, und ich verspreche, Sie auf dem Laufenden zu halten.

Danke auch an Raptor für seinen netten Beitrag.

Y.

 

Hallo,

Wie ich versprochen habe, nach 6 Stunden funktioniert der EA, alles funktioniert richtig, dank Ihrer

guten Gedanken.

Also, in der Zwischenzeit machen wir weiter und ich hoffe, dass es keine Trubolen geben wird.

Y.

 
crossy:

Hallo,

Wie ich versprochen habe, nach 6 Stunden funktioniert der EA, alles funktioniert richtig, dank Ihrer

guten Gedanken.

Also, in der Zwischenzeit machen wir weiter und ich hoffe, dass es keine Trubolen geben wird.

Y.

Great !,Bitte aktualisieren Sie uns wieder in einer Woche

:D

Grund der Beschwerde: