Iscriviti ora
Data e ora/probuilder · probacktest · proorder · proscreener

CurrentTime

CurrentTime restituisce l'ora dell'orologio al momento dell'esecuzione come intero HHMMSS, identica su ogni bar del grafico. Usa TIME per leggere l'orario di chiusura di ogni bar.

Sintassi

probuilder
CurrentTime

Come funziona

CurrentTime legge l'orologio nel momento in cui il codice viene eseguito e restituisce l'ora del giorno come intero a sei cifre HHMMSS, dove HH è l'ora, MM il minuto e SS il secondo. Un valore di 073000 corrisponde alle 07:30:00. 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 07:30:00 restituisce 073000 su ogni bar storico. La costante equivalente per bar è TIME, che restituisce l'orario di chiusura di ogni barra elaborata e cambia lungo l'asse temporale. I filtri di sessione applicati ai dati storici vanno usati con TIME; CurrentTime descrive l'ora corrente dell'orologio.

Poiché il valore è un intero compatto, i confronti funzionano naturalmente: CurrentTime >= 090000 è vero dalle 09:00:00 in poi. In un sistema ProOrder live CurrentTime ha senso, perché il codice viene eseguito in tempo reale man mano che arrivano i bar. In un backtest riflette l'ora in cui il test viene eseguito, il che lo rende inadatto a condizioni storiche di ingresso o uscita.

Esempi

Esempio 1, Flag di risveglio (Indicatore)

probuilder
// Set the flag when the script executes at exactly 07:30:00
IF (CurrentTime = 073000) THEN
    WakeUp = 1
ELSE
    WakeUp = 0
ENDIF
RETURN WakeUp

L'indicatore traccia 1 su tutto il grafico quando viene ricalcolato alle 07:30:00 ora di mercato, e 0 altrimenti.

Esempio 2, Scansione all'interno degli orari di sessione (ProScreener)

probuilder
// Return matches only during the cash session
inSession = (CurrentTime >= 090000) AND (CurrentTime < 173000)
SCREENER[inSession AND close > Average[20](close)] (close AS "Close")

Lo screener restituisce un elenco vuoto fuori dalla finestra scelta, usando la forma compatta HHMMSS per un test di intervallo pulito.

Esempio 3, Spegnimento a fine giornata (ProOrder)

probuilder
// Stop the strategy near the close
DEFPARAM CumulateOrders = false
IF CurrentTime >= 173000 THEN
    QUIT
ENDIF
IF close CROSSES OVER Average[20](close) THEN
    BUY 1 CONTRACT AT MARKET
ENDIF

In live, il sistema si ferma da sé dalle 17:30:00 ora di mercato in poi. I backtest non possono esercitare questo ramo in modo significativo, perché CurrentTime contiene su ogni bar l'ora dell'esecuzione del test.

Errori e insidie comuni

  • Stesso valore su ogni bar. CurrentTime descrive l'orologio, non il grafico, quindi una condizione come CurrentTime = 073000 è vero o falso per l'intero calcolo in una sola volta. La logica di sessione bar per bar richiede TIME.
  • Punto cieco del backtest. In un backtest CurrentTime 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.
  • La corrispondenza esatta è fragile. CurrentTime = 073000 vale solo per un singolo secondo. I test su intervalli come CurrentTime >= 073000 sono più affidabili per la logica di filtro.
  • Nessun offset tra parentesi. CurrentTime[1] non compila. Solo costanti per bar come TIME accettano un indice come TIME[N].
  • TIME, orario di chiusura di ogni bar come intero HHMMSS, l'equivalente per bar di questa costante.
  • OpenTime, orario di apertura di ogni bar come intero HHMMSS.
  • OpenTimestamp, tempo UNIX dell'apertura di ogni bar.
  • Timestamp, tempo UNIX della chiusura di ogni bar.
  • CurrentHour, ora dell'orologio al momento dell'esecuzione.
  • CurrentMinute, minuto dell'orologio al momento dell'esecuzione.
  • CurrentSecond, secondo dell'orologio al momento dell'esecuzione.
  • CurrentYear, anno dell'orologio al momento dell'esecuzione.