CurrentHour
CurrentHour restituisce l'ora dell'orologio al momento dell'esecuzione, da 0 a 23, identica su ogni bar del grafico. Usa Hour per leggere l'ora della chiusura di ogni bar.
Sintassi
CurrentHourCome funziona
CurrentHour legge l'orologio nel momento in cui il codice viene eseguito e restituisce l'ora in formato 24 ore, da 0 a 23. Il riferimento è il fuso orario del mercato dello strumento, che può differire da quello della macchina locale. La costante non accetta parametri né offset tra parentesi quadre.
Il valore appartiene alla famiglia Current di costanti di data e ora, che descrivono il momento dell'esecuzione anziché un bar del grafico. Ogni bar di un calcolo vede quindi lo stesso numero: un indicatore aggiornato alle 14:20 restituisce 14 su ogni bar storico. La costante equivalente per bar è Hour, che restituisce l'ora della chiusura di ogni barra elaborata e cambia lungo l'asse temporale. I filtri di sessione applicati ai dati storici vanno usati con Hour o TIME; CurrentHour descrive l'ora corrente dell'orologio.
In un sistema ProOrder live CurrentHour è significativa, poiché il codice viene eseguito in tempo reale man mano che arrivano le bar. In un backtest riflette l'ora in cui viene eseguito il test, il che la rende inadatta a condizioni storiche di ingresso o uscita.
Esempi
Esempio 1, Flag di mezzogiorno (Indicatore)
// Set the flag when the script executes during the 12 o'clock hour
IF (CurrentHour = 12) THEN
GoLunch = 1
ELSE
GoLunch = 0
ENDIF
RETURN GoLunchL'indicatore traccia 1 su tutto il grafico quando viene ricalcolato tra le 12:00:00 e le 12:59:59 ora di mercato, e 0 in qualsiasi altro momento della giornata.
Esempio 2, Scansione limitata agli orari di sessione (ProScreener)
// Return matches only while the cash session is open
inSession = (CurrentHour >= 9) AND (CurrentHour < 17)
SCREENER[inSession AND close > Average[20](close)] (close AS "Close")Lo screener restituisce un elenco vuoto fuori dalle ore scelte, un modo per mantenere silenziosa una scansione programmata fuori dalla sessione.
Esempio 3, Spegnimento serale (ProOrder)
// Stop the strategy before the evening maintenance window
DEFPARAM CumulateOrders = false
IF CurrentHour >= 22 THEN
QUIT
ENDIF
IF close CROSSES OVER Average[20](close) THEN
BUY 1 CONTRACT AT MARKET
ENDIFIn live, il sistema si ferma da sé dalle 22:00 ora di mercato in poi. I backtest non possono esercitare questo ramo in modo significativo, perché CurrentHour contiene su ogni bar l'ora dell'esecuzione del test.
Errori e insidie comuni
- Stesso valore su ogni bar. CurrentHour descrive l'orologio, non il grafico, quindi una condizione come
CurrentHour = 12è vero o falso per l'intero calcolo in una sola volta. La logica di sessione bar per bar richiedeHouroTIME. - Punto cieco del backtest. In un backtest CurrentHour restituisce l'ora in cui viene eseguito il test, quindi i filtri temporali costruiti su di esso passano o bloccano in blocco e producono risultati che non corrispondono al comportamento live.
- Fuso orario del mercato, non ora locale. L'ora è riferita al mercato dello strumento. Un grafico di un titolo quotato a New York visualizzato dall'Europa restituisce le ore di New York, non le ore locali di chi guarda.
- Nessun offset tra parentesi.
CurrentHour[1]non compila. Solo costanti per bar comeHour[N]accettano un indice.
Istruzioni correlate
Hour, ora della chiusura di ogni bar, l'equivalente per bar di questa costante.OpenHour, ora all'apertura di ogni bar.CurrentMinute, minuto dell'orologio al momento dell'esecuzione.CurrentSecond, secondo dell'orologio al momento dell'esecuzione.CurrentTime, orario completo dell'orologio all'esecuzione come intero HHMMSS.CurrentDayOfWeek, giorno della settimana dell'orologio al momento dell'esecuzione.TIME, orario di chiusura di ogni bar come intero HHMMSS.Timestamp, tempo UNIX della chiusura di ogni bar.