Jetzt beitreten
ProBacktest/probacktest · proorder

SET

SET in ProBacktest and ProOrder introduces order management commands such as SET TARGET PROFIT and SET STOP LOSS. Variants, syntax, and errors explained.

Syntax

probuilder
SET TARGET PROFIT value
SET STOP LOSS value

Parameter

NameTypStandardBeschreibung
valueZahlkeineAbstand vom Einstiegskurs, bei dem der Ausstieg auslöst, in der Einheit, die durch das auf STOP oder TARGET folgende Schlüsselwort vorgegeben ist. Akzeptiert Literale, Variablen und Ausdrücke.

So funktioniert es

SET introduces the two families of exit declarations. SET STOP definiert, wo die Position mit Verlust geschlossen wird, und SET TARGET legt fest, wo sie mit Gewinn geschlossen wird. Jede Familie akzeptiert mehrere Einheiten-Schlüsselwörter: LOSS und PROFIT messen den Abstand in Kurseinheiten, PLOSS und PPROFIT in Punkten, %LOSS und %PROFIT in Prozent, $LOSS und $PROFIT in Kontowährung. Über feste Abstände hinaus, SET STOP akzeptiert außerdem die Trailing-Varianten TRAILING, PTRAILING, %TRAILING und $TRAILING, und beide Seiten akzeptieren BREAKEVEN.

Eine SET-Deklaration ist dauerhaft. Sie gilt für die aktuell offene Position und für jede danach eröffnete Position, bis ein anderer SET-Aufruf auf derselben Seite sie ersetzt. Es gibt genau zwei Slots, einen auf der Stop-Seite und einen auf der Ziel-Seite; innerhalb eines Slots gewinnt der jüngste Aufruf. Unbedingt am Ende des Codes geschrieben, wirkt eine Deklaration als ständige Klammer für alle Trades. Innerhalb von IF-Blöcken geschrieben, passt sie den Ausstieg an, während sich der Trade entwickelt, und genau so wird die Logik für Breakeven und Gewinnsicherung ausgedrückt.

Die Werte sind Abstände vom Einstiegskurs, keine absoluten Kursniveaus. Bei einer long Position erstreckt sich der Stop-Abstand unterhalb des Einstiegs und der Ziel-Abstand oberhalb davon; eine short Position spiegelt beides.

Beispiele

Beispiel 1, Ständige Klammer bei jedem Trade (ProBacktest)

probuilder
// Standing exit bracket, applies to each position the strategy opens
SET TARGET PROFIT 120
SET STOP LOSS 100

Jeder Trade trägt einen Take Profit 120 Preiseinheiten vom Einstieg entfernt und einen Stop 100 Einheiten vom Einstieg entfernt. Dies ist das Beispiel aus der offiziellen Referenz.

Beispiel 2, Prozentbasierte Klammer (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

IF NOT onmarket AND close CROSSES OVER Average[50](close) THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

// Exit at plus 2 percent or minus 1 percent from entry
SET TARGET %PROFIT 2
SET STOP %LOSS 1

Die Prozentvarianten halten die Klammer proportional zum Kurs des Instruments, wodurch derselbe Code über unterschiedlich bepreiste Märkte hinweg wiederverwendbar bleibt.

Beispiel 3, Den Stop nachziehen, während der Trade läuft (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

IF NOT onmarket AND close CROSSES OVER highest[20](high)[1] THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

// Initial stop, replaced by a tighter trailing stop once in profit
IF onmarket AND close - tradeprice < 20 * pointsize THEN
  SET STOP PLOSS 20
ELSIF onmarket THEN
  SET STOP PTRAILING 10
ENDIF

Der Stop-Slot wird auf jedem Bar neu geschrieben, früh im Trade ein fester 20-Punkte-Stop, dann ein 10-Punkte-Trailing-Stop, sobald die Position 20 Punkte im Gewinn liegt. Der jüngste SET-Aufruf auf der Stop-Seite ist immer der aktive.

Häufige Fehler und Stolperfallen

  • SET is not assignment. Variablen werden zugewiesen mit =, wie in a = 10. SET steht nur vor Befehlen zur Orderverwaltung; SET a 10 kompiliert nicht, und STOP LOSS 100 ohne SET kompiliert ebenfalls nicht.
  • Abstände, keine Kursniveaus. SET STOP LOSS 100 platziert den Stop 100 Kurseinheiten vom Einstieg entfernt, nicht beim Kurs 100. Absolute Niveaus müssen zuerst in einen Abstand von TRADEPRICE umgerechnet werden.
  • Ein Slot pro Seite, der letzte Aufruf gewinnt. Zwei SET STOP Zeilen, die beide im selben Bar ausgeführt werden, lassen nur die zweite aktiv. Überlappende IF-Blöcke sind die übliche Ursache für einen Stop, der unbemerkt von der Absicht abweicht.
  • Deklarationen überdauern den Trade. Ein SET-Aufruf gilt weiterhin für zukünftige Positionen, bis er ersetzt wird. Eine bedingte Verengung, die spät in einem Trade auslöst, überträgt sich auf den Einstiegs-Bar des nächsten Trades, sofern der Code die Klammer nicht zurücksetzt, wenn keine Position offen ist.
  • STOP, die Stop-Loss-Seite des SET-Befehls.
  • TARGET, die Take-Profit-Seite des SET-Befehls.
  • BREAKEVEN, verschiebt den Stop oder das Ziel auf den Einstiegskurs.
  • TRAILING, Trailing-Stop-Abstand in Kurseinheiten.
  • PTRAILING, Trailing-Stop-Abstand in Punkten.
  • Set Stop Profit, Stop-Order, platziert in einem Gewinnabstand vom Einstieg.
  • Set Target Loss, Target-Order, die in einem Verlustabstand vom Einstieg platziert wird.
  • PROFIT, Take-Profit-Abstand in Preiseinheiten.
  • LOSS, Stop-Loss-Abstand in Kurseinheiten.
  • PPROFIT, Take-Profit-Abstand in Punkten.
  • PLOSS, Stop-Loss-Abstand in Punkten.