Únete hoy
ProBacktest/probacktest · proorder

LIMIT

LIMIT en ProBacktest y ProOrder coloca una orden pendiente que se ejecuta a un precio indicado o mejor. Sintaxis con BUY, SELL y SELLSHORT, ejemplos, trampas.

Sintaxis

probuilder
BUY quantity CONTRACT AT price LIMIT
probuilder
SELLSHORT quantity CONTRACT AT price LIMIT
probuilder
SELL AT price LIMIT
EXITSHORT AT price LIMIT

Parámetros

NombreTipoPor defectoDescripción
priceexpresión numéricaningunoEl nivel del limit. La orden se ejecuta a este precio o mejor, más bajo para una compra, más alto para una venta.

Cómo funciona

LIMIT es uno de los tres modos de ejecución de las instrucciones de orden, junto con MARKET para ejecución inmediata y STOP para órdenes stop pendientes. Una orden límite indica el peor precio aceptable. Para las entradas, BUY ... LIMIT se sitúa por debajo del mercado actual y se ejecuta en una caída hasta el nivel, y SELLSHORT ... LIMIT se sitúa por encima y se ejecuta en un rebote alcista. Para las salidas, SELL ... LIMIT y EXITSHORT ... LIMIT son las órdenes estándar de take profit, que cierran la posición cuando el precio alcanza un nivel favorable.

La dirección relativa al mercado importa. Un limit de compra colocado por encima del precio actual ya es ejecutable a mercado y se ejecuta de inmediato, comportándose como una orden a mercado. El comportamiento pendiente solo surge cuando el nivel se sitúa en el lado pasivo, por debajo del mercado para las compras, por encima para las ventas.

Las órdenes pendientes en ProBacktest y ProOrder tienen una vida de un bar. Una orden limit no ejecutada se cancela al final del siguiente bar, por lo que una estrategia que quiera mantener la orden activa más tiempo debe volver a enviarla en cada bar mientras se cumpla la regla de entrada o de salida. Enviar una nueva orden pendiente en la misma dirección sustituye a la anterior, lo que además permite desplazar el nivel bar a bar.

Ejemplos

Ejemplo 1, Comprar un retroceso tras una señal del MACD (ProBacktest)

probuilder
myMACD = MACD[12,26,9](close)
long = myMACD crosses over 0
IF long THEN
    // rest a buy order 10 price units below the close
    BUY 1 LOT AT close-10 LIMIT
ENDIF

Cuando la línea MACD cruza por encima de cero, se coloca una orden limit 10 unidades de precio por debajo del precio de cierre. La operación solo se abre si el precio baja hasta ese nivel dentro del siguiente bar, mejorando la entrada a costa de poder perderse el movimiento. Este es el ejemplo de la referencia oficial.

Ejemplo 2, Abrir un short en un rally con un desplazamiento fijo (ProOrder)

probuilder
// fade signal: RSI overbought
overbought = RSI[14](close) > 70

IF NOT onmarket AND overbought THEN
  // sell short if price rallies 20 points above the current close
  SELLSHORT 1 CONTRACT AT close + 20 * pointsize LIMIT
  SET STOP PLOSS 40
ENDIF

La entrada en short queda por encima del mercado, por lo que la posición solo se abre con un impulso adicional al alza, a un precio mejor que una venta inmediata a mercado.

Ejemplo 3, Salida de toma de beneficios reenviada en cada bar (ProOrder)

probuilder
// keep a resting take-profit 100 points above the entry price
IF longonmarket THEN
  SELL AT tradeprice + 100 * pointsize LIMIT
ENDIF

Como las órdenes pendientes caducan después de un bar, la salida se vuelve a enviar en cada bar mientras el long está abierto, manteniendo un objetivo de beneficio permanente 100 puntos por encima del precio de ejecución.

Errores y trampas habituales

  • Vida de un bar. Una orden limit no ejecutada se cancela después del siguiente bar. El código que coloca la orden una sola vez dentro de un bloque de entrada y no la repite nunca suele operar mucho menos de lo previsto. Vuelve a enviarla mientras se cumpla la condición, como en el ejemplo 3.
  • Los limit ejecutables a mercado se ejecutan de inmediato. Un limit de compra por encima del precio actual, o un limit de venta por debajo, se ejecuta de inmediato. Un error de signo en el desplazamiento convierte en silencio una entrada paciente en una instantánea.
  • LIMIT no es STOP. Las órdenes limitadas de compra se sitúan por debajo del mercado, las stop de compra por encima. Las entradas de breakout necesitan STOP, las entradas en pullback necesitan LIMIT. Confundirlos invierte la lógica de la estrategia.
  • Las ejecuciones del backtest son optimistas. ProBacktest ejecuta un limit en cuanto el precio toca el nivel. En vivo, un nivel tocado sin que el precio lo atraviese puede dejar la orden sin ejecutar, por lo que los backtests sobreestiman la tasa de ejecución de las entradas limit ajustadas.
  • BUY, abre una posición long.
  • SELL, cierra una posición long.
  • SELLSHORT, abre una posición short.
  • EXITSHORT, cierra una posición short.
  • MARKET, ejecución inmediata al precio actual.
  • STOP (pending), orden pendiente que se activa cuando el precio cruza un nivel.
  • ONMARKET, verdadero mientras hay alguna posición abierta.
  • TRADEPRICE, el precio de entrada de la posición actual.