Freitag, 25. September 2009

Programmierfrage ...

... was ist an dieser Anweisung falsch ...

if (AtrTrailingStop &&
   Position.GetProfitLoss(Close[0], PerformanceUnit.Points) >=
   stopLossPoints*0.75)

{
   // Position über ATR-Stop weiterlaufen lassen
   if ((Low[0] - atrValue) > stopLevel)
   {
      stopLevel = Low[0] - atrValue;
   }

   ExitLongStop (quantity, stopLevel, "ATR-Stop", entryOrder.Name);
}

Es ist eine Anweisung, um Positionen ab einem Gewinn von 3/4 der vorher gesetzten Stop-Punkte mit einem ATR-Stop weiter laufen zu lassen. Wenn ich also als Initial-Stop im NQ 12 Punkte angebe, dann soll ab einem Gewinn von 9 Punkten, der Stop auf ATR-Niveau herangezogen und verwaltet werden.

Auf den ersten Blick sieht die Anweisung gut aus, doch im Live-Betrieb kam es vorgestern zu folgendem Fehler. Ich war im M1-Chart mit 10 Punkten im Gewinn und der ATR-Stop wurde gesetzt, dann dreht der Kurs mehrere Minuten und der ATR-Stop wurd getriggert ... dachte ich ... aber die Position lief weiter bis zum Ende der Trading-Session und endete statt im Gewinn, mit Verlust ... aber wieso ...

Die Erklärung ist einfach und logisch. Ich war 10 Punkte im Gewinn, anschließend aber sank der Gewinn wieder auf unter 9 Punkte, so dass die Anweisung nicht mehr durchlaufen wurde und der Stop nich mehr gesetzt wurde. Da bei NT mit dieser Anweisung an jedem Bar ein Stop gesetzt wird, war beim triggern des ATR-Stop kein Stop mehr im Markt und die Position lief einfach weiter ...

In der Replay-Connection konnte ich den Fehler gut nachstellen und letztendlich beheben.

Beste Grüße
DarthTrader

Keine Kommentare:

Kommentar veröffentlichen

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.