Iscriviti ora
ProBacktest/probacktest · proorder

FLATAFTER

FLATAFTER è un parametro DEFPARAM che chiude tutte le posizioni e annulla gli ordini pendenti dopo un orario stabilito ogni giorno nelle strategie ProBacktest e ProOrder.

Sintassi

probuilder
DEFPARAM FLATAFTER = HHMMSS

Parametri

NomeTipoPredefinitoDescrizione
FLATAFTERletterale temporale (HHMMSS)nessunoOra del giorno dopo la quale tutte le posizioni vengono chiuse, gli ordini pendenti annullati e i nuovi ordini bloccati. Formato 24 ore, ad es. 153000 per le 3:30 PM.

Come funziona

FLATAFTER viene dichiarato una volta con DEFPARAM all'inizio della strategia, prima di qualsiasi logica di trading. Dall'ora specificata in poi, la piattaforma chiude qualsiasi posizione aperta, annulla ogni ordine pendente e rifiuta nuovi ordini per il resto della giornata di trading. Il codice della strategia continua a essere eseguito, semplicemente non può mantenere né inviare operazioni oltre il limite, e il funzionamento normale riprende alla sessione successiva.

Il letterale di orario usa il formato HHMMSS su un orologio a 24 ore, quindi 153000 significa 15:30:00. Gli zeri iniziali possono essere scritti per leggibilità (073000), il valore è numerico in entrambi i casi.

Il parametro è il modo standard per costruire strategie di day trading che non devono mai mantenere posizioni overnight. Si abbina naturalmente con FLATBEFORE, che blocca il trading prima di un orario scelto, così insieme confinano tutta l'attività in una finestra intraday fissa. Rispetto a una logica di uscita costruita a mano basata su TIME, il DEFPARAM l'approccio annulla anche gli ordini pendenti, un passaggio che il codice di chiusura manuale spesso dimentica.

Esempi

Esempio 1, Flat dopo le 3:30 PM (ProOrder)

probuilder
// Close positions, cancel pending orders and stop trading after 15:30
DEFPARAM FLATAFTER = 153000

La dichiarazione conservata dalla documentazione ufficiale. Dopo le 3:30 PM nessuna posizione o ordine pendente sopravvive, il che garantisce che la strategia chiuda ogni giorno flat.

Esempio 2, Limitare un sistema breakout a una finestra di sessione (ProBacktest)

probuilder
// Trade only between 08:00 and 17:00
DEFPARAM FLATBEFORE = 080000
DEFPARAM FLATAFTER = 170000

// Buy a breakout of the highest high of the last 20 bars
IF close crosses over highest[20](high)[1] THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

SET STOP %TRAILING 0.8

FLATBEFORE e FLATAFTER racchiudono la sessione. Il backtest riflette quindi una strategia sempre flat fuori dalla finestra dalle 08:00 alle 17:00, compresi i suoi ordini di trailing stop.

Esempio 3, Evitare una chiusura illiquida sui futures su indici (ProOrder)

probuilder
// Force flat 15 minutes before the cash close
DEFPARAM FLATAFTER = 214500
DEFPARAM CumulateOrders = false

rsiVal = RSI[14](close)

IF rsiVal crosses under 30 THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

IF LongOnMarket AND rsiVal crosses over 60 THEN
  SELL AT MARKET
ENDIF

Qualunque cosa faccia la logica RSI, FLATAFTER garantisce che la posizione sia liquidata prima del flusso sottile di fine giornata.

Errori e insidie comuni

  • Dichiarato dopo la logica di trading. Tutte DEFPARAM righe devono precedere ogni altra istruzione. Collocare FLATAFTER sotto un IF blocco o un'istruzione d'ordine causa un errore di compilazione.
  • Formato dell'ora errato. Il valore è HHMMSS, non HHMM. Scrivere 1530 viene letto come 00:15:30, non 15:30:00, il che chiude la strategia subito dopo la mezzanotte invece che a metà pomeriggio.
  • Timeframe non corrispondente. Il limite si risolve alla granularità del bar. Su un grafico a 1 ora un FLATAFTER = 153000 il cutoff non può agire esattamente alle 15:30, quindi i cutoff intraday vanno su timeframe abbastanza fini da rappresentare quell'ora. Il parametro è privo di significato su timeframe giornalieri o superiori.
  • Ipotesi su orologio e fuso orario. L'orario è interpretato in base all'orologio che la piattaforma applica alle bar del grafico. Quando la borsa dello strumento si trova in un altro fuso orario, verificare l'orario limite effettivo sul grafico invece di presumere una corrispondenza con l'ora locale.
  • FLATBEFORE, parametro DEFPARAM che mantiene la strategia flat prima di un orario stabilito.
  • DEFPARAM, dichiara i parametri della strategia all'inizio del codice.
  • CumulateOrders, parametro DEFPARAM che controlla l'accumulo di ordini nella stessa direzione.
  • QUIT, arresta completamente la strategia dopo la chiusura delle posizioni.
  • TIME, orario della bar corrente per condizioni temporali scritte a mano.
  • CurrentTime, valore dell'ora dell'orologio utilizzabile nelle condizioni.
  • ONMARKET, vero mentre una qualsiasi posizione è aperta.
  • SELL, chiude totalmente o parzialmente una posizione long.