COUNTOFSHORTSHARES
COUNTOFSHORTSHARES renvoie le nombre d'actions ou de lots détenus en short par la stratégie ProBacktest ou ProOrder en cours. Syntaxe, exemples détaillés et pièges courants.
Syntaxe
COUNTOFSHORTSHARESLe mot-clé ne prend aucun paramètre et se lit comme une variable à l'intérieur des conditions et des expressions.
Comment ça marche
Chaque fois que le code de la stratégie s'exécute, COUNTOFSHORTSHARES indique la quantité short exécutée à cet instant. Contrairement à COUNTOFPOSITION, qui est signé, ce mot-clé est toujours nul ou positif, il peut donc être comparé directement à un plafond sans ABS() wrapper. Lorsque la stratégie est hors marché ou long, elle renvoie 0.
Le schéma typique combine trois éléments : DEFPARAM CumulateOrders = true pour que les appels répétés à SELLSHORT les ordres s'empilent au lieu d'être ignorés, une condition d'entrée qui peut se déclencher plus d'une fois, et une protection comme COUNTOFSHORTSHARES < 5 qui empêche la position de croître sans limite. La valeur se met à jour au fur et à mesure des exécutions, de sorte que les sorties partielles via EXITSHORT x SHARES réduire le compte en conséquence.
Les ordres en attente ne sont pas inclus. Un ordre en attente SELLSHORT ... LIMIT un ordre qui n'a pas été exécuté laisse le compte inchangé jusqu'à son exécution. L'équivalent côté long de ce mot-clé est COUNTOFLONGSHARES.
Exemples
Exemple 1, Limiter les entrées short empilées à cinq lots (ProBacktest)
// MACD used as the short trigger
myMACD = MACD[12,26,9](close)
// Short signal, MACD line falls through zero
short = myMACD crosses under 0
// First short entry only when no short is open
IF NOT ShortOnMarket AND short THEN
SELLSHORT 1 CONTRACTS AT MARKET
ENDIF
// Guard, allow re-entry only below five short contracts
MAXSHARES = COUNTOFSHORTSHARES < 5
// Add to the short after a pullback in the strategy's favor
IF TRADEINDEX(1) > 5 AND TRADEPRICE(1) - Close > 10 AND ShortOnMarket AND MAXSHARES THEN
SELLSHORT 1 CONTRACTS AT MARKET
ENDIF
// Trail the whole position
SET STOP TRAILING 50La variable de garde MAXSHARES bloque les nouvelles entrées dès que cinq contrats sont short, ce qui borne l'exposition tout en laissant active la logique de renforcement suiveuse de tendance.
Exemple 2, Sortir d'un short par moitiés (ProOrder)
DEFPARAM CumulateOrders = true
// Take half the short off after 30 points of profit
IF ShortOnMarket AND TRADEPRICE - close >= 30 * pointsize AND COUNTOFSHORTSHARES >= 2 THEN
EXITSHORT COUNTOFSHORTSHARES / 2 SHARES AT MARKET
ENDIFLire la taille short en cours signifie que la sortie partielle retire toujours la moitié de ce qui est réellement détenu, quel que soit le nombre d'entrées exécutées.
Exemple 3, Bloquer les ré-entrées couvertes (ProOrder)
DEFPARAM CumulateOrders = true
rsiVal = RSI[14](close)
// Only open or add to a short when RSI is overbought
// and the short book holds fewer than 3 lots
IF rsiVal > 70 AND COUNTOFSHORTSHARES < 3 THEN
SELLSHORT 1 LOT AT MARKET
ENDIF
// Flatten the short when RSI normalises
IF ShortOnMarket AND rsiVal < 50 THEN
EXITSHORT AT MARKET
ENDIFLe compte sert à la fois de contrôle d'entrée initiale et de plafond de pyramidage, puisque 0 est inférieur à 3 lorsque la stratégie est hors marché.
Erreurs et pièges courants
- Pas d'empilement sans CumulateOrders. Avec la valeur par défaut
DEFPARAM CumulateOrders = false, un secondSELLSHORTalors qu'on est déjà short est ignoré, doncCOUNTOFSHORTSHARESreste à la taille de la première entrée et la logique d'ajout ne se déclenche jamais. - Confondre les actions avec les entrées. Le mot-clé compte les actions ou les lots, non le nombre de trades. Un
SELLSHORT 5 CONTRACTSporte le compte à 5, comme cinq entrées distinctes d'un contrat. - Les ordres en attente sont invisibles. Les ordres d'entrée limite ou stop non exécutés n'augmentent pas le compteur, donc un plafond écrit uniquement sur
COUNTOFSHORTSHARESpeut tout de même mettre en attente plus de taille que prévu au sein d'une même bar. - Confusions entre valeurs signées et non signées.
COUNTOFSHORTSHARESest positif tandis queCOUNTOFPOSITIONest négatif pour la même position short. Mélanger les deux conventions dans une même condition est une cause fréquente de garde-fous qui ne se déclenchent jamais.
Instructions liées
COUNTOFLONGSHARES, nombre non signé d'actions détenues en long.COUNTOFPOSITION, taille signée de la position ouverte.CumulateOrders, paramètre DEFPARAM qui permet d'empiler des entrées dans la même direction.SELLSHORT, ouvre une position short ou la renforce.EXITSHORT, ferme tout ou partie d'une position short.SHORTONMARKET, vrai tant qu'une position short est ouverte.TRADEINDEX, indice de bar de l'exécution d'un trade précédent.TRADEPRICE, prix d'entrée du trade courant ou d'un trade précédent.