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

 

Du wirst das Problem haben, dass dir niemand antwortet, wenn du nicht den SRC-Button benutzt, um deinen Code zu posten :D

 
crossy:

Hallo Freunde,


OrderT ist die Ticketnummer der Bestellung,




Mein PROBLEM ist: Der EA schließt den Handel manchmal sehr gut ab, aber manchmal schließt der EA den Handel, ABER er sucht weiterhin nach dem Ticket, um ihn zu schließen, obwohl er bereits geschlossen wurde.

(Ich erhalte die Fehlermeldung: "Unknown ticket number.." .

Ich glaube, ich habe einen logischen Fehler.

Vielen Dank für Ihre freundliche Hilfe.

Y

Es ist sehr, sehr einfach......

Beantworten Sie nur diese einfache Frage und Sie werden Ihre Antwort haben...

Sie geben die TICKET-Nummer an die Funktion weiter, damit das Ticket geschlossen werden kann ... warum machen Sie dann eine Schleife durch ALLE anderen Aufträge? Sie kennen bereits die Ticket-Nummer, die Sie schließen müssen ... warum die Schleife?

 
...
   for(int cnt = OrdersTotal()-1; cnt >= 0 ; cnt--) 
   {
      CodeY = false;
      if ( OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) )
      {
         CodeY    = true;
         OrderS   = OrderSymbol();
         OrderT   = OrderTicket();
         OrderM   = OrderMagicNumber();
         OrderTyp = OrderType();
         OrderL   = OrderLots();
      }   
      if ( CodeY && OrderS == Pair1 && OrderTyp == OP_BUY && OrderM == MAG &&.... )
    
         CLOSE_Single_P(Pair1,"LONG",OrderT,OrderL);

//-----------------------------------------------+
void CLOSE_Single_P(string SYMB, string TREN, int TICKET, double LOTT)
{
   double PRC;
   bool Check = false;

   for ( int cntt=0; cntt<20000; cntt++ )
   {
      if ( Check )
      {
         Check_Ini();
         return;
      }
      for ( int vvv = OrdersTotal()-1; vvv >= 0; vvv-- )
      {  
         if ( OrderSelect(vvv, SELECT_BY_POS, MODE_TRADES) )
         {   
            Check = false;
            if ( TREN == "LONG" )
              PRC = MarketInfo(SYMB,MODE_BID);
            else
            if ( TREN == "SHORT" )
               PRC = MarketInfo(SYMB,MODE_ASK);
         
            Check = OrderClose(TICKET,LOTT,PRC,Slippage,Yellow);
            if ( Check )
               break;
         }      
      } 
   }
   return;
}
//-----------------------------------------------+

Ich hoffe, dass es jetzt klarer ist.

Danke

 
RaptorUK:

Es ist sehr, sehr einfach...

Beantworten Sie nur diese einfache Frage und Sie haben Ihre Antwort...

Sie geben die TICKET-Nummer an die Funktion weiter, damit das Ticket geschlossen werden kann ... warum machen Sie dann eine Schleife durch ALLE anderen Aufträge? Sie kennen die Ticket-Nummer, die Sie schließen müssen, bereits ... warum die Schleife?


Danke Raptor, ich habe es einmal ohne ORDERSELECT gemacht, aber es hatte den gleichen Fehler.

Y.

 
Ich habe bereits auf der allerersten Seite einen Hinweis gegeben. https://www.mql5.com/en/forum/139543
 

Danke onewithzachy, und ich habe getan, was du vorgeschlagen hast, und ich bekam die Fehlermeldung

dass es das TICKET nicht gefunden hat.

 
crossy:

Hallo Freunde,


OrderT ist die Ticketnummer der Bestellung,




Mein PROBLEM ist: Der EA schließt den Handel manchmal sehr gut ab, aber manchmal schließt der EA den Handel, ABER er sucht weiterhin nach dem Ticket, um ihn zu schließen, obwohl er bereits geschlossen wurde.

(Ich erhalte die Fehlermeldung: "Unknown ticket number.." .

Ich glaube, ich habe einen logischen Fehler.

Vielen Dank für Ihre freundliche Hilfe.

Y

Es ist sehr, sehr einfach......

Beantworten Sie nur diese einfache Frage und Sie haben Ihre Antwort...

Sie geben die TICKET-Nummer an die Funktion weiter, damit das Ticket geschlossen werden kann ... warum machen Sie dann eine Schleife durch ALLE anderen Aufträge? Sie kennen bereits die Ticket-Nummer, die Sie schließen müssen ... warum die Schleife?

 
onewithzachy:
Ich habe bereits auf der allerersten Seite einen Hinweis gegeben. https://www.mql5.com/en/forum/139543
Und ich habe auch die Antwort gegeben... https://www. mql5.com/en/forum/139543
 
crossy:


Danke Raptor, ich habe es einmal ohne ORDERSELECT gemacht, aber es hatte den gleichen Fehler.

Sie lesen nicht, was ich geschrieben habe und fragen... Warum die Schleife? Was ist die Funktion der Schleife in dieser Situation?
 
...
   for(int cnt = OrdersTotal()-1; cnt >= 0 ; cnt--) 
   {
      CodeY = false;
      if ( OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) )
      {
         CodeY    = true;
         OrderS   = OrderSymbol();
         OrderT   = OrderTicket();
         OrderM   = OrderMagicNumber();
         OrderTyp = OrderType();
         OrderL   = OrderLots();
      }   
      if ( CodeY && OrderS == Pair1 && OrderTyp == OP_BUY && OrderM == MAG &&.... )
    
         CLOSE_Single_P(Pair1,"LONG",OrderT,OrderL);

//-----------------------------------------------+
void CLOSE_Single_P(string SYMB, string TREN, int TICKET, double LOTT)
{
   double PRC;
   bool Check = false;

   for ( int cntt=0; cntt<20000; cntt++ )
   {
      if ( Check )
      {
         Check_Ini();
         return;
      }
      Check = false;
      if ( TREN == "LONG" )
         PRC = MarketInfo(SYMB,MODE_BID);
      else
      if ( TREN == "SHORT" )
         PRC = MarketInfo(SYMB,MODE_ASK);
         
      Check = OrderClose(TICKET,LOTT,PRC,Slippage,Yellow);
   }
   return;
}
//-----------------------------------------------+

O.K. Hier ist die geänderte Version, die ich den gleichen Fehler bekam.

Y.

Grund der Beschwerde: