EXITSHORT
EXITSHORT cierra una posición short abierta en ProBacktest y ProOrder, a mercado o como orden pendiente. Sintaxis, ejemplos resueltos y trampas habituales.
Sintaxis
EXITSHORT AT MARKETEXITSHORT x SHARES AT MARKETLas variantes pendientes colocan la salida a un precio elegido en lugar de ejecutarse de inmediato:
EXITSHORT AT price LIMIT
EXITSHORT AT price STOPx es el número de acciones, lotes o contratos a recomprar. Omitir la cantidad cierra toda la posición short.
Cómo funciona
Una posición short se abre con SELLSHORT y se cierra recomprando el instrumento. EXITSHORT realiza esa recompra sin abrir nunca un long: si no hay ninguna posición short abierta, la instrucción no tiene nada que cerrar y no se envía ninguna orden. Esto la hace más segura que usar BUY para las salidas, lo que abriría una nueva posición long una vez cerrada la short.
La forma a mercado se ejecuta al siguiente precio disponible. Las formas pendientes quedan en el bróker hasta que el precio alcanza el nivel especificado, LIMIT para salidas a un precio favorable por debajo del actual, STOP para salidas de protección por encima de él. Una cantidad convierte la instrucción en una cobertura parcial, que reduce la posición y deja el resto abierto, que es la forma estándar de ir cerrando por partes un short piramidado.
En ProBacktest la instrucción la ejecuta el motor de simulación con la misma lógica de precios usada para las demás órdenes. En ProOrder en real, la salida se transmite al bróker como cualquier otra orden.
Ejemplos
Ejemplo 1, Entrada y salida short guiadas por el MACD (ProBacktest)
myMACD = MACD[12,26,9](close)
// Short when the MACD line falls through zero,
// cover when it climbs back above zero
short = myMACD crosses under 0
exit = myMACD crosses over 0
IF NOT SHORTONMARKET AND short THEN
SELLSHORT 1 LOT AT MARKET
ENDIF
IF SHORTONMARKET AND exit THEN
EXITSHORT AT MARKET
ENDIFEl ciclo de ida y vuelta canónico de la referencia oficial. El SHORTONMARKET las comprobaciones garantizan que las entradas y salidas solo se disparen en el estado de posición correcto.
Ejemplo 2, Salida parcial de un short piramidado (ProOrder)
DEFPARAM CumulateOrders = true
// Cover 2 lots once the short is 25 points in profit,
// keep the rest running with a trailing stop
IF SHORTONMARKET AND TRADEPRICE - close >= 25 * pointsize AND COUNTOFSHORTSHARES > 2 THEN
EXITSHORT 2 SHARES AT MARKET
ENDIF
SET STOP TRAILING 40La forma con cantidad cubre parte del short, asegurando beneficio mientras los lotes restantes siguen expuestos a nuevas caídas.
Ejemplo 3, Salida pendiente con orden limitada en un objetivo de beneficio (ProOrder)
// Rest a buy-back order 30 points below the entry price
IF SHORTONMARKET THEN
EXITSHORT AT TRADEPRICE - 30 * pointsize LIMIT
ENDIFEn lugar de esperar a que reaccione el código de la estrategia, la orden de salida queda en el bróker y se ejecuta en el momento en que el precio baja hasta el nivel objetivo.
Errores y trampas habituales
- Sin posición, sin orden.
EXITSHORTno hace nada cuando la estrategia no está short. La lógica que cuenta con que se dispare sin condiciones, por ejemplo para cerrar todo al final de la sesión, debería comprobarSHORTONMARKETprimero o usaDEFPARAM FLATAFTER. - Usar BUY para cerrar un short.
BUYreduce un short y después sigue comprando hasta entrar en una posición long. Cuando la intención es solo cubrir,EXITSHORTes la instrucción correcta porque nunca puede invertir la posición. - Salida parcial mayor que la posición. Solicitar más acciones de las que se mantienen simplemente cierra toda la posición. Dimensiona las salidas parciales a partir de
COUNTOFSHORTSHARESpara que la aritmética siga siendo correcta. - Las salidas pendientes se reevalúan en cada bar. Una orden pendiente
EXITSHORT ... LIMITcolocada dentro de una condición se refresca en cada bar en que la condición se cumple y se cancela cuando deja de cumplirse. Mantén la condición verdadera todo el tiempo que la orden deba seguir activa.
Instrucciones relacionadas
SELLSHORT, abre o amplía una posición short.SELL, cierra toda o parte de una posición long.BUY, abre o amplía una posición long.MARKET, ejecuta una orden al precio de mercado actual.LIMIT, orden pendiente ejecutada a un precio indicado o mejor.STOP (pending), orden pendiente activada cuando el precio alcanza un nivel.SHORTONMARKET, verdadero mientras hay una posición short abierta.ONMARKET, verdadero mientras hay alguna posición abierta.