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
BUY quantity CONTRACT AT price LIMITSELLSHORT quantity CONTRACT AT price LIMITSELL AT price LIMIT
EXITSHORT AT price LIMITParámetros
| Nombre | Tipo | Por defecto | Descripción |
|---|---|---|---|
price | expresión numérica | ninguno | El 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)
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
ENDIFCuando 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)
// 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
ENDIFLa 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)
// keep a resting take-profit 100 points above the entry price
IF longonmarket THEN
SELL AT tradeprice + 100 * pointsize LIMIT
ENDIFComo 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 necesitanLIMIT. 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.
Instrucciones relacionadas
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.