FLATBEFORE
FLATBEFORE is een DEFPARAM-parameter die het traden blokkeert en een ProBacktest- of ProOrder-strategie flat houdt voor een vast tijdstip op de dag. Syntaxis en voorbeelden.
Syntaxis
DEFPARAM FLATBEFORE = HHMMSSParameters
| Naam | Type | Standaard | Beschrijving |
|---|---|---|---|
FLATBEFORE | tijdliteral (HHMMSS) | geen | Tijdstip waarvoor posities worden gesloten, lopende orders worden geannuleerd en nieuwe orders worden geblokkeerd. 24-uursklok, bijv. 073000 voor 7:30 AM. |
Hoe het werkt
FLATBEFORE wordt één keer gedeclareerd met DEFPARAM bovenaan de strategie, vóór alle trading-logica, en wordt gelezen wanneer de strategie start. Vóór het opgegeven tijdstip dwingt het platform elke dag een positieloze staat af: het sluit elke positie die anders open zou staan, annuleert openstaande orders en weigert nieuwe. De strategiecode blijft in die periode uitvoeren, de berekeningen lopen en de variabelen worden bijgewerkt, alleen het plaatsen van orders wordt onderdrukt. Vanaf het opgegeven tijdstip verloopt het traden normaal.
De waarde gebruikt het HHMMSS-formaat op een 24-uursklok, dus 073000 is 07:30:00. De parameter pauzeert of vertraagt de strategie niet, hij werkt puur als handelspoort.
De gebruikelijke reden om de opening van een sessie af te schermen is het overslaan van de onregelmatige price action en de dunne orderboeken rond de marktopening of de nachtelijke uren. Gecombineerd met FLATAFTER, die na een bepaald tijdstip een platte positie afdwingt, bakenen de twee parameters een dagelijks handelsvenster af zonder handmatig geschreven tijdvoorwaarden.
Voorbeelden
Voorbeeld 1, Niet traden voor 7:30 AM (ProOrder)
// Stay flat until 07:30, then trade normally
DEFPARAM FLATBEFORE = 073000De declaratie zoals bewaard uit de officiële referentie. Tot 7:30 AM houdt de strategie elke dag niets aan en plaatst zij niets.
Voorbeeld 2, De volatiele cash open overslaan (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 met het venster erin laat zien hoe het systeem zich gedraagt wanneer het eerste half uur, waar aanrakingen van de banden het vaakst voorkomen en het minst betrouwbaar zijn, wordt uitgesloten.
Voorbeeld 3, Een forexsysteem beperken tot de Londense sessie (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 twee flat-parameters beperken alle activiteit, entries, exits en pending orders evenzeer, tot de gekozen sessie-uren.
Veelvoorkomende fouten en valkuilen
- Gedeclareerd na de handelslogica.
DEFPARAMdeclaraties moeten de eerste instructies in het programma zijn. EenFLATBEFOREregel die na een order of conditie staat compileert niet. - HHMM in plaats van HHMMSS.
DEFPARAM FLATBEFORE = 0930betekent 00:09:30, niet 09:30:00. De secondencijfers zijn verplicht, dus een poort om 9:30 AM wordt geschreven als093000. - Verwachten dat de strategie pauzeert. De parameter stopt de uitvoering van de code niet. Indicatoren, tellers en toestandsvariabelen blijven vóór de afkaptijd bijwerken, alleen het plaatsen van orders is geblokkeerd. Logica die ervan uitgaat dat er niets is uitgevoerd voordat de poort opengaat kan verkeerd zijn.
- Grove tijdframes. De poort wordt op barniveau opgelost, dus op grafieken van een uur of meer kan de effectieve vrijgavetijd afwijken van de letterlijke waarde, en op dagelijkse of hogere tijdframes heeft de parameter geen nut.
Gerelateerde instructies
FLATAFTER, DEFPARAM-parameter die de strategie na een vastgesteld tijdstip flat dwingt.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.BUY, opent een long positie of breidt deze uit.