MAXORDER
MAXORDER is een DEFPARAM-instelling in ProBacktest en ProOrder die de grootte van elke afzonderlijke order begrenst. Orders boven de limiet worden afgekapt tot de maximale grootte.
Syntaxis
DEFPARAM MAXORDER = valueParameters
| Naam | Type | Standaard | Beschrijving |
|---|---|---|---|
value | numeriek | geen | Maximaal aantal eenheden, contracten of lots dat in één order is toegestaan. |
Hoe het werkt
DEFPARAM statements configureren de uitvoeringsomgeving van een strategie en moeten bovenaan de code staan, vóór elke uitvoerbare instructie. MAXORDER is een van deze instellingen: het legt een bovengrens vast op de omvang van een enkele order.
Het plafond geldt op orderniveau, niet op positieniveau. Zodra een orderstatement een hoeveelheid boven de ingestelde waarde oplevert, voert de engine de maximaal toegestane grootte uit in plaats van de order te weigeren. Een dynamisch berekende order van 25 contracten onder DEFPARAM MAXORDER = 10 wordt gevuld als 10 contracten.
Het belangrijkste gebruiksdoel is realisme. Formulegestuurde position sizing, bijvoorbeeld het beschikbare kapitaal delen door de prijs, kan ordergroottes opleveren die geen enkele broker of markt tegen één prijs zou opnemen. Het begrenzen van de grootte van een enkele order houdt een backtest dichter bij uitvoerbare omstandigheden en beschermt een live systeem tegen een op hol geslagen sizing-formule.
Omdat de limiet per order geldt, kan een strategie die posities opbouwt met DEFPARAM CumulateOrders = true kan nog steeds een totale positie opbouwen die groter is dan MAXORDER over meerdere orders.
Voorbeelden
Voorbeeld 1, Ordergrootte begrenzen op tien eenheden (ProBacktest)
// 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
ENDIFDe strategie vraagt 20 contracten aan, maar de MAXORDER instelling kapt de order af op 10. De backtest simuleert daarom de begrensde grootte, niet de gevraagde.
Voorbeeld 2, Een kapitaalgebaseerde sizing-formule afschermen (ProOrder)
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
ENDIFDe sizingformule schaalt mee met de opgebouwde winst. MAXORDER werkt als een hard plafond, dus een grote equity-waarde kan één order niet verder duwen dan 5 contracten.
Voorbeeld 3, Orderplafond met positieopbouw (ProBacktest)
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
ENDIFElke afzonderlijke bijkooporder respecteert het plafond van 2 contracten, terwijl de opgebouwde positie over drie orders 6 contracten kan bereiken. Het plafond beperkt orders, niet de totale positie.
Veelvoorkomende fouten en valkuilen
- Het afkappen gebeurt stil. Orders boven het plafond worden verkleind, niet geweigerd, en er komt geen waarschuwing. Een backtest kan stilletjes kleinere groottes verhandelen dan de sizing-formule suggereert, wat de winstverwachtingen vertekent als het afkappen onopgemerkt blijft.
- Per order, niet per positie. Met
CumulateOrdersingeschakeld, kunnen meerdere afgetopte orders opstapelen tot een positie die veel groter is danMAXORDER. Het beperken van de totale exposure vereist een expliciete controle opCountOfPositionof gelijkwaardig. DEFPARAMplaatsing. AlleDEFPARAMstatements moeten vóór de eerste uitvoerbare regel van de strategie staan. EenDEFPARAM MAXORDERdie na andere code is geplaatst compileert niet.- Geen brokerlimiet. De instelling beperkt wat de strategie verstuurt, het modelleert geen maxima van beurs of broker. Live orders binnen
MAXORDERkan nog steeds de eigen groottelimieten van een broker overschrijden.
Gerelateerde instructies
MINORDER, minimale ordergrootte die tijdens een backtest wordt uitgevoerd.DEFPARAM, declareert uitvoeringsparameters op strategieniveau.CumulateOrders, staat toe dat meerdere orders tot één positie samenkomen.BUY, opent een long positie of breidt deze uit.SELLSHORT, opent een short positie of breidt deze uit.LOT, orderhoeveelheid uitgedrukt in lots.CONTRACT, orderhoeveelheid uitgedrukt in contracten.SHARES, orderhoeveelheid uitgedrukt in aandelen.