13.03.18
|
Premium Mitglied
|
|
Registriert seit: May 2015
Beiträge: 367
|
|
Zitat:
Zitat von Ceo
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");
}
|