Únete hoy
ProBacktest/probacktest · proorder

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

probuilder
COUNTOFLONGSHARES

Có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)

probuilder
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 50

La 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)

probuilder
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 2

Cada 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)

probuilder
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 3

El 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 necesita DEFPARAM CumulateOrders = true importar.
  • Cero cuando está en short o fuera del mercado. La función ignora por completo la exposición short y devuelve 0. Probar COUNTOFLONGSHARES = 0 no significa que la estrategia esté plana; combínalo con ONMARKET o COUNTOFSHORTSHARES para 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.
  • 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.