Rejoignez-nous
ProBacktest/probacktest · proorder

SHORTONMARKET

SHORTONMARKET dans ProBacktest et ProOrder est vrai tant qu'une position short est ouverte. Utilisez-le pour protéger les entrées et les sorties short, avec des exemples détaillés.

Syntaxe

probuilder
ShortOnMarket

Comment ça marche

SHORTONMARKET renvoie true tant que la stratégie détient une position short ouverte et false sinon. Elle se lit comme un simple booléen, de sorte qu'elle s'insère directement dans un IF condition, généralement niée avec NOT pour n'autoriser un nouveau short que lorsqu'aucun n'est ouvert.

Elle ne rend compte que des positions short. Pour les positions long, utilisez LONGONMARKET, et pour tester si une position d'un côté ou de l'autre est ouverte, utilisez ONMARKET. Combiner SHORTONMARKET avec une condition de signal est la façon standard de contrôler quand une entrée short ou une sortie short est autorisée.

Exemples

Exemple 1, Protéger une entrée short (ProBacktest)

probuilder
// Sell short when MACD crosses below zero, but only if no short is open
myMACD = MACD[12,26,9](close)
short = myMACD CROSSES UNDER 0
IF NOT ShortOnMarket AND short THEN
    SELLSHORT 1 CONTRACT AT MARKET
ENDIF

C'est le modèle issu de la référence officielle. NOT ShortOnMarket empêche la stratégie d'empiler un second short alors qu'un est déjà en cours.

Exemple 2, Gérer une position short ouverte (ProOrder)

probuilder
DEFPARAM CumulateOrders = false
// Close the short when price reclaims the 20-period average
IF ShortOnMarket AND close CROSSES OVER Average[20](close) THEN
    EXITSHORT AT MARKET
ENDIF

Le bloc de sortie ne s'exécute que lorsqu'un short est ouvert, donc le CROSSES OVER condition n'est vérifiée que lorsqu'elle est pertinente.

Exemple 3, Un seul côté à la fois (ProOrder)

probuilder
DEFPARAM CumulateOrders = false
// Allow a long only when neither side is open
IF NOT ShortOnMarket AND NOT LongOnMarket AND close CROSSES OVER Average[50](close) THEN
    BUY 1 CONTRACT AT MARKET
ENDIF

Tester les deux SHORTONMARKET et LONGONMARKET maintient la stratégie hors marché avant une nouvelle entrée. NOT OnMarket exprime la même protection de façon plus compacte.

Erreurs et pièges courants

  • Short uniquement. SHORTONMARKET ignore les positions long. Une stratégie qui trade dans les deux sens a besoin de LONGONMARKET également, ou ONMARKET pour l'état combiné.
  • Un état, pas un compteur. Il indique seulement si un short est ouvert, pas sa taille. Pour les quantités d'actions ou de contrats, utilisez COUNTOFSHORTSHARES ou COUNTOFPOSITION.
  • Timing sur la même bar. Un short ouvert et fermé à l'intérieur d'un même bar peut ne pas laisser SHORTONMARKET vrai comme le ferait une position sur plusieurs bars. Pour détecter une exécution sur la bar courante, utilisez ShortTriggered.
  • Oublier la protection. Omettre NOT ShortOnMarket sur une entrée permet à un signal persistant d'ajouter des shorts répétés, en particulier avec CumulateOrders activé.