Rejoignez-nous
ProBacktest/probacktest · proorder

FLATBEFORE

FLATBEFORE est un paramètre DEFPARAM qui bloque le trading et maintient une stratégie ProBacktest ou ProOrder hors position avant une heure fixée de la journée. Syntaxe et exemples.

Syntaxe

probuilder
DEFPARAM FLATBEFORE = HHMMSS

Paramètres

NomTypePar défautDescription
FLATBEFORElittéral horaire (HHMMSS)aucunHeure de la journée avant laquelle les positions sont fermées, les ordres en attente annulés et les nouveaux ordres bloqués. Format 24 heures, par ex. 073000 pour 7:30 AM.

Comment ça marche

FLATBEFORE est déclaré une fois avec DEFPARAM en tête de la stratégie, avant toute logique de trading, et elle est lue au démarrage de la stratégie. Avant l'heure indiquée, chaque jour, la plateforme impose un état plat : elle ferme toute position qui serait autrement ouverte, annule les ordres en attente et refuse les nouveaux. Le code de la stratégie continue de s'exécuter pendant cette période, ses calculs tournent et ses variables se mettent à jour, seul l'envoi des ordres est supprimé. À partir de l'heure indiquée, le trading reprend normalement.

La valeur utilise le format HHMMSS sur une horloge de 24 heures, donc 073000 est 07:30:00. Le paramètre ne met pas la stratégie en pause et ne la retarde pas, il agit purement comme un filtre d'accès au trading.

La raison habituelle de filtrer l'ouverture d'une séance est d'éviter l'action des prix erratique et les carnets peu fournis autour de l'ouverture du marché ou des heures nocturnes. Combinée à FLATAFTER, qui impose d'être hors position après une certaine heure, les deux paramètres définissent une fenêtre de trading journalière sans aucune condition horaire écrite à la main.

Exemples

Exemple 1, Aucun trading avant 7:30 AM (ProOrder)

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

La déclaration reprise de la référence officielle. Jusqu'à 7:30 AM chaque jour, la stratégie ne détient rien et ne place rien.

Exemple 2, Écarter l'ouverture volatile du cash (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

Le backtesting avec la fenêtre en place montre comment le système se comporte lorsque la première demi-heure, où les touches de bande sont les plus fréquentes et les moins fiables, est exclue.

Exemple 3, Restreindre un système forex à la séance de Londres (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

Les deux paramètres flat restreignent toute l'activité, entrées, sorties et ordres en attente de la même façon, aux heures de séance choisies.

Erreurs et pièges courants

  • Déclaré après la logique de trading. DEFPARAM déclarations doivent être les premières instructions du programme. Une FLATBEFORE ligne placée après un ordre ou une condition ne compile pas.
  • HHMM au lieu de HHMMSS. DEFPARAM FLATBEFORE = 0930 signifie 00:09:30, et non 09:30:00. Les chiffres des secondes sont obligatoires, donc un filtre à 9:30 AM s'écrit 093000.
  • S'attendre à ce que la stratégie se mette en pause. Le paramètre n'arrête pas l'exécution du code. Les indicateurs, les compteurs et les variables d'état continuent de se mettre à jour avant l'heure limite, seul le placement d'ordres est bloqué. Une logique qui suppose que rien ne s'est exécuté avant l'ouverture de la barrière peut être fausse.
  • Unités de temps grossières. La barrière se résout à la granularité de la bar, donc sur les graphiques d'une heure ou plus l'heure de libération effective peut différer de la valeur littérale, et sur les unités de temps journalières ou supérieures le paramètre ne sert à rien.
  • FLATAFTER, paramètre DEFPARAM qui force la stratégie hors position après une heure définie.
  • DEFPARAM, déclare les paramètres de la stratégie en tête du code.
  • CumulateOrders, paramètre DEFPARAM contrôlant l'empilement des ordres de même direction.
  • QUIT, arrête complètement la stratégie après la clôture des positions.
  • TIME, heure du bar courant pour des conditions horaires écrites à la main.
  • CurrentTime, valeur d'heure réelle utilisable dans des conditions.
  • ONMARKET, vrai tant qu'une position est ouverte.
  • BUY, ouvre une position long ou la renforce.