COUNTOFSHORTSHARES
COUNTOFSHORTSHARES devuelve el número de acciones o lotes mantenidos en short por la estrategia actual de ProBacktest o ProOrder. Sintaxis, ejemplos resueltos y trampas habituales.
Sintaxis
COUNTOFSHORTSHARESLa palabra clave no acepta parámetros y se lee como una variable dentro de condiciones y expresiones.
Cómo funciona
Cada vez que se ejecuta el código de la estrategia, COUNTOFSHORTSHARES informa de la cantidad short ejecutada en ese momento. A diferencia de COUNTOFPOSITION, que tiene signo, esta palabra clave siempre es cero o positiva, por lo que puede compararse directamente con un límite sin un ABS() envoltorio. Cuando la estrategia está plana o long, devuelve 0.
El patrón típico combina tres piezas: DEFPARAM CumulateOrders = true para que repetidas SELLSHORT las órdenes se acumulan en lugar de ignorarse, una condición de entrada que puede dispararse más de una vez, y una protección como COUNTOFSHORTSHARES < 5 que evita que la posición crezca sin límite. El valor se actualiza a medida que se producen ejecuciones, por lo que las salidas parciales mediante EXITSHORT x SHARES reducen el recuento en consecuencia.
Las órdenes pendientes no se incluyen. Una orden en reposo SELLSHORT ... LIMIT una orden que no se ha ejecutado deja el recuento sin cambios hasta que se llena. El reflejo en el lado long de esta palabra clave es COUNTOFLONGSHARES.
Ejemplos
Ejemplo 1, Limitar a cinco lotes las entradas short acumuladas (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 guarda MAXSHARES bloquea nuevas entradas una vez que hay cinco contratos en short, manteniendo la exposición acotada mientras la lógica de incremento seguidora de tendencia sigue activa.
Ejemplo 2, Salir de un short por mitades (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
ENDIFLeer el tamaño short en curso significa que la salida parcial retira siempre la mitad de lo que se mantiene realmente, independientemente de cuántas entradas se ejecutaran.
Ejemplo 3, Bloquear reentradas cubiertas (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
ENDIFEl recuento actúa tanto como comprobación de la entrada inicial como de límite de piramidación, ya que 0 es menor que 3 cuando la estrategia está fuera del mercado.
Errores y trampas habituales
- Sin apilamiento sin CumulateOrders. Con el valor por defecto
DEFPARAM CumulateOrders = false, un segundoSELLSHORTestando ya short se ignora, por lo queCOUNTOFSHORTSHARESse mantiene en el tamaño de la primera entrada y la lógica de incremento nunca se activa. - Confundir las acciones con las entradas. La palabra clave cuenta acciones o lotes, no el número de operaciones. Una
SELLSHORT 5 CONTRACTSla orden hace que el recuento sea 5, lo mismo que cinco entradas separadas de un contrato. - Las órdenes pendientes son invisibles. Las órdenes de entrada limitadas o stop no ejecutadas no incrementan el recuento, por lo que un límite escrito solo contra
COUNTOFSHORTSHARESaún puede poner en cola más tamaño pendiente del previsto dentro de una misma bar. - Confusiones entre valores con signo y sin signo.
COUNTOFSHORTSHARESes positivo mientrasCOUNTOFPOSITIONes negativo para la misma posición short. Mezclar las dos convenciones en una misma condición es una fuente frecuente de guardas que nunca se activan.
Instrucciones relacionadas
COUNTOFLONGSHARES, número sin signo de acciones mantenidas en long.COUNTOFPOSITION, tamaño con signo de la posición abierta.CumulateOrders, parámetro de DEFPARAM que permite acumular entradas en la misma dirección.SELLSHORT, abre o amplía una posición short.EXITSHORT, cierra total o parcialmente una posición short.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.