MARKET
MARKET en ProBacktest y ProOrder ejecuta órdenes BUY y SELL al precio de mercado actual. Las órdenes se ejecutan en la apertura del siguiente bar sin límite de precio.
Sintaxis
BUY quantity SHARES AT MARKET
SELL quantity SHARES AT MARKETCómo funciona
Toda instrucción de orden termina con un tipo de orden. AT MARKET significa que la orden no lleva condición de precio: se ejecuta al precio que el mercado ofrezca en el momento de la ejecución. Las alternativas, LIMIT y STOP, crean en su lugar órdenes pendientes que esperan un nivel de precio concreto.
Como el código de la estrategia se ejecuta una vez por bar al cierre, una orden a mercado generada en un bar se transmite y se ejecuta en la apertura del bar siguiente. ProBacktest lo modela ejecutando al precio de apertura del siguiente bar. En ProOrder en real, la orden llega al bróker en ese momento y se ejecuta al mejor precio disponible, que puede diferir del precio de apertura impreso en mercados rápidos o con poca liquidez.
Una orden a mercado cambia certeza de ejecución por incertidumbre de precio. Encaja con señales en las que estar en la operación importa más que el nivel exacto, como entradas seguidoras de tendencia o salidas forzadas. Cuando el propio nivel de entrada forma parte del edge, una orden pendiente LIMIT o STOP orden expresa mejor esa intención.
AT MARKET se combina con todos los verbos de órdenes: BUY y SELLSHORT para abrir posiciones, SELL y EXITSHORT para cerrarlas.
Ejemplos
Ejemplo 1, Compra inmediata de diez acciones (ProBacktest)
// enter when price closes above the 50-bar average
IF NOT OnMarket AND close > Average[50](close) THEN
BUY 10 SHARES AT MARKET
ENDIFCuando no hay posición abierta y la condición se cumple al cierre del bar, se envía una orden de diez acciones que se ejecuta en la apertura del siguiente bar al precio vigente.
Ejemplo 2, Salida forzada de un short a mercado (ProOrder)
// cover the short as soon as momentum turns positive
exitSignal = RSI[14](close) crosses under 30
IF ShortOnMarket AND exitSignal THEN
EXITSHORT AT MARKET
ENDIFToda la posición short se cierra a mercado. No se indica cantidad, por lo que se aplica el valor por defecto y se cubre la posición completa.
Ejemplo 3, Cruce de medias móviles en ambas direcciones (ProOrder)
fastMA = Average[20](close)
slowMA = Average[50](close)
IF fastMA crosses over slowMA THEN
IF ShortOnMarket THEN
EXITSHORT AT MARKET
ENDIF
BUY 1 CONTRACT AT MARKET
ENDIF
IF fastMA crosses under slowMA THEN
IF LongOnMarket THEN
SELL AT MARKET
ENDIF
SELLSHORT 1 CONTRACT AT MARKET
ENDIFUn sistema stop-and-reverse. Cada cruce cierra cualquier posición contraria y abre una nueva, todo con órdenes a mercado, de modo que la estrategia siempre está posicionada con el cruce.
Errores y trampas habituales
- Las ejecuciones se producen en la apertura del siguiente bar. La condición se evalúa en el cierre del bar, pero el precio de ejecución es la apertura del siguiente bar. La aritmética de backtest que asume la entrada al cierre del bar de la señal sobrestima los resultados siempre que los bars abren con hueco.
- Sin garantía de precio. Las órdenes a mercado garantizan la ejecución, no el precio. En real, las ejecuciones pueden desviarse más allá del precio de apertura del backtest en condiciones volátiles, por lo que los resultados reales se degradan respecto a ProBacktest, que asume ejecuciones limpias.
SELLyEXITSHORTno son intercambiables.SELL AT MARKETcierra las posiciones long yEXITSHORT AT MARKETcierra shorts. Usar el verbo equivocado para el lado abierto deja la posición intacta.MARKETno es una instrucción independiente. La palabra clave solo existe como parte de una instrucción de orden después deAT. EscribirMARKETen su propia línea no compila.
Instrucciones relacionadas
BUY, abre o amplía una posición long.SELL, cierra parte o toda una posición long.SELLSHORT, abre o amplía una posición short.EXITSHORT, cierra parte o toda una posición short.LIMIT, orden pendiente que se ejecuta a un precio fijado o mejor.STOP, orden pendiente que se activa cuando el precio alcanza un nivel.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.