FLATBEFORE
FLATBEFORE är en DEFPARAM-parameter som blockerar handel och håller en ProBacktest- eller ProOrder-strategi flat före en bestämd tid på dagen. Syntax och exempel.
Syntax
DEFPARAM FLATBEFORE = HHMMSSParametrar
| Namn | Typ | Standard | Beskrivning |
|---|---|---|---|
FLATBEFORE | tidslitteral (HHMMSS) | ingen | Tidpunkt på dagen före vilken positioner stängs, väntande ordrar avbryts och nya ordrar blockeras. 24-timmarsklocka, t.ex. 073000 för 7:30 AM. |
Så fungerar det
FLATBEFORE deklareras en gång med DEFPARAM högst upp i strategin, före all handelslogik, och läses när strategin startar. Före den angivna tidpunkten varje dag tvingar plattformen fram ett läge utan position: den stänger varje position som annars skulle vara öppen, avbryter väntande order och avvisar nya. Strategikoden fortsätter att köras under den perioden, dess beräkningar utförs och dess variabler uppdateras, bara orderläggningen hindras. Från den angivna tidpunkten och framåt sker handeln normalt.
Värdet använder formatet HHMMSS med 24-timmarsklocka, så 073000 är 07:30:00. Parametern pausar eller fördröjer inte strategin, den fungerar enbart som en handelsspärr.
Det vanliga skälet att grinda sessionens öppning är att hoppa över den oberäkneliga prisrörelsen och tunna orderböcker runt marknadens öppning eller nattens timmar. Kombinerat med FLATAFTER, som tvingar fram en stängd position efter en viss tid, definierar de två parametrarna ett dagligt handelsfönster utan några handskrivna tidsvillkor.
Exempel
Exempel 1, Ingen handel före 7:30 AM (ProOrder)
// Stay flat until 07:30, then trade normally
DEFPARAM FLATBEFORE = 073000Deklarationen bevarad från den officiella referensen. Fram till 7:30 AM varje dag håller strategin ingenting och lägger ingenting.
Exempel 2, Hoppa över den volatila cash-öppningen (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 med fönstret på plats visar hur systemet beter sig när den första halvtimmen, där bandberöringar är vanligast och minst tillförlitliga, utesluts.
Exempel 3, Begränsa ett forex-system till London-sessionen (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
ENDIFDe två flat-parametrarna begränsar all aktivitet, entries, exits och vilande order lika, till de valda sessionstimmarna.
Vanliga fel och fallgropar
- Deklareras efter handelslogiken.
DEFPARAMdeklarationer måste vara de första instruktionerna i programmet. EnFLATBEFORErad som placeras efter någon order eller något villkor går inte att kompilera. - HHMM i stället för HHMMSS.
DEFPARAM FLATBEFORE = 0930betyder 00:09:30, inte 09:30:00. Sekundsiffrorna är obligatoriska, så en spärr vid 9:30 AM skrivs093000. - Att förvänta sig att strategin pausar. Parametern stoppar inte kodkörningen. Indikatorer, räknare och tillståndsvariabler fortsätter att uppdateras före brytpunkten, bara orderläggning blockeras. Logik som antar att ingenting kördes innan grinden öppnas kan vara fel.
- Grova tidsramar. Grinden löses upp med bar-granularitet, så på diagram med en timme eller mer kan den faktiska frisläppningstiden skilja sig från det bokstavliga värdet, och på dags- eller högre tidsramar har parametern inget syfte.
Relaterade instruktioner
FLATAFTER, DEFPARAM-parameter som tvingar strategin att vara flat efter 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.BUY, öppnar eller utökar en long-position.