Bli medlem idag
ProBacktest/probacktest · proorder

QUIT

QUIT i ProBacktest och ProOrder stoppar omedelbart ett handelssystem, stänger öppna positioner och avbryter väntande ordrar. Syntax och förbehåll kring omstart.

Syntax

probuilder
QUIT

Så fungerar det

När exekveringen når en QUIT-sats stängs handelssystemet av på den baren. Varje öppen position stängs till marknadspris, alla väntande stop- och limitordrar avbryts, och strategin slutar bearbeta ytterligare barer. Avstängningen är slutgiltig ur kodens perspektiv: ingen instruktion kan starta om ett stoppat system, så för att återuppta handeln måste strategin startas manuellt igen från plattformen.

I ProBacktest är effekten densamma i simuleringen. Testet avslutas på den bar där QUIT körs och den återstående historiken ignoreras, vilket är användbart för att modellera en hård kapitalgräns.

QUIT omges nästan alltid av ett villkor. De vanliga mönstren är ett equity-golv läst från STRATEGYPROFIT, en avstängningstid läst från klockkonstanterna som CurrentHour, eller ett skydd för positionsstatus byggt av ONMARKET, LONGONMARKET eller SHORTONMARKET. Den fungerar som sista försvarslinje efter skydd per affär som stops och mål.

Exempel

Exempel 1, Stäng av 22:00 när short (ProOrder)

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

På den första baren i timmen 22:00 med en short-position öppen stängs positionen och systemet stoppas. Detta är det första exemplet från den officiella referensen.

Exempel 2, Kill switch för equity (ProOrder)

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

STRATEGYPROFIT följer systemets kumulativa resultat. När förlusten överstiger 200 valutaenheter stänger QUIT alla positioner och stoppar handeln permanent.

Exempel 3, Drawdown-gräns från equity-toppen (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

I stället för ett fast förlustgolv utlöses kill switchen på en drawdown mätt från den högsta uppnådda equityn, ett vanligt sätt att modellera en fondliknande riskgräns i ett backtest.

Vanliga fel och fallgropar

  • Ingen programmatisk omstart. När QUIT har körts är systemet stoppat för gott. Det finns ingen instruktion som återaktiverar det; omstart innebär att strategin startas manuellt igen. Ett villkor som utlöses för lätt kan i tysthet ta ett livesystem offline.
  • Exit till marknadspris, med slippage. QUIT stänger den öppna positionen till marknadspris. I snabba marknadslägen kan fillen bli märkbart sämre än det senast noterade priset, så den realiserade förlusten kan överstiga den tröskel som utlöste avstängningen.
  • Villkorslös QUIT stoppar på första baren. Placerad utanför alla IF-block körs QUIT omedelbart och strategin handlar aldrig. Den måste alltid ligga bakom ett villkor.
  • Avkortade backtest snedvrider statistiken. I ProBacktest avslutar QUIT simuleringen i förtid. Att jämföra körningar där en version avbryter halvvägs genom datan med en version som körs till slutet är inte en jämförelse på lika villkor; kontrollera antalet barer som faktiskt handlats.
  • STRATEGYPROFIT, systemets kumulativa vinst i kontovaluta.
  • CurrentHour, den aktuella barens timme, användbar för tidsstyrda avstängningar.
  • ONMARKET, sant så länge någon position är öppen.
  • SHORTONMARKET, sant så länge en short-position är öppen.
  • LONGONMARKET, sant så länge en long-position är öppen.
  • FLATAFTER, tvingar strategin flat efter en given tidpunkt varje dag.
  • FLATBEFORE, tvingar strategin flat före en given tidpunkt varje dag.
  • SELL, stänger en öppen long-position.
  • EXITSHORT, stänger en öppen short-position.