QUIT
QUIT in ProBacktest und ProOrder stoppt ein Handelssystem sofort, schließt offene Positionen und storniert ausstehende Orders. Syntax und Hinweise zum Neustart.
Syntax
QUITSo funktioniert es
Wenn die Ausführung eine QUIT-Anweisung erreicht, schaltet sich das Handelssystem auf diesem Bar ab. Jede offene Position wird zum Marktkurs geschlossen, alle ausstehenden Stop- und Limit-Orders werden storniert, und die Strategie verarbeitet keine weiteren Bars. Die Abschaltung ist aus Sicht des Codes endgültig: kein Befehl kann ein gestopptes System neu starten, daher erfordert die Wiederaufnahme des Handels einen manuellen Neustart der Strategie über die Plattform.
In ProBacktest ist die Wirkung in der Simulation dieselbe. Der Test endet auf dem Bar, auf dem QUIT ausgeführt wird, und die restliche Historie wird ignoriert, was zum Modellieren einer harten Kapitalgrenze nützlich ist.
QUIT wird fast immer in eine Bedingung eingebettet. Die üblichen Muster sind eine Equity-Untergrenze, ausgelesen aus STRATEGYPROFIT, eine Abschaltzeit, ausgelesen aus den Zeitkonstanten wie CurrentHour, oder eine Absicherung über den Positionsstatus, aufgebaut aus ONMARKET, LONGONMARKET oder SHORTONMARKET. Es wirkt als letzte Verteidigungslinie nach Absicherungen je Trade wie Stops und Zielen.
Beispiele
Beispiel 1, Abschaltung um 22:00 bei Short-Position (ProOrder)
// Stop the system at 22:00 if a short position is still open
IF ShortOnMarket AND CurrentHour = 22 THEN
QUIT
ENDIFBeim ersten Bar der Stunde 22:00 mit offener Short-Position wird die Position geschlossen und das System gestoppt. Dies ist das erste Beispiel aus der offiziellen Referenz.
Beispiel 2, Equity-Kill-Switch (ProOrder)
// Terminate the strategy once it has lost 200 units of account currency
IF StrategyProfit < -200 THEN
QUIT
ENDIFSTRATEGYPROFIT verfolgt das kumulative Ergebnis des Systems. Sobald der Verlust 200 Währungseinheiten überschreitet, stellt QUIT das Buch flat und stoppt den Handel dauerhaft.
Beispiel 3, Drawdown-Limit ab dem Equity-Hoch (ProBacktest)
// Track the equity high-water mark
ONCE peakEquity = 0
equity = StrategyProfit
IF equity > peakEquity THEN
peakEquity = equity
ENDIF
// Stop the test after a 500-unit drawdown from the peak
IF peakEquity - equity >= 500 THEN
QUIT
ENDIFStatt einer festen Verlustgrenze löst der Kill-Switch bei einem Drawdown aus, der vom höchsten erreichten Equity gemessen wird, eine gängige Art, ein fondsähnliches Risikolimit in einem Backtest zu modellieren.
Häufige Fehler und Stolperfallen
- Kein programmatischer Neustart. Sobald QUIT ausgeführt wird, ist das System endgültig gestoppt. Es gibt keinen Befehl, der es wieder aktiviert; ein Neustart bedeutet, die Strategie manuell neu zu starten. Eine Bedingung, die zu leicht auslöst, kann ein Live-System unbemerkt offline nehmen.
- Ausstieg zum Marktkurs, mit Slippage. QUIT schließt die offene Position zum Marktkurs. In schnellen Marktphasen kann der Fill deutlich schlechter sein als der zuletzt gestellte Kurs, sodass der realisierte Verlust die Schwelle überschreiten kann, die die Abschaltung ausgelöst hat.
- Ein bedingungsloses QUIT stoppt auf dem ersten Bar. Außerhalb jedes IF-Blocks platziert, wird QUIT sofort ausgeführt und die Strategie handelt nie. Es muss immer hinter einer Bedingung stehen.
- Abgeschnittene Backtests verzerren die Statistik. In ProBacktest beendet QUIT die Simulation vorzeitig. Durchläufe zu vergleichen, bei denen eine Version auf halbem Weg durch die Daten abbricht, mit einer Version, die bis zum Ende läuft, ist kein Vergleich auf gleicher Basis; prüfen Sie die Anzahl der tatsächlich gehandelten Bars.
Verwandte Befehle
STRATEGYPROFIT, kumulativer Gewinn des Systems in Kontowährung.CurrentHour, Stunde des aktuellen Bars, nützlich für zeitgesteuerte Abschaltungen.ONMARKET, wahr, solange eine Position offen ist.SHORTONMARKET, wahr, solange eine Short-Position offen ist.LONGONMARKET, wahr, solange eine Long-Position offen ist.FLATAFTER, setzt die Strategie nach einer bestimmten Uhrzeit jeden Tag flat.FLATBEFORE, setzt die Strategie vor einer bestimmten Uhrzeit jeden Tag flat.SELL, schließt eine offene Long-Position.EXITSHORT, schließt eine offene Short-Position.