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
DEFPARAM FLATBEFORE = HHMMSSParameter
| Name | Typ | Standard | Beschreibung |
|---|---|---|---|
FLATBEFORE | Zeitliteral (HHMMSS) | keine | Tageszeit, 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)
// Stay flat until 07:30, then trade normally
DEFPARAM FLATBEFORE = 073000Die 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)
// 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.5Backtesting 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)
// 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
ENDIFDie 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. EinFLATBEFOREZeile, die nach einer Order oder Bedingung steht, lässt sich nicht kompilieren. - HHMM statt HHMMSS.
DEFPARAM FLATBEFORE = 0930bedeutet 00:09:30, nicht 09:30:00. Die Sekundenstellen sind Pflicht, ein Filter für 9:30 Uhr wird also geschrieben als093000. - 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.
Verwandte Befehle
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.