Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 29.09.22
FORWARD FORWARD ist offline
Neues Mitglied
 
Registriert seit: Jan 2018
Beiträge: 8
FORWARD befindet sich auf einem aufstrebenden Ast
Standard Trailingstop nach x% des geplantem TP starten

Hallo zusammen,

leider komme ich gerade bei dem Problem nicht weiter, dass ich den Trailingstop erst nach einem bestimmten Prozentsatz des anvisierten Takeprofits scharf schalte.
Dia Abfrage an sich ist kein Problem, der Trailingstop startet auch.
Leider springt er aber auch immer wieder zurück und sichert somit nicht so ab, wie ich es mir vorgestellt habe
Der Ansatz ist, dass z.B. nach 80% im Gewinn der Trailingstop sehr eng nachgezogen wird...
hier der Code:

Code:
//+------------------------------------------------------------------+
//| Trailling Stop                                                   |
//+------------------------------------------------------------------+
void dtrailing()
 { double ATR   =  iATR(NULL,Timeframe_ATRTS,ATRPeriodTS,1);
   double     ATRSL  = NormalizeDouble(ATR,Digits);
   for(int i = OrdersTotal()-1; i >=0; i--)
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {
         if (OrderMagicNumber()==Magic)
            {
            if (OrderType() == OP_BUY)
               {
               SLPT = Bid -ATRSL- Points * Point;
               SLPT = NormalizeDouble(SLPT,Digits);
               if (Bid - OrderOpenPrice() >= (( OrderTakeProfit() - OrderOpenPrice() ) /100)*StartTrailing)   
                  {
                  if (OrderModify(OrderTicket(),OrderOpenPrice(),SLPT,OrderTakeProfit(),OrderExpiration()))
                  Print(__FUNCTION__,"Stoploss von Order>",OrderTicket(),"angepasst!");
                  }
               }
            else  if (OrderType() == OP_SELL)
               {
               SLPT = Ask +ATRSL+ Points * Point;
               SLPT = NormalizeDouble(SLPT,Digits);
               if (OrderOpenPrice() - Ask >= (( OrderOpenPrice() - OrderTakeProfit() ) /100)*StartTrailing)   
                  {
                  if (OrderModify(OrderTicket(),OrderOpenPrice(),SLPT,OrderTakeProfit(),OrderExpiration()))
                  Print(__FUNCTION__,"Stoploss von Order>",OrderTicket(),"angepasst!");
                  }
               }  
            }    
         }
      }