MINORDER
MINORDER ist eine DEFPARAM-Einstellung in ProBacktest und ProOrder, die die kleinste ausgeführte Ordergröße festlegt. Orders unterhalb der Schwelle werden vollständig ignoriert.
Syntax
DEFPARAM MINORDER = valueParameter
| Name | Typ | Standard | Beschreibung |
|---|---|---|---|
value | numerisch | keine | Kleinste Anzahl an Einheiten, Kontrakten oder Lots, die in einer einzelnen Order ausgeführt werden kann. |
So funktioniert es
DEFPARAM Anweisungen konfigurieren die Ausführungsumgebung und müssen am Anfang der Strategie stehen, vor jeder ausführbaren Instruktion. MINORDER setzt eine Untergrenze für die Ordergröße: jede Order, deren Menge unter den konfigurierten Wert fällt, wird verworfen statt ausgeführt.
Die Einstellung existiert aus Realismusgründen. Viele Instrumente haben eine Mindesthandelsgröße, ein Lot auf einem Forex-Konto, ein Kontrakt bei einem Future, ein Mindesteinsatz bei einem CFD. Eine Größenformel, die Kapital durch Kurs teilt, kann Bruchteile oder sehr kleine Stückzahlen erzeugen, die kein Broker akzeptieren würde. MINORDER filtert diese Orders heraus, sodass die Simulation nur Trades enthält, die in der Praxis möglich wären.
Anders als MAXORDER, das übergroße Orders auf die Obergrenze begrenzt, MINORDER rundet eine zu kleine Order nicht auf. Die Order wird einfach nicht gesendet. Eine Strategie, deren berechnete Größe unter der Schwelle bleibt, tritt daher nie in den Markt ein, was selbst eine nützliche Diagnose ist: Es zeigt, dass das Kapital oder die Größenformel für das Instrument nicht ausreicht.
Beispiele
Beispiel 1, Ein Minimum von einer Einheit erzwingen (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
ENDIFDie Basiskonfiguration aus der Referenz. Jede Order von mindestens einem Kontrakt wird durchgelassen, alles Kleinere würde verworfen.
Beispiel 2, Cash-basierte Größenbestimmung, die unter die Untergrenze fallen kann (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
ENDIFWenn der Aktienkurs über 5000 steigt, positionsize ergibt 0 und die Order fällt unter MINORDER Schwelle, daher kommt kein Trade zustande. Der Filter verhindert, dass Orders mit Menge null die Engine erreichen.
Beispiel 3, Mindest-Lotgröße bei einer 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
ENDIFDie Mindestorder-Untergrenze spiegelt das kleinste handelbare Lot des Kontos wider, sodass der Backtest keine Positionen simulieren kann, die der Broker ablehnen würde.
Häufige Fehler und Stolperfallen
- Zu kleine Orders verschwinden stillschweigend. Orders unterhalb der Schwelle werden ohne Fehler oder Logeintrag übersprungen. Eine Strategie, die im Backtest nie handelt, erzeugt möglicherweise einfach Stückzahlen unter
MINORDER, nicht am Scheitern ihrer Einstiegsbedingungen. - Kein Aufrunden.
MINORDERfiltert, es hebt kleine Orders nicht auf das Minimum an. Code, der darauf setzt, dass die Engine eine 0.4-Lot-Order auf 1 Lot anhebt, verhält sich anders als erwartet, die Order wird verworfen. DEFPARAMPlatzierung. AlleDEFPARAMAnweisungen müssen vor der ersten ausführbaren Zeile stehen. EineDEFPARAM MINORDERweiter unten im Code lässt sich nicht kompilieren.- Ausstiege sind auch Orders. Ein Teilausstieg, dessen Menge unter der Schwelle liegt, wird ebenfalls übersprungen, was eine Position länger offen lassen kann als beabsichtigt, wenn mit berechneten Mengen stufenweise ausgestiegen wird.
Verwandte Befehle
MAXORDER, maximal zulässige Größe für eine einzelne Order.DEFPARAM, deklariert Ausführungsparameter auf Strategieebene.CASH, Positionsgröße auf Basis eines Geldbetrags.BUY, eröffnet eine Long-Position oder baut sie aus.SELL, schließt eine Long-Position ganz oder teilweise.LOT, Ordermenge in Lots ausgedrückt.CONTRACT, Ordermenge in Kontrakten ausgedrückt.SHARES, Ordermenge in Aktien ausgedrückt.