CumulateOrders
CumulateOrders ist ein DEFPARAM-Parameter, der steuert, ob eine ProOrder-Strategie mehrere Einstiege in dieselbe Richtung stapeln kann. Syntax und Beispiele.
Syntax
DEFPARAM CumulateOrders = trueDEFPARAM CumulateOrders = falseParameter
| Name | Typ | Standard | Beschreibung |
|---|---|---|---|
CumulateOrders | Boolean | true | Wenn true, erhöhen Einstiegsorders in Richtung einer offenen Position diese. Wenn false, werden solche Orders ignoriert, bis die Position geschlossen ist. |
So funktioniert es
CumulateOrders ist kein ausführbarer Befehl, sondern ein Parameter auf Strategieebene, deklariert mit DEFPARAM. Wie alle DEFPARAM Zeilen muss es am Anfang des Codes stehen, vor jeder Trading-Logik, und es wird einmal beim Start der Strategie ausgewertet.
Mit CumulateOrders = false, hält die Strategie höchstens eine Positionsscheibe pro Richtung. Wenn ein BUY Bedingung auslöst, während ein Long bereits offen ist, wird die zusätzliche Order verworfen. Das hält die Position Size fest und ist die übliche Wahl für Strategien, bei denen jedes Signal einen vollständigen Trade darstellt.
Mit CumulateOrders = true, wird bei jeder erfüllten Einstiegsbedingung eine weitere Order in dieselbe Richtung gesendet, sodass die Position wächst. Das ermöglicht Pyramidisieren und Nachkaufen, bedeutet aber auch, dass eine Bedingung, die Bar für Bar wahr bleibt, immer weiter kauft, bis Margin- oder Plattformgrenzen eingreifen. Kumulative Strategien koppeln den Parameter daher fast immer mit einer Größenprüfung auf Basis von COUNTOFPOSITION, COUNTOFLONGSHARES oder COUNTOFSHORTSHARES.
Der Parameter hat keinen Einfluss auf Ausstiege. SELL, EXITSHORT und Stop- oder Target-Befehle verhalten sich in beiden Modi gleich.
Beispiele
Beispiel 1, Die Strategie auf einen Einstieg pro Richtung beschränken (ProOrder)
DEFPARAM CumulateOrders = false
// One position slice at a time. While a long is open,
// further BUY orders in the same direction are ignored.Die aus der offiziellen Referenz übernommene Deklaration. Am Anfang des Programms platziert, verhindert sie, dass die Strategie eine bestehende Position aufstockt.
Beispiel 2, Pyramiding mit einer ausdrücklichen Größenbegrenzung (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
ENDIFAktivieren CumulateOrders lässt jede Kreuzung einen Kontrakt hinzufügen, während COUNTOFPOSITION Schutz begrenzt das Gesamtexposure auf vier Kontrakte.
Beispiel 3, Eine short-Position bei Rallyes stufenweise aufbauen (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 1Jeder Überkauft-Schub fügt dem short ein Lot hinzu. Da für den Einstieg crosses over, wird die Order einmal pro RSI-Ausschlag ausgelöst und nicht auf jeder Bar, auf der das Niveau hält.
Häufige Fehler und Stolperfallen
- DEFPARAM placed too late. Alle
DEFPARAMDeklarationen, einschließlichCumulateOrders, muss vor jedem anderen Befehl stehen. Eine Deklaration nach der Handelslogik verursacht einen Kompilierfehler. - Stilles Scheitern des Pyramidings. Wenn Nachkauf-Einstiege trotz erfüllter Bedingungen nie ausgeführt werden, liegt die übliche Ursache im Parameter, belassen auf
falseoder in Code weggelassen, der aus einer Strategie mit nur einem Einstieg kopiert wurde. Die Orders werden ohne jede Warnung verworfen. - Unkontrollierte Akkumulation. Mit
CumulateOrders = true, eine als Zustand geschriebene Bedingung (rsiVal > 70) anstelle eines Ereignisses (rsiVal crosses over 70) sendet auf jeder Bar eine Order, auf der sie wahr bleibt. Kombinieren Sie ereignisartige Bedingungen mit einemCOUNTOFPOSITIONObergrenze. - Erwarten, dass es entgegengesetzte Orders zusammenführt. Der Parameter steuert nur das Stapeln in derselben Richtung. Eine Order gegen eine offene Position reduziert oder dreht sie weiterhin gemäß der normalen Orderverarbeitung, unabhängig von dieser Einstellung.
Verwandte Befehle
DEFPARAM, deklariert Strategieparameter am Anfang des Codes.COUNTOFPOSITION, vorzeichenbehaftete Größe der offenen Position, verwendet zur Begrenzung des Pyramidings.COUNTOFLONGSHARES, vorzeichenlose Anzahl der long gehaltenen Aktien.COUNTOFSHORTSHARES, vorzeichenlose Anzahl der short gehaltenen Aktien.BUY, eröffnet eine Long-Position oder baut sie aus.SELLSHORT, eröffnet eine Short-Position oder baut sie aus.ONMARKET, wahr, solange eine Position offen ist.FLATAFTER, DEFPARAM-Parameter, der die Strategie nach einer festgelegten Zeit flat stellt.FLATBEFORE, DEFPARAM-Parameter, der die Strategie vor einer festgelegten Zeit flat hält.