Einzelnen Beitrag anzeigen
  #9 (permalink)  
Alt 13.03.18
next user next user ist offline
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Ceo Beitrag anzeigen
Er zieht den Sl nach aber ich bekomme zwischen drin immer wieder Fehlermeldungen wie z.b.

2018.03.11 23:27:57.088 2017.01.03 09:00:27 EaLong2.0 EURUSD,M15: unknown ticket 24 for OrderModify function
2018.03.11 23:27:57.088 2017.01.03 09:00:26 EaLong2.0 EURUSD,M15: Error 4108
2018.03.11 23:27:57.088 2017.01.03 09:00:26 EaLong2.0 EURUSD,M15: OrderModify error 4108
2018.03.11 23:27:57.088 2017.01.03 09:00:26 EaLong2.0 EURUSD,M15: unknown ticket 24 for OrderModify function
2018.03.11 23:27:57.088 2017.01.03 09:00:25 EaLong2.0 EURUSD,M15: Error 4108

Wo liegt jetzt genau der Fehler?
Zieht er den Stop wirklich nach? Deine Fehler bedeuten alle das selbe: Er kennt KEINE SOLCHE TICKETNUMMER!

Kann es sein, das du deinen Code vor dem Posten um einige Zeilen verringert hast? Falls nicht, dann hast du hier immer noch
die selben Fehler:
Code:
void OnTick()
{
   double StopLossLevel = Bid - StopLoss*Point;
   
   if(OrdersTotal()==0)
   {
      if(Close[2]>Open[2] && Close[1]>Open[1])
      {
         LongTicket = OrderSend(Symbol(),OP_BUY,1,Ask,0,StopLossLevel,0.0,"Buy Order",MagicNumber,clrGreen);
         
         if(LongTicket == -1)
            Print("Error Open Buy",GetLastError());
         else
            Print("Ticket # is: " +string(LongTicket));
      }
   }
   
   if(OrderType()==OP_BUY)
   {
      if(Open[8]< Ask)
         Trailing();
   }
}

void Trailing()
{
   if(OrderSelect(LongTicket,SELECT_BY_TICKET))
      if(!OrderModify(OrderTicket(),OrderOpenPrice(),Open[8],0,0))
         Print("Error ",GetLastError());
      else
         Print("Check");
}
  • In "OrderSend()" hast du zwischen deiner MagicNumber und der Farbe den Parameter "datetime expiration" nicht angegeben.
  • Im mittleren Teil bei "if(OrderType()==OP_BUY)" müsstest du immer einen Fehler bekommen, denn in deinem Code
    selektierst du vorher keine Order.
  • Außerdem sind deine Bedingungen nicht gut. Bei einem erfolglosen Funktionsaufruf gibst du zwar eine Meldung aus,
    setzt deinen Code aber unabhängig weiter fort. Wenn oben "OrderSend()" fehlschlägt, so arbeitest du trotzdem mit "LongTicket" weiter.
  • Du musst den Code richtig "verbinden". Zum Beispiel:
    Code:
    void OnTick()
    {
       double StopLossLevel = Bid - StopLoss*Point;
       
       if(OrdersTotal()==0)
       {
          if(Close[2]>Open[2] && Close[1]>Open[1])
          {
             LongTicket = OrderSend(Symbol(),OP_BUY,1,Ask,0,StopLossLevel,0.0,"Buy Order",MagicNumber,clrGreen);
             
             if(LongTicket == -1)
                Print("Error Open Buy",GetLastError());
             else
                Print("Ticket # is: " +string(LongTicket));
          }
       }
       else
       {
          if(Open[8]< Ask)
             Trailing();
       }
    }
    
    void Trailing()
    {
       if(OrderSelect(LongTicket,SELECT_BY_TICKET))
          if(OrderType() == OP_BUY)
             if(!OrderModify(LongTicket,OrderOpenPrice(),Open[8],0,0))
                Print("Error ",GetLastError());
             else
                Print("Check");
    }