Únete hoy
ProBacktest/probacktest · proorder

CONTRACT

CONTRACT es una unidad de cantidad de ProBacktest y ProOrder que establece el tamaño de la orden en contratos, como en BUY 5 CONTRACTS AT MARKET, intercambiable con SHARES o LOT.

Sintaxis

probuilder
x CONTRACT

Utilizado dentro de una instrucción de orden:

probuilder
BUY 5 CONTRACTS AT MARKET

Parámetros

NombreTipoPor defectoDescripción
xnumérico1 en la entrada, posición completa en la salidaNúmero de contratos de la orden. Acepta literales o expresiones numéricas.

Cómo funciona

CONTRACT declara cuántos contratos negocia una orden. No lleva dirección propia: BUY 5 CONTRACTS AT MARKET abre o amplía una posición long, SELLSHORT 5 CONTRACTS AT MARKET abre o amplía un short, y SELL 2 CONTRACTS AT MARKET reduce un long en dos contratos.

La palabra clave es una de varias palabras de unidad intercambiables. SHARE, CONTRACTS, PERPOINT, LOT y LOTS se aceptan en la misma posición en cualquier tipo de instrumento, y la grafía en singular o en plural no supone ninguna diferencia funcional. En Forex la cantidad indicada se multiplica por el tamaño de un lote.

Cuando no se indica cantidad, se aplican los valores por defecto. Una orden de entrada como BUY AT MARKET opera una unidad. Una orden de salida como SELL AT MARKET o EXITSHORT AT MARKET cierra toda la posición abierta, sea cual sea su tamaño.

La cantidad puede ser una variable, que es la forma en que las reglas de position size, por ejemplo un número de contratos derivado de la volatilidad o de la equity de la cuenta, se conectan al flujo de órdenes.

Ejemplos

Ejemplo 1, Entrada fija de cinco contratos (ProBacktest)

probuilder
long = close crosses over Average[50](close)
IF NOT LongOnMarket AND long THEN
    // Order size fixed at five contracts
    BUY 5 CONTRACTS AT MARKET
ENDIF
SET STOP PLOSS 40

El cruce de medias móviles activa una entrada long de exactamente cinco contratos, el tamaño indicado por la unidad CONTRACT.

Ejemplo 2, Número de contratos escalado por volatilidad (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

// Fewer contracts when the market is volatile
atr = AverageTrueRange[14](close)
n = MAX(1, ROUND(200 / atr))

IF NOT OnMarket AND RSI[14](close) crosses over 50 THEN
    BUY n CONTRACT AT MARKET
ENDIF
SET STOP %LOSS 2

El número de contratos es una variable que se recalcula en cada bar: un mercado tranquilo permite más contratos, uno volátil menos, con un mínimo de uno.

Ejemplo 3, Salida parcial en contratos (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

IF NOT OnMarket AND close crosses over Highest[20](high)[1] THEN
    BUY 4 CONTRACTS AT MARKET
ENDIF

// Bank half the position after a favorable move, keep the rest running
IF LongOnMarket AND close >= TRADEPRICE * 1.02 THEN
    SELL 2 CONTRACTS AT MARKET
ENDIF
SET STOP %TRAILING 1.5

Indicar una cantidad en la orden de salida cierra solo ese número de contratos, aquí dos de los cuatro, mientras el resto permanece abierto bajo el trailing stop.

Errores y trampas habituales

  • CONTRACT establece el tamaño, no la dirección. La palabra clave nunca abre ni cierra nada por sí misma. La instrucción que la rodea, BUY, SELL, SELLSHORT o EXITSHORT, decide el lado de la operación.
  • Multiplicación de lotes en forex. En instrumentos de Forex la cantidad se multiplica por el tamaño del lote, por lo que BUY 1 CONTRACT opera un lote completo, no una unidad de divisa. Comprueba la definición de lote del instrumento antes de dimensionar.
  • Las cantidades no indicadas recurren a los valores por defecto. BUY AT MARKET opera una unidad sin avisar y SELL AT MARKET cierra la posición completa. Que falte el número no es un error, por lo que una errata que elimine la cantidad cambia el position size sin avisar.
  • Los recuentos fraccionarios se redondean. Una expresión calculada, como capital / price rara vez da un número entero. Envuelve las fórmulas de dimensionamiento en ROUND, o añade un mínimo explícito, para que la cantidad solicitada sea intencionada.
  • CASH, cantidad de la orden como importe monetario.
  • LOT, cantidad de la orden en lotes.
  • SHARES, cantidad de la orden como número de acciones.
  • BUY, abre o amplía una posición long.
  • SELL, cierra o reduce una posición long.
  • SELLSHORT, abre o amplía una posición short.
  • EXITSHORT, cierra o reduce una posición short.
  • MARKET, ejecución inmediata al precio actual.
  • COUNTOFPOSITION, tamaño de la posición abierta en unidades.