FLATBEFORE
FLATBEFORE è un parametro DEFPARAM che blocca l'operatività e mantiene una strategia ProBacktest o ProOrder flat prima di un orario stabilito della giornata. Sintassi ed esempi.
Sintassi
DEFPARAM FLATBEFORE = HHMMSSParametri
| Nome | Tipo | Predefinito | Descrizione |
|---|---|---|---|
FLATBEFORE | letterale temporale (HHMMSS) | nessuno | Ora del giorno prima della quale le posizioni vengono chiuse, gli ordini pendenti annullati e i nuovi ordini bloccati. Formato 24 ore, ad es. 073000 per le 7:30 AM. |
Come funziona
FLATBEFORE viene dichiarato una volta con DEFPARAM all'inizio della strategia, prima di tutta la logica di trading, e viene letto all'avvio della strategia. Prima dell'ora specificata, ogni giorno la piattaforma impone uno stato flat: chiude qualsiasi posizione che sarebbe altrimenti aperta, annulla gli ordini pendenti e rifiuta i nuovi. Il codice della strategia continua a essere eseguito durante quel periodo, i suoi calcoli vengono effettuati e le sue variabili aggiornate, solo l'invio degli ordini è soppresso. Dall'ora specificata in poi, il trading procede normalmente.
Il valore usa il formato HHMMSS su un orologio a 24 ore, quindi 073000 è 07:30:00. Il parametro non mette in pausa né ritarda la strategia, agisce puramente come filtro di accesso al trading.
Il motivo abituale per filtrare l'apertura di una sessione è evitare il price action erratico e i book sottili intorno all'apertura del mercato o nelle ore notturne. Combinato con FLATAFTER, che impone la chiusura delle posizioni dopo un certo orario, i due parametri definiscono una finestra di negoziazione giornaliera senza alcuna condizione temporale scritta a mano.
Esempi
Esempio 1, Nessuna operazione prima delle 7:30 AM (ProOrder)
// Stay flat until 07:30, then trade normally
DEFPARAM FLATBEFORE = 073000La dichiarazione conservata dalla documentazione ufficiale. Fino alle 7:30 AM di ogni giorno la strategia non detiene nulla e non piazza nulla.
Esempio 2, Saltare l'apertura volatile del cash (ProBacktest)
// Ignore the first 30 minutes after the 09:00 open
DEFPARAM FLATBEFORE = 093000
DEFPARAM FLATAFTER = 172500
// Mean-reversion entry on Bollinger band touch
lowerBand = BollingerDown[20](close)
IF close crosses under lowerBand THEN
BUY 1 CONTRACT AT MARKET
ENDIF
SET TARGET %PROFIT 1
SET STOP %LOSS 0.5Il backtesting con la finestra attiva mostra come si comporta il sistema quando viene esclusa la prima mezz'ora, in cui i tocchi delle bande sono più frequenti e meno affidabili.
Esempio 3, Limitare un sistema forex alla sessione di Londra (ProOrder)
// Trade only after the London open, flat again in the evening
DEFPARAM FLATBEFORE = 090000
DEFPARAM FLATAFTER = 200000
DEFPARAM CumulateOrders = false
fastMA = ExponentialAverage[9](close)
slowMA = ExponentialAverage[21](close)
IF fastMA crosses over slowMA THEN
BUY 1 LOT AT MARKET
ENDIF
IF LongOnMarket AND fastMA crosses under slowMA THEN
SELL AT MARKET
ENDIFI due parametri flat limitano tutta l'attività, ingressi, uscite e ordini pendenti allo stesso modo, alle ore di sessione scelte.
Errori e insidie comuni
- Dichiarato dopo la logica di trading.
DEFPARAMle dichiarazioni devono essere le prime istruzioni del programma. UnFLATBEFOREriga posizionata dopo qualsiasi ordine o condizione non viene compilata. - HHMM invece di HHMMSS.
DEFPARAM FLATBEFORE = 0930significa 00:09:30, non 09:30:00. Le cifre dei secondi sono obbligatorie, quindi un filtro alle 9:30 si scrive093000. - Aspettarsi che la strategia si metta in pausa. Il parametro non interrompe l'esecuzione del codice. Indicatori, contatori e variabili di stato continuano ad aggiornarsi prima dell'orario limite, viene bloccato solo l'invio degli ordini. Una logica che presuppone che nulla sia stato eseguito prima dell'apertura del filtro può essere errata.
- Timeframe ampi. Il filtro si risolve con la granularità della bar, quindi sui grafici da un'ora o più l'orario di sblocco effettivo può differire dal valore letterale, e sui timeframe giornalieri o superiori il parametro non serve a nulla.
Istruzioni correlate
FLATAFTER, parametro DEFPARAM che forza la strategia flat dopo 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.BUY, apre o incrementa una posizione long.