Bli medlem i dag
ProBacktest/probacktest · proorder

MAXORDER

MAXORDER er en DEFPARAM-innstilling i ProBacktest og ProOrder som setter et tak på størrelsen til enhver enkeltordre. Ordrer over grensen kuttes ned til maksimumsstørrelsen.

Syntaks

probuilder
DEFPARAM MAXORDER = value

Parametere

NavnTypeStandardBeskrivelse
valuenumeriskingenMaksimalt antall enheter, kontrakter eller lots tillatt i en enkeltordre.

Slik fungerer det

DEFPARAM setningene konfigurerer kjøremiljøet til en strategi og må stå øverst i koden, før enhver kjørbar instruksjon. MAXORDER er en av disse innstillingene: den definerer en øvre grense for antallet i en enkelt ordre.

Grensen gjelder på ordrenivå, ikke posisjonsnivå. Når en ordresetning gir et antall over den konfigurerte verdien, utfører motoren den største tillatte størrelsen i stedet for å avvise ordren. En dynamisk dimensjonert ordre på 25 kontrakter under DEFPARAM MAXORDER = 10 fylles som 10 kontrakter.

Hovedbruksområdet er realisme. Formeldrevet position sizing, for eksempel å dele tilgjengelig kapital på pris, kan gi ordrestørrelser som ingen megler eller marked ville absorbert til én pris. Å sette tak på størrelsen til enkeltordren holder en backtest nærmere utførbare forhold og beskytter et live-system mot en løpsk størrelsesformel.

Fordi grensen gjelder per ordre, vil en strategi som akkumulerer posisjoner med DEFPARAM CumulateOrders = true kan likevel bygge en total posisjon større enn MAXORDER på tvers av flere ordre.

Eksempler

Eksempel 1, Begrense ordrestørrelsen til ti enheter (ProBacktest)

probuilder
// no single order may exceed 10 units
DEFPARAM MAXORDER = 10

IF NOT OnMarket AND close crosses over Average[50](close) THEN
  BUY 20 CONTRACTS AT MARKET
ENDIF

Strategien ber om 20 kontrakter, men MAXORDER innstillingen begrenser ordren til 10. Backtesten simulerer derfor den begrensede størrelsen, ikke den forespurte.

Eksempel 2, Sikre en kapitalbasert størrelsesformel (ProOrder)

probuilder
DEFPARAM MAXORDER = 5

// size grows with capital but can never exceed 5 contracts per order
positionsize = MAX(1, ROUND(strategyprofit / 10000))

IF NOT OnMarket AND RSI[14](close) < 30 THEN
  BUY positionsize CONTRACTS AT MARKET
ENDIF

Størrelsesformelen skalerer med akkumulert gevinst. MAXORDER fungerer som et absolutt tak, så en stor equity-verdi kan ikke presse en enkelt ordre forbi 5 kontrakter.

Eksempel 3, Ordretak med posisjonsakkumulering (ProBacktest)

probuilder
DEFPARAM CumulateOrders = true
DEFPARAM MAXORDER = 2

// add on each pullback to the 20-bar average, 2 contracts at most per order
IF close crosses over Average[20](close) AND CountOfPosition < 6 THEN
  BUY 2 CONTRACTS AT MARKET
ENDIF

Hver enkelt påbyggingsordre respekterer taket på 2 kontrakter, mens den akkumulerte posisjonen kan nå 6 kontrakter over tre ordrer. Taket begrenser ordrer, ikke den totale posisjonen.

Vanlige feil og fallgruver

  • Avkuttingen er stille. Ordrer over taket reduseres, de avvises ikke, og det gis ingen advarsel. En backtest kan stille og rolig trade mindre størrelser enn størrelsesformelen tilsier, noe som forvrenger gevinstforventningene hvis avkuttingen går ubemerket hen.
  • Per ordre, ikke per posisjon. Med CumulateOrders aktivert, kan flere begrensede ordrer stables til en posisjon langt større enn MAXORDER. Å begrense total eksponering krever en eksplisitt sjekk på CountOfPosition eller tilsvarende.
  • DEFPARAM plassering. Alle DEFPARAM setninger må komme før den første kjørbare linjen i strategien. En DEFPARAM MAXORDER plassert etter annen kode kompilerer ikke.
  • Ikke en meglergrense. Innstillingen begrenser hva strategien sender, den modellerer ikke maksgrenser hos børs eller megler. Live ordrer innenfor MAXORDER kan likevel overstige meglerens egne størrelsesgrenser.
  • MINORDER, minste ordrestørrelse som utføres under en backtest.
  • DEFPARAM, deklarerer utførelsesparametere på strateginivå.
  • CumulateOrders, tillater at flere ordrer akkumuleres til én posisjon.
  • BUY, åpner eller øker en long-posisjon.
  • SELLSHORT, åpner eller øker en short-posisjon.
  • LOT, ordrekvantum uttrykt i lots.
  • CONTRACT, ordrekvantum uttrykt i kontrakter.
  • SHARES, ordrekvantum uttrykt i aksjer.