Rejoignez-nous
ProBacktest/probacktest · proorder

TomorrowOpen

TomorrowOpen retarde un ordre ProBacktest ou ProOrder jusqu'à l'ouverture du jour de bourse suivant, comme dans BUY 1 CONTRACT AT MARKET TomorrowOpen pour les stratégies journalières.

Syntaxe

probuilder
AT MARKET TomorrowOpen

Comment ça marche

Par défaut, un ordre au marché envoyé par une stratégie s'exécute au prochain prix disponible. Ajouter TomorrowOpen reporte l'exécution à l'ouverture de la séance suivante. Les conditions sont toujours évaluées sur le bar actuel, seule l'exécution est déplacée au premier prix de la séance suivante.

Le modificateur convient aux stratégies construites autour des données de clôture journalières. Un signal calculé sur le bar journalier terminé ne peut pas raisonnablement être exécuté à cette même clôture, et une exécution quelque part dans la séance overnight n'est pas non plus ce que vise un modèle de fin de journée. Exécuter à l'ouverture officielle du jour suivant garde le backtest honnête et correspond à la façon dont de tels systèmes sont tradés manuellement.

TomorrowOpen diffère de NextBarOpen dans l'unité du délai. NextBarOpen attend l'ouverture de la bar suivante dans l'unité de temps du graphique, quelle que soit cette unité de temps. TomorrowOpen attend toujours l'ouverture de la prochaine séance, même si plusieurs bars intraday se produisent entre-temps. Sur un graphique journalier, les deux coïncident.

Exemples

Exemple 1, Entrer en long à l'ouverture du jour suivant (ProOrder)

probuilder
// Signal: close above the 50-day average, evaluated at end of day
LongConditions = close > average[50](close)

IF NOT LongOnMarket AND LongConditions THEN
  BUY 1 CONTRACT AT MARKET TomorrowOpen
ENDIF

La condition est vérifiée sur le bar journalier terminé, et lorsqu'elle est satisfaite, un contrat est acheté au prix d'ouverture du jour suivant. Cela reprend l'exemple de référence de l'instruction.

Exemple 2, Sortir à l'ouverture suivante plutôt qu'en overnight (ProBacktest)

probuilder
// Leave the trade at tomorrow's open once momentum fades
exitSignal = close < close[3]

IF LongOnMarket AND exitSignal THEN
  SELL AT MARKET TomorrowOpen
ENDIF

Plutôt que de liquider la position dans la clôture ou dans la séance overnight, la sortie est programmée pour la fixation d'ouverture du jour suivant, où les stratégies journalières traitent habituellement.

Exemple 3, Entrée short sur une clôture journalière faible (ProOrder)

probuilder
// Short setups detected on the daily close, filled at the next open
weakClose = close < lowest[10](low)[1]

IF NOT onmarket AND weakClose THEN
  SELLSHORT 1 CONTRACT AT MARKET TomorrowOpen
  SET STOP LOSS 40
ENDIF

Une clôture sous le plus bas des 10 jours précédents déclenche un short qui s'ouvre au premier prix de la séance suivante, avec un stop de protection de 40 points attaché.

Erreurs et pièges courants

  • Ordres au marché uniquement. Le modificateur étend AT MARKET. Il ne se combine pas avec les ordres en attente STOP ou LIMIT niveaux de prix, ces formes d'ordre portent leur propre logique de déclenchement.
  • Mauvaise unité de décalage sur les graphiques intraday. Sur un graphique intraday TomorrowOpen attend le jour suivant, pas la bar suivante. Un code qui vise un décalage d'une seule bar nécessite NextBarOpen à la place. Sur les graphiques journaliers, la distinction disparaît.
  • Le signal peut devenir obsolète pendant la nuit. Les conditions sont évaluées sur la clôture courante, mais l'exécution a lieu après le gap overnight. Un gap défavorable important exécute l'ordre malgré tout, le risque de gap doit donc être géré par la position size ou par le stop, et non par la condition d'entrée.
  • Erreurs de portée. Comme le mot-clé appartient au moteur d'ordres, les indicateurs et screeners qui mentionnent TomorrowOpen ne compilent pas. La logique de signal peut vivre dans un indicateur, mais la ligne d'ordre doit rester dans le code de la stratégie.
  • NextBarOpen, décale l'exécution à l'ouverture du bar suivant dans l'unité de temps du graphique.
  • BUY, ouvre une position long ou la renforce.
  • SELLSHORT, ouvre une position short ou la renforce.
  • SELL, clôture une position long.
  • EXITSHORT, clôture une position short.
  • MARKET, exécution immédiate au prix courant.
  • LONGONMARKET, vrai tant qu'une position long est ouverte.
  • DEFPARAM, paramètres au niveau de la stratégie tels que CumulateOrders.