COUNTOFLONGSHARES
COUNTOFLONGSHARES renvoie le nombre d'unités détenues en long par une stratégie ProBacktest ou ProOrder, utilisé pour plafonner la position size lors de l'accumulation de plusieurs ordres.
Syntaxe
COUNTOFLONGSHARESComment ça marche
La fonction lit la position ouverte et renvoie un entier : la quantité d'unités détenues du côté long au moment de l'évaluation. Elle ne requiert ni paramètres ni parenthèses. Lorsque la stratégie est hors marché ou short, elle renvoie 0.
Le décompte est exprimé en unités, pas en trades. Un ordre unique de 3 contrats et trois ordres cumulés de 1 contrat renvoient tous deux 3. Pour raisonner sur les entrées individuelles, combinez-le avec TRADEINDEX et TRADEPRICE, qui adressent les ordres par leur index.
Le contexte typique est une stratégie avec DEFPARAM CumulateOrders = true, où plusieurs ordres d'entrée peuvent s'empiler en une seule position. Comparer COUNTOFLONGSHARES à un plafond avant chaque BUY maintient l'exposition totale dans une limite prévue. L'équivalent côté short est COUNTOFSHORTSHARES, et COUNTOFPOSITION indique la taille signée de la position ouverte, quelle qu'elle soit.
Exemples
Exemple 1, Pyramidage plafonné à trois unités (ProBacktest)
DEFPARAM CumulateOrders = true
myMACD = MACD[12,26,9](close)
long = myMACD crosses over 0
// First entry when flat
IF NOT LongOnMarket AND long THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
// Allow additions only while holding three units or fewer
MAXSHARES = COUNTOFLONGSHARES <= 3
// Add a unit if the last entry is seasoned and in profit
IF TRADEINDEX(1) > 5 AND Close - TRADEPRICE(1) > 10 AND LongOnMarket AND MAXSHARES THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
SET STOP TRAILING 50La stratégie ouvre sur un croisement du MACD, puis ajoute un contrat à la fois tant que le compte courant reste à trois ou moins, que la dernière entrée date d'au moins cinq bars et que le prix a parcouru 10 points au-delà de celle-ci.
Exemple 2, Plafond d'exposition strict avant chaque ajout (ProOrder)
DEFPARAM CumulateOrders = true
trendUp = close > Average[100](close)
pullback = RSI[7](close) < 35
// Never hold more than 5 units long
IF trendUp AND pullback AND COUNTOFLONGSHARES < 5 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
SET STOP %TRAILING 2Chaque repli dans une tendance haussière ajoute une unité, mais la condition sur COUNTOFLONGSHARES garantit que la position cumulée ne dépasse jamais cinq unités.
Exemple 3, Sortie progressive une fois la position importante (ProOrder)
DEFPARAM CumulateOrders = true
IF close crosses over Average[50](close) AND COUNTOFLONGSHARES < 4 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// When fully loaded and momentum fades, shed one unit
IF COUNTOFLONGSHARES >= 4 AND RSI[14](close) crosses under 70 THEN
SELL 1 CONTRACT AT MARKET
ENDIF
SET STOP %LOSS 3Le compte pilote les deux sens : il conditionne les nouvelles entrées en dessous de quatre unités et déclenche une sortie partielle une fois la position entièrement constituée et le momentum retourné.
Erreurs et pièges courants
- Unités, pas trades. La valeur de retour compte des actions, des contrats ou des lots, pas le nombre d'ordres d'entrée. Une stratégie qui achète 2 contrats par signal atteint un plafond de 6 après trois signaux, pas après six.
- Sans intérêt sans ordres cumulés. Avec la valeur par défaut
CumulateOrders = false, une stratégie ne détient au plus qu'une entrée à la fois, la fonction ne renvoie donc jamais que la quantité de cet unique ordre ou 0. Une logique de pyramidage nécessiteDEFPARAM CumulateOrders = trued'importance. - Zéro en short ou hors marché. La fonction ignore totalement l'exposition short et renvoie 0. Tester
COUNTOFLONGSHARES = 0ne signifie pas que la stratégie est hors marché ; combinez avecONMARKETouCOUNTOFSHORTSHARESpour une vue complète. - Évalué au moment de la bar. Le compte reflète les ordres exécutés à la bar en cours. Un ordre envoyé sur cette bar mais pas encore exécuté n'est pas inclus, de sorte que des ajouts consécutifs sur une même bar peuvent dépasser un plafond vérifié plus tôt dans le code.
Instructions liées
COUNTOFSHORTSHARES, nombre d'unités détenues en short.COUNTOFPOSITION, taille signée de la position ouverte.CumulateOrders, DEFPARAM qui permet d'empiler plusieurs ordres d'entrée.LONGONMARKET, vrai tant qu'une position long est ouverte.ONMARKET, vrai tant qu'une position est ouverte.TRADEINDEX, indice de bar d'un ordre d'entrée donné.TRADEPRICE, prix d'entrée d'un ordre donné.BUY, ouvre une position long ou la renforce.