CumulateOrders
CumulateOrders es un parámetro de DEFPARAM que controla si una estrategia de ProOrder puede acumular varias entradas en la misma dirección. Sintaxis y ejemplos.
Sintaxis
DEFPARAM CumulateOrders = trueDEFPARAM CumulateOrders = falseParámetros
| Nombre | Tipo | Por defecto | Descripción |
|---|---|---|---|
CumulateOrders | booleano | true | Cuando true, las órdenes de entrada en la dirección de una posición abierta se suman a ella. Cuando false, esas órdenes se ignoran hasta que se cierra la posición. |
Cómo funciona
CumulateOrders no es una instrucción ejecutable, sino un parámetro de nivel de estrategia declarado con DEFPARAM. Como todos DEFPARAM líneas, debe aparecer al principio del código, antes de cualquier lógica de trading, y se evalúa una sola vez al arrancar la estrategia.
Con CumulateOrders = false, la estrategia mantiene como máximo una porción de posición por dirección. Si un BUY se activa mientras ya hay un long abierto, la orden adicional se descarta. Esto mantiene fijo el position size y es la opción habitual en estrategias donde cada señal representa una operación completa.
Con CumulateOrders = true, cada vez que se cumple una condición de entrada se envía otra orden en la misma dirección, por lo que la posición crece. Esto permite piramidar y promediar la entrada, pero también significa que una condición que se mantiene cierta bar tras bar seguirá comprando hasta que intervengan los límites de margen o de la plataforma. Por eso las estrategias acumulativas casi siempre combinan el parámetro con un control de tamaño construido sobre COUNTOFPOSITION, COUNTOFLONGSHARES o COUNTOFSHORTSHARES.
El parámetro no afecta a las salidas. SELL, EXITSHORT y las instrucciones de stop u objetivo se comportan igual en ambos modos.
Ejemplos
Ejemplo 1, Restringir la estrategia a una entrada por dirección (ProOrder)
DEFPARAM CumulateOrders = false
// One position slice at a time. While a long is open,
// further BUY orders in the same direction are ignored.La declaración conservada de la referencia oficial. Colocada al principio del programa, impide que la estrategia añada a una posición existente.
Ejemplo 2, Piramidación con un límite de tamaño explícito (ProBacktest)
DEFPARAM CumulateOrders = true
fastMA = Average[20](close)
slowMA = Average[50](close)
// Add one contract on each new bullish crossover,
// but never hold more than 4 contracts in total
IF fastMA crosses over slowMA AND abs(COUNTOFPOSITION) < 4 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Flatten everything on a bearish crossover
IF LongOnMarket AND fastMA crosses under slowMA THEN
SELL AT MARKET
ENDIFActivar CumulateOrders permite que cada cruce añada un contrato, mientras que el COUNTOFPOSITION de protección limita la exposición total a cuatro contratos.
Ejemplo 3, Promediar en un short en las subidas (ProOrder)
DEFPARAM CumulateOrders = true
rsiVal = RSI[14](close)
// Open or add to the short each time RSI pushes above 70,
// capped at three lots
IF rsiVal crosses over 70 AND COUNTOFSHORTSHARES < 3 THEN
SELLSHORT 1 LOT AT MARKET
ENDIF
SET STOP %TRAILING 1Cada impulso de sobrecompra añade un lote al short. Como la entrada usa crosses over, la orden se dispara una vez por excursión del RSI en lugar de en cada bar en que se mantiene el nivel.
Errores y trampas habituales
- DEFPARAM placed too late. Todas
DEFPARAMdeclaraciones, incluyendoCumulateOrders, debe ir antes de cualquier otra instrucción. Una declaración después de la lógica de trading provoca un error de compilación. - Fallo silencioso de la piramidación. Cuando las entradas adicionales nunca se ejecutan aunque se cumplan las condiciones, la causa habitual es el parámetro dejado en
falseu omitido en código copiado de una estrategia de entrada única. Las órdenes se descartan sin ningún aviso. - Acumulación descontrolada. Con
CumulateOrders = true, una condición escrita como estado (rsiVal > 70) en lugar de un evento (rsiVal crosses over 70) envía una orden en cada bar en que sigue siendo verdadera. Combina condiciones de tipo evento con unCOUNTOFPOSITIONlímite. - Esperar que fusione órdenes opuestas. El parámetro solo rige la acumulación en la misma dirección. Una orden contraria a una posición abierta sigue reduciéndola o invirtiéndola según la gestión normal de órdenes, independientemente de este ajuste.
Instrucciones relacionadas
DEFPARAM, declara los parámetros de la estrategia al principio del código.COUNTOFPOSITION, tamaño con signo de la posición abierta, utilizado para limitar la piramidación.COUNTOFLONGSHARES, número sin signo de acciones mantenidas en long.COUNTOFSHORTSHARES, número sin signo de acciones mantenidas en short.BUY, abre o amplía una posición long.SELLSHORT, abre o amplía una posición short.ONMARKET, verdadero mientras hay alguna posición abierta.FLATAFTER, parámetro de DEFPARAM que fuerza a la estrategia a estar plana después de una hora determinada.FLATBEFORE, parámetro de DEFPARAM que mantiene la estrategia plana antes de una hora determinada.