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
DEFPARAM FLATAFTER = HHMMSSParamètres
| Nom | Type | Par défaut | Description |
|---|---|---|---|
FLATAFTER | littéral horaire (HHMMSS) | aucun | Heure 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)
// Close positions, cancel pending orders and stop trading after 15:30
DEFPARAM FLATAFTER = 153000La 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)
// 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.8FLATBEFORE 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)
// 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
ENDIFQuoi 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
DEFPARAMlignes doivent précéder toute autre instruction. PlacerFLATAFTERsous unIFbloc ou une instruction d'ordre provoque une erreur de compilation. - Mauvais format d'heure. La valeur est HHMMSS, pas HHMM. Écrire
1530est 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 = 153000limite 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.
Instructions liées
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.