Iscriviti ora
ProBacktest/probacktest · proorder

QUIT

QUIT in ProBacktest e ProOrder arresta immediatamente un sistema di trading, chiudendo le posizioni aperte e annullando gli ordini pendenti. Sintassi e avvertenze sul riavvio.

Sintassi

probuilder
QUIT

Come funziona

Quando l'esecuzione raggiunge un'istruzione QUIT, il sistema di trading si arresta su quella barra. Qualsiasi posizione aperta viene chiusa al mercato, tutti gli ordini stop e limit pendenti vengono annullati e la strategia smette di elaborare le barre successive. L'arresto è definitivo dal punto di vista del codice: nessuna istruzione può riavviare un sistema arrestato, quindi riprendere l'operatività richiede di rilanciare manualmente la strategia dalla piattaforma.

In ProBacktest l'effetto è lo stesso in simulazione. Il test termina sulla barra in cui QUIT viene eseguito e la storia restante viene ignorata, cosa utile per modellare un limite rigido di capitale.

QUIT è quasi sempre racchiuso in una condizione. I pattern usuali sono una soglia minima di equity letta da STRATEGYPROFIT, un orario di arresto letto dalle costanti di orario come CurrentHour, oppure un controllo sullo stato della posizione costruito con ONMARKET, LONGONMARKET o SHORTONMARKET. Agisce come ultima linea di difesa dopo le protezioni per singola operazione come stop e target.

Esempi

Esempio 1, Arresto alle 22:00 mentre si è short (ProOrder)

probuilder
// Stop the system at 22:00 if a short position is still open
IF ShortOnMarket AND CurrentHour = 22 THEN
  QUIT
ENDIF

Alla prima barra dell'ora 22:00 con una posizione short aperta, la posizione viene chiusa e il sistema si arresta. Questo è il primo esempio tratto dal riferimento ufficiale.

Esempio 2, Kill switch sull'equity (ProOrder)

probuilder
// Terminate the strategy once it has lost 200 units of account currency
IF StrategyProfit < -200 THEN
  QUIT
ENDIF

STRATEGYPROFIT traccia il risultato cumulativo del sistema. Quando la perdita supera 200 unità di valuta, QUIT azzera le posizioni e arresta definitivamente l'operatività.

Esempio 3, Limite di drawdown dal picco di equity (ProBacktest)

probuilder
// 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
ENDIF

Invece di una soglia di perdita fissa, il kill switch si attiva su un drawdown misurato dal migliore equity raggiunto, un modo comune per modellare in un backtest un limite di rischio in stile fondo.

Errori e insidie comuni

  • Nessun riavvio programmatico. Una volta eseguito QUIT, il sistema è arrestato in modo definitivo. Non esiste un'istruzione che lo riarmi; riavviare significa rilanciare la strategia manualmente. Una condizione che si attiva troppo facilmente può mettere offline silenziosamente un sistema live.
  • Uscita al mercato, con slippage. QUIT chiude la posizione aperta al prezzo di mercato. In condizioni veloci l'esecuzione può essere notevolmente peggiore dell'ultimo prezzo quotato, quindi la perdita realizzata può superare la soglia che ha innescato l'arresto.
  • Un QUIT senza condizione arresta alla prima barra. Posizionato fuori da qualsiasi blocco IF, QUIT viene eseguito immediatamente e la strategia non opera mai. Deve sempre trovarsi dietro una condizione.
  • I backtest troncati distorcono le statistiche. In ProBacktest, QUIT termina la simulazione in anticipo. Confrontare esecuzioni in cui una versione si arresta a metà dei dati con una versione che arriva alla fine non è un confronto omogeneo; controlla il numero di barre effettivamente operate.
  • STRATEGYPROFIT, profitto cumulativo del sistema nella valuta del conto.
  • CurrentHour, ora della barra corrente, utile per arresti programmati.
  • ONMARKET, vero mentre una qualsiasi posizione è aperta.
  • SHORTONMARKET, vero mentre una posizione short è aperta.
  • LONGONMARKET, vero mentre una posizione long è aperta.
  • FLATAFTER, obbliga la strategia a restare senza posizioni dopo un dato orario ogni giorno.
  • FLATBEFORE, obbliga la strategia a restare senza posizioni prima di un dato orario ogni giorno.
  • SELL, chiude una posizione long aperta.
  • EXITSHORT, chiude una posizione short aperta.