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
DEFPARAM FLATBEFORE = HHMMSSParamètres
| Nom | Type | Par défaut | Description |
|---|---|---|---|
FLATBEFORE | littéral horaire (HHMMSS) | aucun | Heure 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)
// Stay flat until 07:30, then trade normally
DEFPARAM FLATBEFORE = 073000La 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)
// 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.5Le 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)
// 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
ENDIFLes 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.
DEFPARAMdéclarations doivent être les premières instructions du programme. UneFLATBEFOREligne placée après un ordre ou une condition ne compile pas. - HHMM au lieu de HHMMSS.
DEFPARAM FLATBEFORE = 0930signifie 00:09:30, et non 09:30:00. Les chiffres des secondes sont obligatoires, donc un filtre à 9:30 AM s'écrit093000. - 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.
Instructions liées
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.