Rejoignez-nous
ProBacktest/probacktest · proorder

LongTriggered

LongTriggered dans ProBacktest et ProOrder renvoie vrai lorsqu'une entrée long a été exécutée sur un bar donné. Utilisez-le pour détecter les exécutions d'ordres en attente bar par bar.

Syntaxe

probuilder
LongTriggered
probuilder
LongTriggered[N]

Paramètres

NomTypePar défautDescription
Nentier0Décalage en bars par rapport au bar courant. 0 est le bar en cours, 1 est le bar précédent, et ainsi de suite.

Comment ça marche

Chaque fois qu'une stratégie ouvre une position long, ProBacktest et ProOrder enregistrent l'exécution sur le bar où elle a eu lieu. LongTriggered lit cet enregistrement : elle renvoie true sur un bar où une entrée long a été exécutée et false partout ailleurs. L'index optionnel décale la recherche dans le passé, de sorte que LongTriggered[1] demande si une entrée long a été exécutée sur la bar précédente.

La distinction avec LongOnMarket importe surtout avec les ordres en attente. Une entrée stop ou limite peut être exécutée en cours de bar et son stop de protection ou son objectif peut aussi se déclencher dans le même bar. Dans ce cas LongOnMarket est déjà redevenu false au moment où le code s'exécute à la clôture de la bar, et le trade serait invisible pour les contrôles d'état de position. LongTriggered renvoie toujours vrai pour ce bar, de sorte que la stratégie peut réagir à l'exécution même lorsque la position n'existe plus.

Le flag est lié aux seules entrées. Les sorties, les touches de stop et les touches de target ne l'activent pas. Pour les entrées short, le pendant est ShortTriggered.

Exemples

Exemple 1, Comptage des entrées long (ProOrder)

probuilder
// increment a counter each time a long entry fills
if LongTriggered then
  buycount = buycount + 1
endif

Chaque bar où une entrée long a été exécutée augmente buycount de un. Le compteur peut ensuite conditionner la suite de la logique, par exemple limiter le nombre d'entrées par séance.

Exemple 2, Pause après une exécution récente (ProBacktest)

probuilder
// entry signal: close crosses above the 50-bar average
signal = close crosses over Average[50](close)

// skip new entries on the bar right after a fill
IF signal AND NOT LongTriggered[1] AND NOT LongOnMarket THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

LongTriggered[1] vérifie si une entrée long a été exécutée sur le bar précédent. La condition bloque les entrées enchaînées sur des bars consécutifs, un simple filtre de temporisation.

Exemple 3, Détection d'une entrée et d'une sortie sur le même bar (ProOrder)

probuilder
// pending entry above the prior high, protective stop attached
IF NOT OnMarket THEN
  BUY 1 CONTRACT AT high[1] STOP
  SET STOP PLOSS 20
ENDIF

// a fill happened this bar but no position remains:
// the stop was hit within the same bar
IF LongTriggered AND NOT LongOnMarket THEN
  stoppedSameBar = 1
ENDIF

Quand LongTriggered est vrai tant que LongOnMarket est faux sur la même bar, l'entrée et son stop se sont tous deux exécutés dans cette bar. Le drapeau stoppedSameBar peut alors servir à rester à l'écart ou à ajuster l'entrée suivante.

Erreurs et pièges courants

  • L'indice par défaut est le bar courant. LongTriggered sans crochets signifie LongTriggered[0]. Le code qui vise à vérifier le bar précédent doit écrire LongTriggered[1] explicitement. Supposer que la forme sans indice regarde une bar en arrière est une erreur de lecture fréquente.
  • Le confondre avec LongOnMarket. LongOnMarket indique l'état de la position ouverte, LongTriggered signale l'événement d'exécution de l'entrée. Un trade qui s'ouvre et se referme dans la même bar affiche LongTriggered = TRUE et LongOnMarket = FALSE sur cette bar.
  • Entrées uniquement. L'indicateur ne réagit jamais de lui-même aux sorties ni aux stops touchés. Détecter une sortie au stop sur le même bar demande de le combiner avec une vérification de l'état de la position, comme dans l'Exemple 3.
  • Indice négatif ou non entier. N doit être un entier non négatif. Passer un décalage négatif ou une valeur fractionnaire est invalide, il n'y a pas d'anticipation sur les bars futurs.
  • ShortTriggered, l'indicateur équivalent pour les entrées short.
  • LONGONMARKET, vrai tant qu'une position long est ouverte.
  • SHORTONMARKET, vrai tant qu'une position short est ouverte.
  • ONMARKET, vrai tant qu'une position est ouverte.
  • BUY, ouvre une position long.
  • MARKET, exécution immédiate au prix du marché courant.
  • TRADEPRICE, le prix d'entrée de la position courante.
  • TRADEINDEX, l'indice du bar d'entrée de la position courante.