CumulateOrders
CumulateOrders est un paramètre DEFPARAM qui contrôle si une stratégie ProOrder peut cumuler plusieurs entrées dans la même direction. Syntaxe et exemples.
Syntaxe
DEFPARAM CumulateOrders = trueDEFPARAM CumulateOrders = falseParamètres
| Nom | Type | Par défaut | Description |
|---|---|---|---|
CumulateOrders | booléen | true | Quand true, les ordres d'entrée dans le sens d'une position ouverte s'y ajoutent. Lorsque false, ces ordres sont ignorés jusqu'à la clôture de la position. |
Comment ça marche
CumulateOrders n'est pas une instruction exécutable mais un paramètre de niveau stratégie déclaré avec DEFPARAM. Comme tous DEFPARAM lignes, elle doit figurer en haut du code, avant toute logique de trading, et elle est évaluée une seule fois au démarrage de la stratégie.
Avec CumulateOrders = false, la stratégie ne détient au plus qu'une tranche de position par sens. Si un BUY se déclenche alors qu'un long est déjà ouvert, l'ordre supplémentaire est ignoré. Cela maintient la position size fixe et c'est le choix habituel pour les stratégies où chaque signal représente un trade complet.
Avec CumulateOrders = true, chaque fois qu'une condition d'entrée est remplie, un nouvel ordre est envoyé dans le même sens, et la position grossit. Cela permet le pyramidage et le renforcement progressif, mais cela signifie aussi qu'une condition qui reste vraie bar après bar continuera d'acheter jusqu'à ce que la marge ou les limites de la plateforme interviennent. Les stratégies cumulatives associent donc presque toujours ce paramètre à un garde-fou de taille construit sur COUNTOFPOSITION, COUNTOFLONGSHARES ou COUNTOFSHORTSHARES.
Le paramètre n'affecte pas les sorties. SELL, EXITSHORT et les instructions de stop ou d'objectif se comportent de la même façon dans les deux modes.
Exemples
Exemple 1, Limiter la stratégie à une entrée par direction (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 déclaration conservée de la référence officielle. Placée en tête du programme, elle empêche la stratégie de renforcer une position existante.
Exemple 2, Pyramidage avec un plafond de taille explicite (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
ENDIFActiver CumulateOrders permet à chaque croisement d'ajouter un contrat, tandis que le COUNTOFPOSITION garde-fou limite l'exposition totale à quatre contrats.
Exemple 3, Renforcement progressif d'un short lors des rebonds (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 1Chaque poussée de surachat ajoute un lot au short. Comme l'entrée utilise crosses over, l'ordre se déclenche une fois par excursion du RSI plutôt que sur chaque bar où le niveau tient.
Erreurs et pièges courants
- DEFPARAM placed too late. Tout
DEFPARAMdéclarations, y comprisCumulateOrders, doit venir avant toute autre instruction. Une déclaration après la logique de trading provoque une erreur de compilation. - Échec silencieux du pyramidage. Quand les entrées additionnelles ne s'exécutent jamais malgré des conditions remplies, la cause habituelle est le paramètre laissé à
falseou omis dans du code copié d'une stratégie à entrée unique. Les ordres sont abandonnés sans aucun avertissement. - Accumulation incontrôlée. Avec
CumulateOrders = true, une condition écrite comme un état (rsiVal > 70) au lieu d'un événement (rsiVal crosses over 70) envoie un ordre sur chaque bar où elle reste vraie. Combinez les conditions de type événement avec unCOUNTOFPOSITIONplafond. - S'attendre à ce qu'il fusionne les ordres opposés. Le paramètre ne régit que le cumul dans la même direction. Un ordre opposé à une position ouverte la réduit ou l'inverse toujours selon la gestion normale des ordres, quel que soit ce réglage.
Instructions liées
DEFPARAM, déclare les paramètres de la stratégie en tête du code.COUNTOFPOSITION, taille signée de la position ouverte, utilisée pour plafonner le pyramidage.COUNTOFLONGSHARES, nombre non signé d'actions détenues en long.COUNTOFSHORTSHARES, nombre non signé d'actions détenues en short.BUY, ouvre une position long ou la renforce.SELLSHORT, ouvre une position short ou la renforce.ONMARKET, vrai tant qu'une position est ouverte.FLATAFTER, paramètre DEFPARAM qui force la stratégie hors position après une heure définie.FLATBEFORE, paramètre DEFPARAM qui maintient la stratégie hors position avant une heure définie.