CumulateOrders
CumulateOrders är en DEFPARAM-parameter som styr om en ProOrder-strategi kan lägga flera entries i samma riktning på varandra. Syntax och exempel.
Syntax
DEFPARAM CumulateOrders = trueDEFPARAM CumulateOrders = falseParametrar
| Namn | Typ | Standard | Beskrivning |
|---|---|---|---|
CumulateOrders | boolesk | true | När true, adderas entryordrar i riktning mot en öppen position till den. När false, ignoreras sådana ordrar till dess att positionen stängts. |
Så fungerar det
CumulateOrders är inte en körbar instruktion utan en parameter på strateginivå som deklareras med DEFPARAM. Som alla DEFPARAM raderna måste den stå högst upp i koden, före all tradinglogik, och den utvärderas en gång när strategin startar.
Med CumulateOrders = false, håller strategin som mest en positionsdel per riktning. Om en BUY villkoret löser ut medan en long redan är öppen, förkastas den extra ordern. Det håller position size fast och är det vanliga valet för strategier där varje signal motsvarar en komplett affär.
Med CumulateOrders = true, varje gång ett entryvillkor uppfylls skickas ytterligare en order i samma riktning, så positionen växer. Det möjliggör pyramidering och inköp i flera steg, men det betyder också att ett villkor som förblir sant bar efter bar fortsätter köpa till dess att marginal- eller plattformsgränser går emellan. Kumulativa strategier kombinerar därför nästan alltid parametern med ett storleksvillkor byggt på COUNTOFPOSITION, COUNTOFLONGSHARES eller COUNTOFSHORTSHARES.
Parametern påverkar inte exits. SELL, EXITSHORT och stop- eller målinstruktioner beter sig likadant i båda lägena.
Exempel
Exempel 1, Begränsa strategin till ett entry per riktning (ProOrder)
DEFPARAM CumulateOrders = false
// One position slice at a time. While a long is open,
// further BUY orders in the same direction are ignored.Deklarationen bevarad från den officiella referensen. Placerad i början av programmet hindrar den strategin från att öka en befintlig position.
Exempel 2, Pyramidering med ett uttalat storlekstak (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
ENDIFAtt aktivera CumulateOrders låter varje korsning lägga till ett kontrakt, medan COUNTOFPOSITION skyddet begränsar den totala exponeringen till fyra kontrakt.
Exempel 3, Snitta in i en short vid uppgångar (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 1Varje överköpt rörelse lägger till en lot till shorten. Eftersom entryt använder crosses over, utlöses ordern en gång per RSI-utsvängning i stället för på varje bar nivån håller.
Vanliga fel och fallgropar
- DEFPARAM placed too late. Alla
DEFPARAMdeklarationer, inklusiveCumulateOrders, måste komma före varje annan instruktion. En deklaration efter handelslogiken ger ett kompileringsfel. - Tyst misslyckad pyramidering. När påfyllnadsentries aldrig utförs trots att villkoren uppfylls är den vanliga orsaken att parametern lämnats på
falseeller utelämnad i kod kopierad från en strategi med en enda entry. Orderna förkastas utan någon varning. - Skenande ackumulering. Med
CumulateOrders = true, ett villkor skrivet som ett tillstånd (rsiVal > 70) i stället för en händelse (rsiVal crosses over 70) skickar en order på varje bar den förblir sann. Kombinera händelsebaserade villkor med enCOUNTOFPOSITIONgräns. - Att förvänta sig att den slår samman motsatta order. Parametern styr bara staplande i samma riktning. En order mot en öppen position minskar eller vänder den fortfarande enligt normal orderhantering, oavsett den här inställningen.
Relaterade instruktioner
DEFPARAM, deklarerar strategiparametrar högst upp i koden.COUNTOFPOSITION, storlek med tecken på den öppna positionen, används för att begränsa pyramidering.COUNTOFLONGSHARES, antal aktier som innehas long, utan tecken.COUNTOFSHORTSHARES, antal aktier som innehas short, utan tecken.BUY, öppnar eller utökar en long-position.SELLSHORT, öppnar eller utökar en short-position.ONMARKET, sant så länge någon position är öppen.FLATAFTER, DEFPARAM-parameter som tvingar strategin att vara flat efter en angiven tidpunkt.FLATBEFORE, DEFPARAM-parameter som håller strategin flat före en angiven tidpunkt.