FLATAFTER
FLATAFTER är en DEFPARAM-parameter som stänger alla positioner och avbryter vilande order efter en bestämd tid varje dag i ProBacktest- och ProOrder-strategier.
Syntax
DEFPARAM FLATAFTER = HHMMSSParametrar
| Namn | Typ | Standard | Beskrivning |
|---|---|---|---|
FLATAFTER | tidslitteral (HHMMSS) | ingen | Tidpunkt på dagen efter vilken alla positioner stängs, väntande ordrar avbryts och nya ordrar blockeras. 24-timmarsklocka, t.ex. 153000 för 3:30 PM. |
Så fungerar det
FLATAFTER deklareras en gång med DEFPARAM högst upp i strategin, före all handelslogik. Från den angivna tidpunkten och framåt stänger plattformen den position som är öppen, avbryter varje väntande order och vägrar nya order resten av handelsdagen. Strategikoden fortsätter själv att köras, den kan bara inte hålla eller lägga affärer efter brytpunkten, och normal drift återupptas vid nästa session.
Tidsliteralen använder formatet HHMMSS i 24-timmarsformat, så 153000 betyder 15:30:00. Inledande nollor kan skrivas för läsbarhet (073000), värdet är numeriskt i vilket fall som helst.
Parametern är det normala sättet att bygga day trading-strategier som aldrig får bära positioner över natten. Den fungerar naturligt ihop med FLATBEFORE, som blockerar handel före en vald tidpunkt, så de två tillsammans begränsar all aktivitet till ett fast intraday-fönster. Jämfört med egenbyggd exitlogik baserad på TIME, den DEFPARAM metoden avbryter även liggande order, ett steg som manuell kod för att nollställa positioner ofta glömmer.
Exempel
Exempel 1, Flat efter 3:30 PM (ProOrder)
// Close positions, cancel pending orders and stop trading after 15:30
DEFPARAM FLATAFTER = 153000Deklarationen bevarad från den officiella referensen. Efter 3:30 PM överlever ingen position eller vilande order, vilket garanterar att strategin avslutar varje dag flat.
Exempel 2, Begränsa ett breakout-system till ett sessionsfönster (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 och FLATAFTER ramar in sessionen. Backtestet speglar då en strategi som alltid är utan position utanför fönstret 08:00 till 17:00, inklusive dess trailing stop-ordrar.
Exempel 3, Undvika en illikvid stängning på indexterminer (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
ENDIFVad RSI-logiken än gör, FLATAFTER garanterar att positionen avvecklas före den tunna handeln vid dagens slut.
Vanliga fel och fallgropar
- Deklareras efter handelslogiken. Alla
DEFPARAMrader måste föregå alla andra instruktioner. Att placeraFLATAFTERunder enIFblock eller en orderinstruktion orsakar ett kompileringsfel. - Fel tidsformat. Värdet är HHMMSS, inte HHMM. Att skriva
1530läses som 00:15:30, inte 15:30:00, vilket nollställer strategin strax efter midnatt i stället för mitt på eftermiddagen. - Tidsramsavvikelse. Brytpunkten avgörs med barupplösning. På ett 1-timmesdiagram blir en
FLATAFTER = 153000brytpunkten kan inte verka exakt 15:30, så intraday-brytpunkter hör till tidsramar som är fina nog att representera tidpunkten. Parametern är meningslös på dags- eller högre tidsramar. - Antaganden om klocka och tidszon. Tiden tolkas mot den klocka plattformen tillämpar på diagrammets barer. När instrumentets börs ligger i en annan tidszon, verifiera den faktiska brytpunkten på diagrammet i stället för att anta att den matchar lokal väggklockstid.
Relaterade instruktioner
FLATBEFORE, DEFPARAM-parameter som håller strategin flat före en angiven tidpunkt.DEFPARAM, deklarerar strategiparametrar högst upp i koden.CumulateOrders, DEFPARAM-parameter som styr stapling av ordrar i samma riktning.QUIT, stoppar strategin helt efter att positionerna stängts.TIME, den aktuella barens tid för egenskrivna tidsvillkor.CurrentTime, klocktidsvärde som kan användas i villkor.ONMARKET, sant så länge någon position är öppen.SELL, stänger hela eller delar av en long-position.