Únete hoy
ProBacktest/probacktest · proorder

COUNTOFPOSITION

COUNTOFPOSITION devuelve el tamaño con signo de la posición abierta en ProBacktest y ProOrder, positivo para long y negativo para short. Sintaxis y ejemplos.

Sintaxis

probuilder
COUNTOFPOSITION

La palabra clave no acepta parámetros y se utiliza como una variable de solo lectura dentro de las expresiones.

Cómo funciona

En cada bar, COUNTOFPOSITION refleja la cantidad que mantiene actualmente la estrategia. El signo codifica la dirección: una estrategia long de 3 contratos da 3, una estrategia short de 3 contratos muestra -3, y una estrategia plana lee 0. El valor se actualiza a medida que se ejecutan las órdenes, por lo que tras una salida parcial muestra la cantidad restante, no el tamaño original de entrada.

El convenio con signo hace útil la palabra clave en dos situaciones. Primera, comprobar la dirección: COUNTOFPOSITION > 0 es equivalente a LONGONMARKET, y COUNTOFPOSITION < 0 a SHORTONMARKET. Segundo, límites de exposición: ABS(COUNTOFPOSITION) da el tamaño total con independencia de la dirección, que es la forma habitual de limitar la piramidación cuando DEFPARAM CumulateOrders = true permite entradas repetidas en la misma dirección.

Solo se cuenta la cantidad ejecutada. Las órdenes limitadas o stop pendientes que no se han ejecutado no modifican el valor. Para recuentos sin signo por dirección, COUNTOFLONGSHARES y COUNTOFSHORTSHARES informan por separado de las cantidades long y short.

Ejemplos

Ejemplo 1, Limitar una posición short piramidada (ProBacktest)

probuilder
myMACD = MACD[12,26,9](close)
short = myMACD crosses under 0

// First short entry when flat on the short side
IF NOT ShortOnMarket AND short THEN
  SELLSHORT 1 CONTRACTS AT MARKET
ENDIF

// Allow re-entries only while total size stays at or below 10 contracts
MAXSHARES = abs(COUNTOFPOSITION) <= 10
IF TRADEINDEX(1) > 5 AND TRADEPRICE(1) - Close > 10 * pointsize AND ShortOnMarket AND MAXSHARES THEN
  SELLSHORT 1 CONTRACTS AT MARKET
ENDIF
SET STOP TRAILING 50

La estrategia escala en un short a medida que el precio cae. Como COUNTOFPOSITION es negativo mientras está short, ABS() lo convierte en un tamaño total antes de compararlo con el límite de 10.

Ejemplo 2, Comprobación de dirección sin las palabras clave ONMARKET (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

fastMA = Average[20](close)
slowMA = Average[50](close)

// Enter long on a bullish crossover when flat
IF COUNTOFPOSITION = 0 AND fastMA crosses over slowMA THEN
  BUY 2 CONTRACTS AT MARKET
ENDIF

// Close the long on a bearish crossover
IF COUNTOFPOSITION > 0 AND fastMA crosses under slowMA THEN
  SELL AT MARKET
ENDIF

COUNTOFPOSITION = 0 detecta una estrategia plana y COUNTOFPOSITION > 0 detecta un long abierto, replicando ONMARKET y LONGONMARKET con una sola palabra clave.

Ejemplo 3, Dimensionar una salida parcial a partir de la posición en curso (ProOrder)

probuilder
DEFPARAM CumulateOrders = true

// Scale into a long, then bank half once the trade is 20 points onside
IF LongOnMarket AND close - TRADEPRICE >= 20 * pointsize AND COUNTOFPOSITION >= 4 THEN
  // Exit half of whatever is currently held
  SELL COUNTOFPOSITION / 2 CONTRACTS AT MARKET
ENDIF

Leer el tamaño en curso permite que la salida se adapte a cuantas entradas se hayan ejecutado realmente, en lugar de fijar una cantidad en el código.

Errores y trampas habituales

  • Olvidar el signo en los shorts. Mientras short, COUNTOFPOSITION es negativo, por lo que una protección como COUNTOFPOSITION <= 10 siempre es verdadero y nunca limita nada. Compara ABS(COUNTOFPOSITION) cuando la intención es el tamaño total.
  • Esperar que las órdenes pendientes cuenten. El valor solo refleja la cantidad ejecutada. Una orden limitada en espera que no se ha ejecutado deja COUNTOFPOSITION sin cambios, por lo que los límites de exposición basados en él no tienen en cuenta las órdenes en espera en el bróker.
  • Sin acumulación sin CumulateOrders. Con el valor por defecto DEFPARAM CumulateOrders = false, las órdenes adicionales en la misma dirección no se acumulan, así que COUNTOFPOSITION nunca crece más allá de la primera entrada y la lógica de piramidación no hace nada en silencio.
  • Utilizarlo fuera de las estrategias. La palabra clave no existe en los indicadores de ProBuilder ni en ProScreener. La lógica que depende de la posición tiene que estar en el propio código de ProBacktest o ProOrder.
  • COUNTOFLONGSHARES, número sin signo de acciones mantenidas en long.
  • COUNTOFSHORTSHARES, número sin signo de acciones mantenidas en short.
  • CumulateOrders, parámetro de DEFPARAM que permite acumular entradas en la misma dirección.
  • ONMARKET, verdadero mientras hay alguna posición abierta.
  • LONGONMARKET, verdadero mientras hay una posición long abierta.
  • SHORTONMARKET, verdadero mientras hay una posición short abierta.
  • TRADEINDEX, índice de bar de la ejecución de una operación anterior.
  • TRADEPRICE, precio de entrada de la operación actual o de una anterior.