COUNTOFLONGSHARES
COUNTOFLONGSHARES devuelve el número de unidades mantenidas en long por una estrategia de ProBacktest o ProOrder, utilizado para limitar el position size al acumular varias órdenes.
Sintaxis
COUNTOFLONGSHARESCómo funciona
La función lee la posición abierta y devuelve un entero: la cantidad de unidades mantenidas en el lado long en el momento de la evaluación. No requiere parámetros ni paréntesis. Cuando la estrategia está fuera del mercado o en short, devuelve 0.
La cuenta se expresa en unidades, no en operaciones. Una sola orden de 3 contratos y tres órdenes acumuladas de 1 contrato devuelven ambas 3. Para razonar sobre entradas individuales, combínalo con TRADEINDEX y TRADEPRICE, que se refieren a las órdenes por su índice.
El contexto típico es una estrategia con DEFPARAM CumulateOrders = true, donde varias órdenes de entrada pueden acumularse en una sola posición. Comparar COUNTOFLONGSHARES frente a un techo antes de cada BUY mantiene la exposición total dentro de un límite previsto. El equivalente para el lado short es COUNTOFSHORTSHARES, y COUNTOFPOSITION informa del tamaño con signo de la posición que esté abierta.
Ejemplos
Ejemplo 1, Piramidación limitada a tres unidades (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 estrategia abre con un cruce del MACD y después añade un contrato cada vez mientras el recuento acumulado se mantiene en tres o menos, la última entrada tiene al menos cinco bars de antigüedad y el precio se ha movido 10 puntos más allá de ella.
Ejemplo 2, Techo estricto de exposición antes de cada adición (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 2Cada retroceso en una tendencia alcista suma una unidad, pero la condición sobre COUNTOFLONGSHARES garantiza que la posición acumulada nunca supere cinco unidades.
Ejemplo 3, Salida escalonada cuando la posición es grande (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 3El recuento dirige ambas direcciones: limita las nuevas entradas por debajo de cuatro unidades y activa una salida parcial una vez que la posición está completamente construida y el momentum gira.
Errores y trampas habituales
- Unidades, no operaciones. El valor devuelto cuenta acciones, contratos o lotes, no el número de órdenes de entrada. Una estrategia que compra 2 contratos por señal alcanza un tope de 6 tras tres señales, no tras seis.
- Inútil sin órdenes acumuladas. Con el valor por defecto
CumulateOrders = false, una estrategia mantiene como máximo una entrada a la vez, por lo que la función solo devuelve la cantidad de esa única orden o 0. La lógica de piramidación necesitaDEFPARAM CumulateOrders = trueimportar. - Cero cuando está en short o fuera del mercado. La función ignora por completo la exposición short y devuelve 0. Probar
COUNTOFLONGSHARES = 0no significa que la estrategia esté plana; combínalo conONMARKEToCOUNTOFSHORTSHARESpara ver el panorama completo. - Se evalúa en el momento del bar. El recuento refleja las órdenes ejecutadas a fecha del bar actual. Una orden enviada en este bar pero aún no ejecutada no se incluye, por lo que adiciones consecutivas en un mismo bar pueden sobrepasar un límite comprobado antes en el código.
Instrucciones relacionadas
COUNTOFSHORTSHARES, número de unidades mantenidas en short.COUNTOFPOSITION, tamaño con signo de la posición abierta.CumulateOrders, DEFPARAM que permite acumular varias órdenes de entrada.LONGONMARKET, verdadero mientras hay una posición long abierta.ONMARKET, verdadero mientras hay alguna posición abierta.TRADEINDEX, índice de bar de una orden de entrada dada.TRADEPRICE, precio de entrada de una orden dada.BUY, abre o amplía una posición long.