Einzelnen Beitrag anzeigen
  #4 (permalink)  
Alt 25.03.20
fintrad0 fintrad0 ist offline
Gesperrter Benutzer
 
Registriert seit: Aug 2017
Beiträge: 16
fintrad0 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von RetepM Beitrag anzeigen
Hi,
eine „quick and dirty“ Lösung. Schreibe das aktuelle High/Low parallel zum OrderSend in zwei Variablen. Danach brauchst Du nur zu prüfen, sind die danach auftretenden High/Low größer bzw. kleiner als die zuvor erfassten „OrderSend High/Low Variablen“.
Grüße
Guter Hinweis, danke!
Jetzt bin ich endlich fertig und der Code scheint auch sauber zu arbeiten. Es mussten doch noch einige Änderungen vorgenommen werden, an die ich anfangs nicht dachte und die mich fast zur Verzweiflung getrieben hätten. Vielleicht hilfts jemandem...

Anzahl Kerzen nach Ordereröffnung:
Code:
int BarsAfterOpen=iBarShift(symbol,PERIOD_M1,OrderOpenTime(),false);

// Wenn BarsAfterOpen == 0 (also während der selben Minute der Eröffnung), liefert High/Low der Kerze einen unsinnigen Wert., Deswegen ...
             
if(BarsAfterOpen < 1) BarsAfterOpen=1;  

//...BarsAfterOpen mindestens 1, bevor High/Low ermittelt wird

 double BuyPeriodHighest = iHigh(symbol,PERIOD_M1,iHighest(symbol,PERIOD_M1,MODE_HIGH,BarsAfterOpen,0));
Hoch/Tief der Trailingstop-Linie muss mindestens bei OrderOpenPrice() +- trailingstart liegen.
Code:
  double BuyInitPeriodHighest = NormalizeDouble(OrderOpenPrice() + (trailingstart*point), digits);
  double BuyPeriodHighest = iHigh(symbol,PERIOD_M1,iHighest(symbol,PERIOD_M1,MODE_HIGH,BarsAfterOpen,0));             

   if(BuyInitPeriodHighest >= BuyPeriodHighest) BuyPeriodHighest = BuyInitPeriodHighest;  // wenn Candlehigh < trailingstart
Wie gesagt, vom Code meines Originalposts ist nicht mehr viel übrig geblieben. Dafür ist meine Erkenntnis gewachsen.

Schönen Gruß
Werner