Rejoignez-nous
ProBacktest/probacktest · proorder

FLATAFTER

FLATAFTER est un paramètre DEFPARAM qui clôture toutes les positions et annule les ordres en attente après une heure fixée chaque jour dans les stratégies ProBacktest et ProOrder.

Syntaxe

probuilder
DEFPARAM FLATAFTER = HHMMSS

Paramètres

NomTypePar défautDescription
FLATAFTERlittéral horaire (HHMMSS)aucunHeure de la journée après laquelle toutes les positions sont fermées, les ordres en attente annulés et les nouveaux ordres bloqués. Format 24 heures, par ex. 153000 pour 3:30 PM.

Comment ça marche

FLATAFTER est déclaré une fois avec DEFPARAM en tête de la stratégie, avant toute logique de trading. À partir de l'heure indiquée, la plateforme ferme la position ouverte, annule tous les ordres en attente et refuse les nouveaux ordres pour le reste de la journée de trading. Le code de la stratégie continue de tourner, il ne peut simplement plus détenir ni passer de trades au-delà de l'heure limite, et le fonctionnement normal reprend à la séance suivante.

Le littéral horaire utilise le format HHMMSS sur une horloge de 24 heures, donc 153000 signifie 15:30:00. Les zéros initiaux peuvent être écrits pour la lisibilité (073000), la valeur est numérique dans les deux cas.

Le paramètre est la façon standard de construire des stratégies de day trading qui ne doivent jamais conserver de positions au-delà de la séance. Il se marie naturellement avec FLATBEFORE, qui bloque le trading avant une heure choisie, de sorte que les deux ensemble confinent toute l'activité à une fenêtre intraday fixe. Comparée à une logique de sortie artisanale fondée sur TIME, le DEFPARAM approche annule aussi les ordres en attente, une étape que le code de mise à plat manuel oublie souvent.

Exemples

Exemple 1, Hors position après 3:30 PM (ProOrder)

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

La déclaration reprise de la référence officielle. Après 3:30 PM, aucune position ni ordre en attente ne subsiste, ce qui garantit que la stratégie termine chaque journée hors position.

Exemple 2, Confiner un système de breakout à une fenêtre de séance (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 et FLATAFTER encadrent la séance. Le backtest reflète alors une stratégie toujours hors position en dehors de la fenêtre 08:00 à 17:00, y compris ses ordres de trailing stop.

Exemple 3, Éviter une clôture illiquide sur les futures sur indices (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

Quoi que fasse la logique du RSI, FLATAFTER garantit que la position est liquidée avant le flux ténu de fin de séance.

Erreurs et pièges courants

  • Déclaré après la logique de trading. Tout DEFPARAM lignes doivent précéder toute autre instruction. Placer FLATAFTER sous un IF bloc ou une instruction d'ordre provoque une erreur de compilation.
  • Mauvais format d'heure. La valeur est HHMMSS, pas HHMM. Écrire 1530 est lu comme 00:15:30, et non 15:30:00, ce qui solde la stratégie juste après minuit au lieu du milieu d'après-midi.
  • Décalage d'unité de temps. Le seuil se résout à la granularité du bar. Sur un graphique 1 heure, un FLATAFTER = 153000 limite ne peut pas agir exactement à 15:30 ; les coupures intraday doivent donc porter sur des unités de temps assez fines pour représenter l'heure. Le paramètre n'a aucun sens en journalier ou au-delà.
  • Hypothèses d'horloge et de fuseau horaire. L'heure est interprétée selon l'horloge que la plateforme applique aux bars du graphique. Lorsque la place de cotation de l'instrument se situe dans un autre fuseau horaire, vérifiez l'heure limite effective sur le graphique plutôt que de supposer une correspondance avec l'heure locale.
  • FLATBEFORE, paramètre DEFPARAM qui maintient la stratégie hors position avant 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.
  • SELL, clôture tout ou partie d'une position long.