MAXORDER
MAXORDER ist eine DEFPARAM-Einstellung in ProBacktest und ProOrder, die die Größe jeder einzelnen Order begrenzt. Orders über dem Limit werden auf die maximale Größe abgeschnitten.
Syntax
DEFPARAM MAXORDER = valueParameter
| Name | Typ | Standard | Beschreibung |
|---|---|---|---|
value | numerisch | keine | Maximale Anzahl an Einheiten, Kontrakten oder Lots, die in einer einzelnen Order zulässig ist. |
So funktioniert es
DEFPARAM Anweisungen konfigurieren die Ausführungsumgebung einer Strategie und müssen am Anfang des Codes stehen, vor jedem ausführbaren Befehl. MAXORDER ist eine dieser Einstellungen: Sie definiert eine Obergrenze für die Menge einer einzelnen Order.
Die Obergrenze gilt auf Orderebene, nicht auf Positionsebene. Immer wenn eine Order-Anweisung eine Menge über dem konfigurierten Wert erzeugt, führt die Engine die maximal zulässige Größe aus, anstatt die Order abzulehnen. Eine dynamisch bemessene Order von 25 Kontrakten bei DEFPARAM MAXORDER = 10 wird als 10 Kontrakte ausgeführt.
Der Hauptanwendungsfall ist Realismus. Formelgesteuerte Bestimmung der Position Size, zum Beispiel die Division des verfügbaren Kapitals durch den Preis, kann Ordergrößen erzeugen, die kein Broker und kein Markt zu einem Preis aufnehmen würde. Die Begrenzung der Größe einer einzelnen Order hält einen Backtest näher an ausführbaren Bedingungen und schützt ein Live-System vor einer außer Kontrolle geratenen Größenformel.
Da das Limit pro Order gilt, kann eine Strategie, die Positionen mit DEFPARAM CumulateOrders = true kann dennoch eine Gesamtposition aufbauen, die größer ist als MAXORDER über mehrere Orders hinweg.
Beispiele
Beispiel 1, Ordergröße auf zehn Einheiten begrenzen (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
ENDIFDie Strategie fordert 20 Kontrakte an, aber MAXORDER Einstellung begrenzt die Order auf 10. Der Backtest simuliert daher die begrenzte Größe, nicht die angeforderte.
Beispiel 2, Eine kapitalbasierte Größenformel absichern (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
ENDIFDie Sizing-Formel skaliert mit dem angesammelten Gewinn. MAXORDER wirkt als harte Obergrenze, sodass ein hoher Equity-Wert eine einzelne Order nicht über 5 Kontrakte hinaus treiben kann.
Beispiel 3, Order-Obergrenze bei Positionsaufbau (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
ENDIFJede einzelne Nachkauf-Order hält die Obergrenze von 2 Kontrakten ein, während die aufgebaute Position über drei Orders 6 Kontrakte erreichen kann. Die Obergrenze beschränkt Orders, nicht die Gesamtposition.
Häufige Fehler und Stolperfallen
- Das Abschneiden erfolgt stillschweigend. Orders über der Obergrenze werden reduziert, nicht abgelehnt, und es wird keine Warnung ausgegeben. Ein Backtest kann unbemerkt kleinere Größen handeln, als die Größenformel vorgibt, was die Gewinnerwartungen verzerrt, wenn das Abschneiden unentdeckt bleibt.
- Pro Order, nicht pro Position. Mit
CumulateOrdersaktiviert, können sich mehrere begrenzte Orders zu einer Position aufsummieren, die weitaus größer ist alsMAXORDER. Die Begrenzung des Gesamtexposures erfordert eine explizite Prüfung vonCountOfPositionoder gleichwertig. DEFPARAMPlatzierung. AlleDEFPARAMAnweisungen müssen vor der ersten ausführbaren Zeile der Strategie stehen. EinDEFPARAM MAXORDERnach anderem Code platziert lässt sich nicht kompilieren.- Kein Broker-Limit. Die Einstellung begrenzt, was die Strategie sendet; sie modelliert keine Maximalwerte von Börse oder Broker. Live-Orders innerhalb
MAXORDERkann dennoch die eigenen Größenlimits eines Brokers überschreiten.
Verwandte Befehle
MINORDER, kleinste Ordergröße, die während eines Backtests ausgeführt wird.DEFPARAM, deklariert Ausführungsparameter auf Strategieebene.CumulateOrders, erlaubt, dass sich mehrere Orders zu einer Position aufaddieren.BUY, eröffnet eine Long-Position oder baut sie aus.SELLSHORT, eröffnet eine Short-Position oder baut sie aus.LOT, Ordermenge in Lots ausgedrückt.CONTRACT, Ordermenge in Kontrakten ausgedrückt.SHARES, Ordermenge in Aktien ausgedrückt.