Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Trailingstop nach x% des geplantem TP starten (http://www.expert-advisor.com/forum/showthread.php?t=7255)

FORWARD 29.09.22 20:53

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 :confused:
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!");
                  }
              } 
            }   
        }
      }


TraumExpert 30.09.22 09:27

Guten Morgen Forward,

nicht nur OrderOpenPrice() vergleichen.

Sondern auch den OrderStoppLoss (). (if OrderStopLoss() ...)

Bei richtiger Anwendung sollte der StoppLoss nicht mehr "zurück springen".

Gruß

TraumExpert

FORWARD 30.09.22 17:32

...super, genau das war´s. Danke für die schnelle Hilfe

Gruß Chris


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:54 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum