Bli medlem i dag
ProBacktest/probacktest · proorder

CumulateOrders

CumulateOrders er en DEFPARAM-parameter som styrer om en ProOrder-strategi kan stable flere innganger i samme retning. Syntaks og eksempler.

Syntaks

probuilder
DEFPARAM CumulateOrders = true
probuilder
DEFPARAM CumulateOrders = false

Parametere

NavnTypeStandardBeskrivelse
CumulateOrdersboolsktrueNår true, legger inngangsordrer i retning av en åpen posisjon til den. Når false, ignoreres slike ordrer til posisjonen er lukket.

Slik fungerer det

CumulateOrders er ikke en kjørbar instruksjon, men en parameter på strateginivå deklarert med DEFPARAM. Som alle DEFPARAM linjer, må den stå øverst i koden, før all tradinglogikk, og den evalueres én gang når strategien starter.

Med CumulateOrders = false, holder strategien høyst én posisjonsdel per retning. Hvis en BUY betingelsen utløses mens en long allerede er åpen, forkastes den ekstra ordren. Dette holder position size fast og er det vanlige valget for strategier der hvert signal representerer én hel handel.

Med CumulateOrders = true, sendes det en ny ordre i samme retning hver gang en inngangsbetingelse er oppfylt, så posisjonen vokser. Dette gjør pyramidering og innsnitting mulig, men det betyr også at en betingelse som holder seg sann bar etter bar vil fortsette å kjøpe til margin- eller plattformgrenser griper inn. Kumulative strategier kombinerer derfor nesten alltid parameteren med en størrelsesvakt bygget på COUNTOFPOSITION, COUNTOFLONGSHARES eller COUNTOFSHORTSHARES.

Parameteren påvirker ikke utganger. SELL, EXITSHORT og stop- eller målinstruksjoner oppfører seg likt i begge moduser.

Eksempler

Eksempel 1, Begrense strategien til én inngang per retning (ProOrder)

probuilder
DEFPARAM CumulateOrders = false
// One position slice at a time. While a long is open,
// further BUY orders in the same direction are ignored.

Deklarasjonen er bevart fra den offisielle referansen. Plassert øverst i programmet hindrer den strategien fra å øke en eksisterende posisjon.

Eksempel 2, Pyramidering med en eksplisitt størrelsesgrense (ProBacktest)

probuilder
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
ENDIF

Å aktivere CumulateOrders lar hver kryssing legge til en kontrakt, mens COUNTOFPOSITION vakten begrenser total eksponering til fire kontrakter.

Eksempel 3, Snitte inn i en short på oppganger (ProOrder)

probuilder
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 1

Hver overkjøpt-impuls legger til en lot i short-posisjonen. Fordi inngangen bruker crosses over, utløses ordren én gang per RSI-utsving i stedet for på hver bar nivået holder.

Vanlige feil og fallgruver

  • DEFPARAM placed too late. Alle DEFPARAM deklarasjoner, inkludert CumulateOrders, må komme før alle andre instruksjoner. En deklarasjon etter handelslogikken gir en kompileringsfeil.
  • Stille feil i pyramideringen. Når tilleggsinnganger aldri utføres selv om betingelsene er oppfylt, er den vanlige årsaken at parameteren står på false eller utelatt i kode kopiert fra en strategi med én inngang. Ordrene forkastes uten noen advarsel.
  • Ukontrollert akkumulering. Med CumulateOrders = true, en betingelse skrevet som en tilstand (rsiVal > 70) i stedet for en hendelse (rsiVal crosses over 70) sender en ordre på hver bar betingelsen holder seg sann. Kombiner hendelsesbaserte betingelser med en COUNTOFPOSITION grense.
  • Forventer at den slår sammen motsatte ordrer. Parameteren styrer bare stabling i samme retning. En ordre mot en åpen posisjon reduserer eller reverserer den fortsatt i henhold til normal ordrehåndtering, uavhengig av denne innstillingen.
  • DEFPARAM, deklarerer strategiparametere øverst i koden.
  • COUNTOFPOSITION, fortegnsbestemt størrelse på den åpne posisjonen, brukt til å begrense pyramidering.
  • COUNTOFLONGSHARES, antall aksjer holdt long, uten fortegn.
  • COUNTOFSHORTSHARES, antall aksjer holdt short, uten fortegn.
  • BUY, åpner eller øker en long-posisjon.
  • SELLSHORT, åpner eller øker en short-posisjon.
  • ONMARKET, sann så lenge en posisjon er åpen.
  • FLATAFTER, DEFPARAM-parameter som tvinger strategien flat etter et fastsatt klokkeslett.
  • FLATBEFORE, DEFPARAM-parameter som holder strategien flat før et fastsatt klokkeslett.