CumulateOrders
CumulateOrders è un parametro DEFPARAM che controlla se una strategia ProOrder può accumulare più ingressi nella stessa direzione. Sintassi ed esempi.
Sintassi
DEFPARAM CumulateOrders = trueDEFPARAM CumulateOrders = falseParametri
| Nome | Tipo | Predefinito | Descrizione |
|---|---|---|---|
CumulateOrders | booleano | true | Quando true, gli ordini di ingresso nella direzione di una posizione aperta si aggiungono a essa. Quando false, tali ordini vengono ignorati fino alla chiusura della posizione. |
Come funziona
CumulateOrders non è un'istruzione eseguibile ma un parametro a livello di strategia dichiarato con DEFPARAM. Come tutti DEFPARAM righe, deve comparire all'inizio del codice, prima di qualsiasi logica di trading, ed è valutato una volta all'avvio della strategia.
Con CumulateOrders = false, la strategia mantiene al massimo una porzione di posizione per direzione. Se un BUY condizione si attiva mentre un long è già aperto, l'ordine aggiuntivo viene scartato. Questo mantiene fissa la position size ed è la scelta abituale per le strategie in cui ogni segnale rappresenta un'operazione completa.
Con CumulateOrders = true, ogni volta che una condizione di ingresso è soddisfatta viene inviato un altro ordine nella stessa direzione, quindi la posizione cresce. Questo consente il piramidaggio e la mediazione del prezzo di ingresso, ma significa anche che una condizione che resta vera bar dopo bar continuerà a comprare fino all'intervento dei limiti di margine o della piattaforma. Le strategie cumulative abbinano quindi quasi sempre il parametro a un controllo sulla position size basato su COUNTOFPOSITION, COUNTOFLONGSHARES o COUNTOFSHORTSHARES.
Il parametro non influisce sulle uscite. SELL, EXITSHORT e le istruzioni di stop o target si comportano allo stesso modo in entrambe le modalità.
Esempi
Esempio 1, Limitare la strategia a un ingresso per direzione (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 dichiarazione conservata dal riferimento ufficiale. Posta all'inizio del programma, impedisce alla strategia di aggiungere a una posizione esistente.
Esempio 2, Piramidazione con un limite esplicito di dimensione (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
ENDIFAttivare CumulateOrders permette a ogni incrocio di aggiungere un contratto, mentre COUNTOFPOSITION guard limita l'esposizione totale a quattro contratti.
Esempio 3, Mediare in uno short sui rialzi (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 1Ogni spinta in ipercomprato aggiunge un lotto allo short. Poiché l'ingresso usa crosses over, l'ordine parte una volta per ogni escursione dell'RSI anziché su ogni bar in cui il livello si mantiene.
Errori e insidie comuni
- DEFPARAM placed too late. Tutte
DEFPARAMdichiarazioni, incluseCumulateOrders, deve precedere qualsiasi altra istruzione. Una dichiarazione dopo la logica di trading causa un errore di compilazione. - Fallimento silenzioso della piramidazione. Quando gli ingressi aggiuntivi non vengono mai eseguiti nonostante le condizioni siano soddisfatte, la causa consueta è il parametro lasciato a
falseo omesso in codice copiato da una strategia a ingresso singolo. Gli ordini vengono scartati senza alcun avviso. - Accumulo incontrollato. Con
CumulateOrders = true, una condizione scritta come stato (rsiVal > 70) invece di un evento (rsiVal crosses over 70) invia un ordine su ogni bar in cui rimane vera. Combina condizioni di tipo evento con unCOUNTOFPOSITIONlimite. - Aspettarsi che unisca gli ordini opposti. Il parametro governa solo l'accumulo nella stessa direzione. Un ordine contrario a una posizione aperta la riduce o la inverte comunque secondo la normale gestione degli ordini, indipendentemente da questa impostazione.
Istruzioni correlate
DEFPARAM, dichiara i parametri della strategia all'inizio del codice.COUNTOFPOSITION, dimensione con segno della posizione aperta, usata per limitare la piramidazione.COUNTOFLONGSHARES, conteggio senza segno delle azioni detenute long.COUNTOFSHORTSHARES, conteggio senza segno delle azioni detenute short.BUY, apre o incrementa una posizione long.SELLSHORT, apre o incrementa una posizione short.ONMARKET, vero mentre una qualsiasi posizione è aperta.FLATAFTER, parametro DEFPARAM che forza la strategia flat dopo un orario stabilito.FLATBEFORE, parametro DEFPARAM che mantiene la strategia flat prima di un orario stabilito.