Also musste echt jetzt Grübeln...
Vielleicht vorab die Idee bzw. Vorgabe des TSL.
1. Order wird platzierst z.B. Buy
2. fester SL wird gesetzt
3. Kurs bewegt sich nach oben, dann wird Breakeven gesetzt.
4. Kurs steigt weiter TSL wird gesetzt und dann nachgezogen.
!! Wichtig ist das wenn Breakeven oder TSL gesetzt wird, diese sich nicht zurück bewegen!!
Bei Long:
PHP-Code:
//SL Long Deals Setzen
for(int b= OrdersTotal()-1; b>= 0; b--)
{
//Eine Order wird ausgewählt
if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES))
//Symbol Order mit Chart prüfen
if(OrderSymbol() == Symbol())
//Wir pruefen ob es sich um eine Kauf Order handelt
if(OrderType() == OP_BUY)
{
if(OrderCloseTime()==0 && OrderStopLoss()==0)
{
double StopLoss= NormalizeDouble(OrderOpenPrice()- (SL_Point* _Point),Digits);
bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss,OrderTakeProfit(),0,clrYellow);
}
//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);
Print("163 immer irgendwas unterschiedliches");
}
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0)
{
if(Ask - OrderOpenPrice() > Point * TrailingStop)
{
if(OrderStopLoss() < Ask - Point * TrailingStop)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Ask - Point * TrailingStop, OrderTakeProfit(), 0, clrMediumSeaGreen);
Print("179 immer irgendwas unterschiedliches");
}
}
}
}
}
So wie ich dich verstehe, meinst du die Abfragen über BuyStop/SellStop u. OrderOpenPrice sollte ich weglassen? Wie müsste das dann genau lauten?
Bei Short:
PHP-Code:
//SL Short Deals Setzen
for(int b= OrdersTotal()-1; b>=0; b--)
{
//Wir wählen eine Order aus
if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES))
//Symbol Order mit Chart prüfen
if(OrderSymbol() == Symbol())
//Wir pruefen ob es sich um eine Kauf Order handelt
if(OrderType() == OP_SELL)
{
if(OrderCloseTime()==0 && OrderStopLoss()==0)
{
double StopLoss= NormalizeDouble(OrderOpenPrice()+ (SL_Point* _Point),Digits);
bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss,OrderTakeProfit(),0,clrYellow);
}
//Breakeven
if(BreakEven > 0 && OrderStopLoss() < OrderOpenPrice())
{
if (Bid < OrderOpenPrice() - BreakEven* _Point)
{
double SellStop = OrderOpenPrice();
if(OrderStopLoss() > SellStop)
OrderModify(OrderTicket(),OrderOpenPrice()-6*_Point,
NormalizeDouble(SellStop,3),
OrderTakeProfit(),0,clrRed);
Print("214 immer irgendwas unterschiedliches");
}
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0)
{
if((OrderOpenPrice() - Bid) > (Point * TrailingStop))
{
if((OrderStopLoss() > (Bid + Point * TrailingStop)) || (OrderStopLoss() == 0))
{
OrderModify(OrderTicket(), OrderOpenPrice(), Bid + Point * TrailingStop, OrderTakeProfit(), 0, clrDarkOrange);
Print("228 immer irgendwas unterschiedliches");
}
}
}
}
}
Ohje..ich war vermutlich sparsam mit den Parametern
Ich habe das mal Korriegiert hoffe das passt so.
Danke dir für den Tipp mit Print. Hab den Journal mal angeheftet. Leider konnte ich die Fehler nicht rausbekommen... hoffe du kannst mir da weiterhelfen
Danke vorab und schönes Wochenende noch.