Jetzt beitreten
ProBacktest/probacktest · proorder

FLATBEFORE

FLATBEFORE ist ein DEFPARAM-Parameter, der den Handel blockiert und eine ProBacktest- oder ProOrder-Strategie vor einer festgelegten Tageszeit flat hält. Syntax und Beispiele.

Syntax

probuilder
DEFPARAM FLATBEFORE = HHMMSS

Parameter

NameTypStandardBeschreibung
FLATBEFOREZeitliteral (HHMMSS)keineTageszeit, vor der Positionen geschlossen, ausstehende Orders storniert und neue Orders blockiert werden. 24-Stunden-Uhr, z. B. 073000 für 7:30 AM.

So funktioniert es

FLATBEFORE wird einmal mit DEFPARAM am Anfang der Strategie, vor jeder Trading-Logik, und wird beim Start der Strategie gelesen. Vor der angegebenen Uhrzeit erzwingt die Plattform täglich einen flachen Zustand: Sie schließt jede Position, die sonst offen wäre, storniert schwebende Orders und weist neue ab. Der Strategiecode wird in diesem Zeitraum weiter ausgeführt, seine Berechnungen laufen und seine Variablen werden aktualisiert, nur die Orderaufgabe wird unterdrückt. Ab der angegebenen Uhrzeit läuft das Trading normal weiter.

Der Wert verwendet das Format HHMMSS im 24-Stunden-Format, daher 073000 ist 07:30:00. Der Parameter pausiert oder verzögert die Strategie nicht, er wirkt rein als Handelsfilter.

Der übliche Grund, den Beginn einer Session zu sperren, ist das Auslassen der unsteten Kursbewegung und der dünnen Orderbücher rund um die Markteröffnung oder die Nachtstunden. Kombiniert mit FLATAFTER, das nach einer bestimmten Zeit Flat-Stellung erzwingt, definieren die beiden Parameter ein tägliches Handelsfenster ohne handgeschriebene Zeitbedingungen.

Beispiele

Beispiel 1, Kein Handel vor 7:30 AM (ProOrder)

probuilder
// Stay flat until 07:30, then trade normally
DEFPARAM FLATBEFORE = 073000

Die aus der offiziellen Referenz übernommene Deklaration. Bis 7:30 AM hält die Strategie jeden Tag nichts und platziert nichts.

Beispiel 2, Die volatile Kassaeröffnung überspringen (ProBacktest)

probuilder
// Ignore the first 30 minutes after the 09:00 open
DEFPARAM FLATBEFORE = 093000
DEFPARAM FLATAFTER = 172500

// Mean-reversion entry on Bollinger band touch
lowerBand = BollingerDown[20](close)

IF close crosses under lowerBand THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

SET TARGET %PROFIT 1
SET STOP %LOSS 0.5

Backtesting mit aktivem Fenster zeigt, wie sich das System verhält, wenn die erste halbe Stunde, in der Bandberührungen am häufigsten und am wenigsten zuverlässig sind, ausgeschlossen wird.

Beispiel 3, Ein Forex-System auf die London-Sitzung beschränken (ProOrder)

probuilder
// Trade only after the London open, flat again in the evening
DEFPARAM FLATBEFORE = 090000
DEFPARAM FLATAFTER = 200000
DEFPARAM CumulateOrders = false

fastMA = ExponentialAverage[9](close)
slowMA = ExponentialAverage[21](close)

IF fastMA crosses over slowMA THEN
  BUY 1 LOT AT MARKET
ENDIF

IF LongOnMarket AND fastMA crosses under slowMA THEN
  SELL AT MARKET
ENDIF

Die beiden flat-Parameter beschränken jede Aktivität, Einstiege, Ausstiege und schwebende Orders gleichermaßen, auf die gewählten Sitzungsstunden.

Häufige Fehler und Stolperfallen

  • Nach der Handelslogik deklariert. DEFPARAM -Deklarationen müssen die ersten Befehle im Programm sein. Ein FLATBEFORE Zeile, die nach einer Order oder Bedingung steht, lässt sich nicht kompilieren.
  • HHMM statt HHMMSS. DEFPARAM FLATBEFORE = 0930 bedeutet 00:09:30, nicht 09:30:00. Die Sekundenstellen sind Pflicht, ein Filter für 9:30 Uhr wird also geschrieben als 093000.
  • Erwarten, dass die Strategie pausiert. Der Parameter hält die Codeausführung nicht an. Indikatoren, Zähler und Zustandsvariablen werden vor der Grenzzeit weiter aktualisiert, nur die Orderplatzierung ist blockiert. Logik, die annimmt, dass vor dem Öffnen der Sperre nichts gelaufen ist, kann falsch sein.
  • Grobe Zeiteinheiten. Die Sperre wird mit Bar-Granularität aufgelöst, auf Charts von einer Stunde oder mehr kann die tatsächliche Freigabezeit daher vom wörtlichen Wert abweichen, und auf täglichen oder höheren Zeiteinheiten hat der Parameter keinen Zweck.
  • FLATAFTER, DEFPARAM-Parameter, der die Strategie nach einer festgelegten Zeit flat stellt.
  • DEFPARAM, deklariert Strategieparameter am Anfang des Codes.
  • CumulateOrders, DEFPARAM-Parameter, der das Stapeln von Orders in dieselbe Richtung steuert.
  • QUIT, stoppt die Strategie vollständig, nachdem die Positionen geschlossen wurden.
  • TIME, Zeit des aktuellen Bars für handgeschriebene Zeitbedingungen.
  • CurrentTime, Uhrzeitwert, der in Bedingungen verwendbar ist.
  • ONMARKET, wahr, solange eine Position offen ist.
  • BUY, eröffnet eine Long-Position oder baut sie aus.