Jetzt beitreten
ProBacktest/probacktest · proorder

LongTriggered

LongTriggered in ProBacktest und ProOrder gibt wahr zurück, wenn auf einem bestimmten Bar ein Long-Einstieg ausgeführt wurde. Damit lassen sich Ausführungen aus offenen Orders Bar für Bar erkennen.

Syntax

probuilder
LongTriggered
probuilder
LongTriggered[N]

Parameter

NameTypStandardBeschreibung
NGanzzahl0Bar-Offset relativ zum aktuellen Bar. 0 ist der aktuelle Bar, 1 ist die vorherige Bar, und so weiter.

So funktioniert es

Jedes Mal, wenn eine Strategie eine Long-Position eröffnet, erfassen ProBacktest und ProOrder die Ausführung auf dem Bar, auf dem sie stattgefunden hat. LongTriggered liest diesen Eintrag: es gibt true auf einer Bar zurück, auf der ein Long-Einstieg ausgeführt wurde, und sonst false. Der optionale Index verschiebt die Abfrage in die Vergangenheit, sodass LongTriggered[1] fragt ab, ob ein Long-Einstieg auf dem vorherigen Bar ausgeführt wurde.

Die Unterscheidung von LongOnMarket ist bei Pending Orders am wichtigsten. Ein Stop- oder Limit-Einstieg kann innerhalb der Bar ausgeführt werden, und sein Schutz-Stop oder Ziel kann ebenfalls innerhalb derselben Bar auslösen. In diesem Fall LongOnMarket ist bereits wieder false, wenn der Code beim Bar-Schluss läuft, und der Trade wäre für Prüfungen des Positionszustands unsichtbar. LongTriggered meldet für diesen Bar weiterhin true, sodass die Strategie auf die Ausführung reagieren kann, auch wenn die Position nicht mehr existiert.

Das Flag ist nur an Einstiege gebunden. Ausstiege, Stop-Treffer und Target-Treffer setzen es nicht. Für Short-Einstiege ist das Gegenstück ShortTriggered.

Beispiele

Beispiel 1, Long-Einstiege zählen (ProOrder)

probuilder
// increment a counter each time a long entry fills
if LongTriggered then
  buycount = buycount + 1
endif

Jeder Bar, an dem ein Long-Einstieg ausgeführt wurde, erhöht buycount um eins. Der Zähler kann dann weitere Logik steuern, zum Beispiel die Anzahl der Einstiege pro Session begrenzen.

Beispiel 2, Pause nach einer frischen Ausführung (ProBacktest)

probuilder
// entry signal: close crosses above the 50-bar average
signal = close crosses over Average[50](close)

// skip new entries on the bar right after a fill
IF signal AND NOT LongTriggered[1] AND NOT LongOnMarket THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

LongTriggered[1] prüft, ob ein Long-Einstieg auf dem vorherigen Bar ausgeführt wurde. Die Bedingung verhindert unmittelbar aufeinanderfolgende Einstiege auf benachbarten Bars, ein einfacher Cooldown-Filter.

Beispiel 3, Einstieg und Ausstieg auf demselben Bar erkennen (ProOrder)

probuilder
// pending entry above the prior high, protective stop attached
IF NOT OnMarket THEN
  BUY 1 CONTRACT AT high[1] STOP
  SET STOP PLOSS 20
ENDIF

// a fill happened this bar but no position remains:
// the stop was hit within the same bar
IF LongTriggered AND NOT LongOnMarket THEN
  stoppedSameBar = 1
ENDIF

Wenn LongTriggered ist wahr, solange LongOnMarket auf derselben Bar falsch ist, wurden Einstieg und Stop beide innerhalb dieser Bar ausgeführt. Das Flag stoppedSameBar kann dann genutzt werden, um auszusetzen oder den nächsten Einstieg anzupassen.

Häufige Fehler und Stolperfallen

  • Der Standardindex ist der aktuelle Bar. LongTriggered ohne Klammern bedeutet LongTriggered[0]. Code, der den vorherigen Bar prüfen soll, muss schreiben LongTriggered[1] explizit. Anzunehmen, die bloße Form schaue einen Bar zurück, ist ein häufiges Missverständnis.
  • Die Verwechslung mit LongOnMarket. LongOnMarket meldet den Status offener Positionen, LongTriggered meldet das Ereignis der Einstiegsausführung. Ein Trade, der innerhalb eines Bars geöffnet und geschlossen wird, zeigt LongTriggered = TRUE und LongOnMarket = FALSE auf diesem Bar.
  • Nur Einstiege. Das Flag reagiert von sich aus nie auf Ausstiege oder Stop-Treffer. Um einen Stop-Out auf demselben Bar zu erkennen, muss es mit einer Prüfung des Positionsstatus kombiniert werden, wie in Beispiel 3.
  • Negativer oder nicht ganzzahliger Index. N muss eine nicht negative ganze Zahl sein. Ein negativer Offset oder ein gebrochener Wert ist ungültig, es gibt keinen Vorausblick auf zukünftige Bars.
  • ShortTriggered, das entsprechende Flag für Short-Einstiege.
  • LONGONMARKET, wahr, solange eine Long-Position offen ist.
  • SHORTONMARKET, wahr, solange eine Short-Position offen ist.
  • ONMARKET, wahr, solange eine Position offen ist.
  • BUY, eröffnet eine Long-Position.
  • MARKET, sofortige Ausführung zum aktuellen Marktkurs.
  • TRADEPRICE, der Einstiegskurs der aktuellen Position.
  • TRADEINDEX, der Bar-Index des Einstiegs der aktuellen Position.