BUY
BUY en ProBacktest y ProOrder abre una posición long. Cubre las unidades de cantidad, los tipos de orden AT MARKET, LIMIT y STOP, además de los errores habituales de dimensionamiento y de entrada.
Sintaxis
BUY x SHARES AT MARKETBUY x CONTRACT AT price LIMITBUY x CONTRACT AT price STOPParámetros
| Nombre | Tipo | Por defecto | Descripción |
|---|---|---|---|
x | número | obligatorio | Cantidad de la orden, interpretada según la unidad que la sigue. |
| unidad | SHARES, CONTRACT, LOT, CASH | obligatorio | Unidad de tamaño. CASH indica un importe en la divisa de la cuenta en lugar de un número de unidades. |
| tipo de orden | AT MARKET, AT price LIMIT, AT price STOP | obligatorio | Ejecución inmediata al precio actual, o una orden pendiente en un nivel indicado. |
Cómo funciona
BUY coloca una orden de entrada long. Con AT MARKET, la orden se ejecuta al siguiente precio disponible. Con AT price LIMIT, una orden pendiente espera para comprar al nivel indicado o mejor, por debajo del precio actual. Con AT price STOP, una orden pendiente compra cuando el precio sube atravesando el nivel indicado, la forma habitual para entradas de breakout.
La unidad de cantidad debe coincidir con el instrumento: SHARES para acciones, CONTRACT para futuros y CFDs, LOT para forex, y CASH para dimensionar la orden como un importe en la divisa de la cuenta. La acumulación de posición se rige por CumulateOrders. Cuando está activado, que es el valor por defecto, las órdenes BUY repetidas se acumulan en una posición mayor; con DEFPARAM CumulateOrders = false, una nueva orden BUY estando ya long se ignora.
Las entradas normalmente se envuelven en una condición de estado de posición como IF NOT LongOnMarket THEN o IF NOT OnMarket THEN, de modo que las órdenes solo se ejecutan cuando la estrategia pretende mantener una nueva posición.
Ejemplos
Ejemplo 1, Entrada a mercado condicional (ProBacktest)
// Enter long at market when flat and the entry conditions hold
IF NOT LongOnMarket AND LongConditions THEN
BUY 1 SHARES AT MARKET
ENDIFSe compra una acción al precio de mercado actual, pero solo cuando no hay ya una posición long abierta. Este es el ejemplo de la referencia oficial.
Ejemplo 2, Entrada en breakout con una orden stop pendiente (ProOrder)
DEFPARAM CumulateOrders = false
// Buy a break of the 20-bar high
entryLevel = Highest[20](high)
IF NOT onmarket THEN
BUY 1 CONTRACT AT entryLevel STOP
ENDIFLa orden stop pendiente se sitúa por encima del mercado y solo se ejecuta si el precio sube atravesando el máximo de las 20 bars anteriores.
Ejemplo 3, Entrada dimensionada en efectivo con un filtro de tendencia (ProOrder)
DEFPARAM CumulateOrders = false
// Size the position as 5000 units of account currency
IF NOT onmarket AND close > Average[50](close) THEN
BUY 5000 CASH AT MARKET
ENDIF
// Exit when price loses the average
IF longonmarket AND close < Average[50](close) THEN
SELL AT MARKET
ENDIFCASH dimensionamiento mantiene la exposición constante en términos monetarios en instrumentos con precios distintos, en lugar de fijar un número de unidades.
Errores y trampas habituales
- Piramidación no intencionada.
CumulateOrdersestá activado por defecto, así que una condición de entrada que se mantiene true durante varios bars acumula un nuevo BUY en cada uno de ellos. O bien estableceDEFPARAM CumulateOrders = falseo proteger la entrada conNOT LongOnMarket. - Las órdenes pendientes caducan después de un bar. A
LIMIToSTOPorden que no se ejecuta en el siguiente bar se cancela. Las entradas pendientes persistentes deben reenviarse en cada bar mientras el setup siga siendo válido. - Unidad incorrecta para el instrumento.
SHARESen un par de divisas oLOTen una acción no dimensiona la orden como se pretende. Ajusta la unidad al mercado, o usaCASHpara un tamaño denominado en divisa. - BUY como salida de un short. Cerrar una posición short es tarea de EXITSHORT. Un BUY dimensionado por encima del short abierto invierte la posición en lugar de solo cerrarla, lo que rara vez es el comportamiento deseado.
Instrucciones relacionadas
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.LIMIT, orden pendiente a un precio indicado o mejor.STOP, orden pendiente que se activa cuando el precio cruza un nivel.CONTRACT, unidad de cantidad para futuros y CFDs.SHARES, unidad de cantidad para acciones.LOT, unidad de cantidad para forex.CASH, dimensiona una orden en la divisa de la cuenta.ONMARKET, verdadero mientras hay alguna posición abierta.CumulateOrders, controla si las entradas repetidas se acumulan.