FLATAFTER
FLATAFTER ist ein DEFPARAM-Parameter, der in ProBacktest- und ProOrder-Strategien jeden Tag nach einer festgelegten Uhrzeit alle Positionen schließt und schwebende Orders storniert.
Syntax
DEFPARAM FLATAFTER = HHMMSSParameter
| Name | Typ | Standard | Beschreibung |
|---|---|---|---|
FLATAFTER | Zeitliteral (HHMMSS) | keine | Tageszeit, nach der alle Positionen geschlossen, ausstehende Orders storniert und neue Orders blockiert werden. 24-Stunden-Uhr, z. B. 153000 für 3:30 PM. |
So funktioniert es
FLATAFTER wird einmal mit DEFPARAM am Anfang der Strategie, vor jeder Trading-Logik. Ab der angegebenen Uhrzeit schließt die Plattform jede offene Position, storniert jede schwebende Order und weist für den Rest des Handelstages neue Orders ab. Der Strategiecode selbst läuft weiter, er kann nur über den Cutoff hinaus keine Trades halten oder aufgeben, und der normale Betrieb setzt in der nächsten Session wieder ein.
Das Zeitliteral verwendet das HHMMSS-Format im 24-Stunden-Format, also 153000 bedeutet 15:30:00. Führende Nullen können zur Lesbarkeit geschrieben werden (073000), der Wert ist in beiden Fällen numerisch.
Der Parameter ist der Standardweg, um Daytrading-Strategien zu bauen, die niemals Positionen über Nacht halten dürfen. Er passt natürlich zu FLATBEFORE, der den Handel vor einer gewählten Zeit blockiert, sodass beide zusammen alle Aktivität auf ein festes Intraday-Fenster begrenzen. Verglichen mit selbst gebauter Ausstiegslogik auf Basis von TIME, der DEFPARAM Ansatz storniert auch Pending-Orders, ein Schritt, den manueller Code zum Schließen von Positionen oft vergisst.
Beispiele
Beispiel 1, Flat nach 3:30 PM (ProOrder)
// Close positions, cancel pending orders and stop trading after 15:30
DEFPARAM FLATAFTER = 153000Die aus der offiziellen Referenz übernommene Deklaration. Nach 3:30 PM überlebt keine Position und keine schwebende Order, was garantiert, dass die Strategie jeden Tag flat endet.
Beispiel 2, Ein breakout-System auf ein Sitzungsfenster begrenzen (ProBacktest)
// Trade only between 08:00 and 17:00
DEFPARAM FLATBEFORE = 080000
DEFPARAM FLATAFTER = 170000
// Buy a breakout of the highest high of the last 20 bars
IF close crosses over highest[20](high)[1] THEN
BUY 1 CONTRACT AT MARKET
ENDIF
SET STOP %TRAILING 0.8FLATBEFORE und FLATAFTER umschließen die Session. Der Backtest spiegelt dann eine Strategie, die außerhalb des Fensters von 08:00 bis 17:00 immer flat ist, einschließlich ihrer Trailing-Stop-Orders.
Beispiel 3, Einen illiquiden Schluss bei Index-Futures vermeiden (ProOrder)
// Force flat 15 minutes before the cash close
DEFPARAM FLATAFTER = 214500
DEFPARAM CumulateOrders = false
rsiVal = RSI[14](close)
IF rsiVal crosses under 30 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
IF LongOnMarket AND rsiVal crosses over 60 THEN
SELL AT MARKET
ENDIFWas auch immer die RSI-Logik tut, FLATAFTER stellt sicher, dass die Position vor dem dünnen Handel zum Tagesschluss liquidiert wird.
Häufige Fehler und Stolperfallen
- Nach der Handelslogik deklariert. Alle
DEFPARAMZeilen müssen vor jedem anderen Befehl stehen. Das PlatzierenFLATAFTERunter einemIFBlock oder eine Order-Anweisung verursacht einen Compile-Fehler. - Falsches Zeitformat. Der Wert ist HHMMSS, nicht HHMM. Schreibt man
1530wird als 00:15:30 gelesen, nicht als 15:30:00, wodurch die Strategie kurz nach Mitternacht statt am Nachmittag glattgestellt wird. - Nicht passende Zeiteinheit. Die Grenze wird auf Bar-Granularität aufgelöst. Auf einem 1-Stunden-Chart ein
FLATAFTER = 153000Abschaltung kann nicht genau um 15:30 greifen, daher gehören Intraday-Abschaltungen auf Zeiteinheiten, die fein genug sind, um die Uhrzeit darzustellen. Der Parameter ist auf Tages- oder höheren Zeiteinheiten bedeutungslos. - Annahmen zu Uhrzeit und Zeitzone. Die Uhrzeit wird anhand der Uhr interpretiert, die die Plattform auf die Bars des Charts anwendet. Wenn die Börse des Instruments in einer anderen Zeitzone liegt, prüfen Sie die tatsächliche Grenzzeit im Chart, anstatt eine Übereinstimmung mit der lokalen Uhrzeit anzunehmen.
Verwandte Befehle
FLATBEFORE, DEFPARAM-Parameter, der die Strategie vor einer festgelegten Zeit flat hält.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.SELL, schließt eine Long-Position ganz oder teilweise.