Word nu lid
ProBacktest/probacktest · proorder

FLATAFTER

FLATAFTER is een DEFPARAM-parameter die in ProBacktest- en ProOrder-strategieën alle posities sluit en pending orders annuleert na een vast tijdstip elke dag.

Syntaxis

probuilder
DEFPARAM FLATAFTER = HHMMSS

Parameters

NaamTypeStandaardBeschrijving
FLATAFTERtijdliteral (HHMMSS)geenTijdstip waarna alle posities worden gesloten, lopende orders worden geannuleerd en nieuwe orders worden geblokkeerd. 24-uursklok, bijv. 153000 voor 3:30 PM.

Hoe het werkt

FLATAFTER wordt één keer gedeclareerd met DEFPARAM bovenaan de strategie, vóór alle trading-logica. Vanaf het opgegeven tijdstip sluit het platform elke open positie, annuleert het elk openstaand order en weigert het nieuwe orders voor de rest van de handelsdag. De strategiecode zelf blijft lopen, hij kan na de grens alleen geen trades aanhouden of plaatsen, en de normale werking hervat in de volgende sessie.

De tijdliteral gebruikt het HHMMSS-formaat op een 24-uursklok, dus 153000 betekent 15:30:00. Voorloopnullen mogen voor de leesbaarheid worden geschreven (073000), de waarde is in beide gevallen numeriek.

De parameter is de standaardmanier om day-tradingstrategieën te bouwen die nooit posities overnight mogen aanhouden. Hij gaat van nature samen met FLATBEFORE, die handel vóór een gekozen tijd blokkeert, zodat de twee samen alle activiteit beperken tot een vast intraday venster. Vergeleken met zelfgebouwde uitstaplogica op basis van TIME, de DEFPARAM aanpak annuleert ook pending orders, een stap die handmatige code om vlak te gaan vaak vergeet.

Voorbeelden

Voorbeeld 1, Flat na 3:30 PM (ProOrder)

probuilder
// Close positions, cancel pending orders and stop trading after 15:30
DEFPARAM FLATAFTER = 153000

De declaratie zoals bewaard uit de officiële referentie. Na 3:30 PM blijft er geen enkele positie of pending order over, wat garandeert dat de strategie elke dag flat eindigt.

Voorbeeld 2, Een breakout-systeem beperken tot een sessievenster (ProBacktest)

probuilder
// 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.8

FLATBEFORE en FLATAFTER omsluiten de sessie. De backtest weerspiegelt dan een strategie die buiten het venster van 08:00 tot 17:00 altijd vlak staat, inclusief de trailing stop-orders.

Voorbeeld 3, Een illiquide close op indexfutures vermijden (ProOrder)

probuilder
// 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
ENDIF

Wat de RSI-logica ook doet, FLATAFTER garandeert dat de positie wordt geliquideerd vóór de dunne end-of-day tape.

Veelvoorkomende fouten en valkuilen

  • Gedeclareerd na de handelslogica. Alle DEFPARAM regels moeten voor elke andere instructie staan. Het plaatsen van FLATAFTER onder een IF blok of een orderinstructie veroorzaakt een compilatiefout.
  • Verkeerd tijdformaat. De waarde is HHMMSS, niet HHMM. Het schrijven van 1530 wordt gelezen als 00:15:30, niet als 15:30:00, waardoor de strategie net na middernacht wordt gesloten in plaats van midden op de middag.
  • Verkeerd afgestemd tijdframe. De afkapgrens werkt op barniveau. Op een 1-uursgrafiek een FLATAFTER = 153000 afkapmoment kan niet precies op 15:30 ingrijpen, dus intraday afkapmomenten horen op tijdframes die fijn genoeg zijn om dat tijdstip weer te geven. De parameter is zinloos op dagtijdframes of hoger.
  • Aannames over klok en tijdzone. De tijd wordt geïnterpreteerd tegen de klok die het platform op de bars van de grafiek toepast. Wanneer de beurs van het instrument in een andere tijdzone zit, controleer dan de effectieve afkaptijd op de grafiek in plaats van aan te nemen dat die overeenkomt met de lokale kloktijd.
  • FLATBEFORE, DEFPARAM-parameter die de strategie vóór een vastgesteld tijdstip flat houdt.
  • DEFPARAM, declareert strategieparameters aan het begin van de code.
  • CumulateOrders, DEFPARAM-parameter die het stapelen van orders in dezelfde richting regelt.
  • QUIT, stopt de strategie volledig na het sluiten van posities.
  • TIME, tijd van de huidige bar voor zelfgeschreven tijdvoorwaarden.
  • CurrentTime, kloktijdwaarde die in voorwaarden kan worden gebruikt.
  • ONMARKET, waar zolang er een positie open is.
  • SELL, sluit de hele long positie of een deel ervan.