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
x CONTRACTUtilizado dentro de una instrucción de orden:
BUY 5 CONTRACTS AT MARKETParámetros
| Nombre | Tipo | Por defecto | Descripción |
|---|---|---|---|
x | numérico | 1 en la entrada, posición completa en la salida | Nú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)
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 40El 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)
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 2El 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)
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.5Indicar 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,SELLSHORToEXITSHORT, 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 CONTRACTopera 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 MARKETopera una unidad sin avisar ySELL AT MARKETcierra 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 / pricerara vez da un número entero. Envuelve las fórmulas de dimensionamiento enROUND, o añade un mínimo explícito, para que la cantidad solicitada sea intencionada.
Instrucciones relacionadas
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.