MINORDER
MINORDER is een DEFPARAM-instelling in ProBacktest en ProOrder die de kleinste uitgevoerde ordergrootte vastlegt. Orders onder de drempel worden volledig genegeerd.
Syntaxis
DEFPARAM MINORDER = valueParameters
| Naam | Type | Standaard | Beschrijving |
|---|---|---|---|
value | numeriek | geen | Kleinste aantal eenheden, contracten of lots dat in één order kan worden uitgevoerd. |
Hoe het werkt
DEFPARAM statements configureren de uitvoeringsomgeving en moeten bovenaan de strategie staan, vóór elke uitvoerbare instructie. MINORDER legt een bodem onder de ordergrootte: elke order waarvan de hoeveelheid onder de ingestelde waarde valt, wordt verworpen in plaats van uitgevoerd.
De instelling bestaat voor het realisme. Veel instrumenten leggen een minimale handelbare omvang op, één lot op een forexaccount, één contract op een future, een minimale inleg op een CFD. Een sizingformule die kapitaal door de koers deelt, kan fractionele of heel kleine aantallen opleveren die geen enkele broker zou accepteren. MINORDER filtert die orders eruit zodat de simulatie alleen trades bevat die in de praktijk kunnen bestaan.
In tegenstelling tot MAXORDER, die te grote orders terugbrengt tot het maximum, MINORDER rondt een te klein order niet naar boven af. Het order wordt simpelweg niet verzonden. Een strategie waarvan de berekende omvang onder de drempel blijft, stapt daarom nooit de markt in, en dat is zelf een nuttige diagnose: het laat zien dat het kapitaal of de sizingformule niet toereikend is voor het instrument.
Voorbeelden
Voorbeeld 1, Een minimum van één eenheid afdwingen (ProBacktest)
// orders below 1 unit are not executed
DEFPARAM MINORDER = 1
IF NOT OnMarket AND close crosses over Average[50](close) THEN
BUY 1 CONTRACT AT MARKET
ENDIFDe basisconfiguratie uit de referentie. Elke order van minimaal één contract komt erdoor, alles wat kleiner is zou worden weggegooid.
Voorbeeld 2, Cashgebaseerde sizing die onder de ondergrens kan vallen (ProBacktest)
DEFPARAM MINORDER = 1
// invest a fixed cash slice per trade
capitalPerTrade = 5000
positionsize = FLOOR(capitalPerTrade / close)
IF NOT OnMarket AND RSI[14](close) < 30 THEN
BUY positionsize SHARES AT MARKET
ENDIFWanneer de aandelenkoers boven 5000 stijgt, positionsize komt uit op 0 en de order valt onder de MINORDER drempel, dus er vindt geen trade plaats. Het filter voorkomt dat orders met hoeveelheid nul de engine bereiken.
Voorbeeld 3, Minimale lotgrootte bij een Forex-strategie (ProOrder)
DEFPARAM MINORDER = 1
long = ExponentialAverage[20](close) crosses over ExponentialAverage[50](close)
IF NOT OnMarket AND long THEN
BUY 1 LOT AT MARKET
SET STOP PLOSS 40
ENDIF
IF LongOnMarket AND close < ExponentialAverage[50](close) THEN
SELL AT MARKET
ENDIFDe ondergrens voor orders spiegelt het kleinste verhandelbare lot van de account, zodat de backtest geen posities kan simuleren die de broker zou weigeren.
Veelvoorkomende fouten en valkuilen
- Te kleine orders verdwijnen stil. Orders onder de drempel worden overgeslagen zonder foutmelding of logregel. Een strategie die in een backtest nooit handelt, genereert mogelijk simpelweg hoeveelheden onder
MINORDER, niet aan niet-gehaalde instapvoorwaarden. - Geen afronding naar boven.
MINORDERfiltert, het tilt kleine orders niet op naar het minimum. Code die erop vertrouwt dat de engine een order van 0.4 lot optrekt naar 1 lot gedraagt zich anders dan verwacht: de order wordt verworpen. DEFPARAMplaatsing. AlleDEFPARAMstatements moeten voor de eerste uitvoerbare regel staan. EenDEFPARAM MINORDERverderop in de code compileert niet.- Uitstappen zijn ook orders. Een gedeeltelijke uitstap waarvan het aantal onder de drempel valt, wordt ook overgeslagen, waardoor een positie langer open kan blijven dan bedoeld bij het afbouwen met berekende aantallen.
Gerelateerde instructies
MAXORDER, maximale grootte die voor één order is toegestaan.DEFPARAM, declareert uitvoeringsparameters op strategieniveau.CASH, position sizing op basis van een geldbedrag.BUY, opent een long positie of breidt deze uit.SELL, sluit een deel of de hele long positie.LOT, orderhoeveelheid uitgedrukt in lots.CONTRACT, orderhoeveelheid uitgedrukt in contracten.SHARES, orderhoeveelheid uitgedrukt in aandelen.