Bli medlem idag
ProBacktest/probacktest · proorder

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

probuilder
DEFPARAM FLATBEFORE = HHMMSS

Parametrar

NamnTypStandardBeskrivning
FLATBEFOREtidslitteral (HHMMSS)ingenTidpunkt 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)

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

Deklarationen 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)

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 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)

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

De två flat-parametrarna begränsar all aktivitet, entries, exits och vilande order lika, till de valda sessionstimmarna.

Vanliga fel och fallgropar

  • Deklareras efter handelslogiken. DEFPARAM deklarationer måste vara de första instruktionerna i programmet. En FLATBEFORE rad som placeras efter någon order eller något villkor går inte att kompilera.
  • HHMM i stället för HHMMSS. DEFPARAM FLATBEFORE = 0930 betyder 00:09:30, inte 09:30:00. Sekundsiffrorna är obligatoriska, så en spärr vid 9:30 AM skrivs 093000.
  • 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.
  • 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.