Únete hoy
ProBacktest/probacktest · proorder

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

probuilder
BUY x SHARES AT MARKET
probuilder
BUY x CONTRACT AT price LIMIT
probuilder
BUY x CONTRACT AT price STOP

Parámetros

NombreTipoPor defectoDescripción
xnúmeroobligatorioCantidad de la orden, interpretada según la unidad que la sigue.
unidadSHARES, CONTRACT, LOT, CASHobligatorioUnidad de tamaño. CASH indica un importe en la divisa de la cuenta en lugar de un número de unidades.
tipo de ordenAT MARKET, AT price LIMIT, AT price STOPobligatorioEjecució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)

probuilder
// Enter long at market when flat and the entry conditions hold
IF NOT LongOnMarket AND LongConditions THEN
    BUY 1 SHARES AT MARKET
ENDIF

Se 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)

probuilder
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
ENDIF

La 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)

probuilder
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
ENDIF

CASH 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. CumulateOrders está 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 establece DEFPARAM CumulateOrders = false o proteger la entrada con NOT LongOnMarket.
  • Las órdenes pendientes caducan después de un bar. A LIMIT o STOP orden 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. SHARES en un par de divisas o LOT en una acción no dimensiona la orden como se pretende. Ajusta la unidad al mercado, o usa CASH para 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.
  • 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.