Code:
//Breakeven
if(BreakEven > 0 && OrderStopLoss() > OrderOpenPrice())
{
if ( OrderOpenPrice()-Ask>Point*BreakEven )
{
double BuyStop = OrderOpenPrice();
if(OrderStopLoss() > BuyStop)
OrderModify(OrderTicket(),OrderOpenPrice(), NormalizeDouble(BuyStop,3), OrderTakeProfit(),0,clrRed);
}
}
Hm, hier passiert folgendes:
Eingesprungen wird, wenn v.a. OrderStopLoss()
> OrderOpenPrice() ist.
Über die nächste Zeile wird aber nur eingesprungen, wenn der Ask-Kurs bzgl. des Wertes der Variablen BreakEven
unter! dem OrderOpenPrice() liegt.
Dann wird BuyStop gleich dem OrderOpenPrice(9 gesetzt (warum?) und dann folgt
if(OrderStopLoss() > BuyStop)
Da in der ersten Zeile ja OrderStopLoss > OrderOpenPrice sein muss, ist auch automatisch dann OrderStopLoss() > BuyStop (also OrderOpenPrice()).
Letztendlich wird der StopLoss auf den OrderOpenPrice() wieder tiefer gelegt??
Bei Shorts:
Code:
//Breakeven
if(BreakEven > 0 && OrderStopLoss() > OrderOpenPrice())
{
if (Bid < OrderOpenPrice() - BreakEven* _Point)
{
double SellStop = OrderOpenPrice();
if(OrderStopLoss() > SellStop)
OrderModify(OrderTicket(),OrderOpenPrice()-6*_Point, OrderTakeProfit(),0,clrRed);
}
}
Auch hier steht OrderStopLoss() > OrderOpenPrice(), warum??
Und das
OrderModify(OrderTicket(),OrderOpenPrice()
-6*_Point, OrderTakeProfit(),0,clrRed);
geht gar nicht - Sytaxfehler - da fehlt ein Parameter vor OrderTakeProfit().
Das einfachste wäre, Du setzt unter jedes OrderModify() den Printbefehl
Print("immer irgendwas unterschiedliches")
um nach der Fehlermeldung angezeigt zu bekommen, woher der Fehler stammt.
traderdoc