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

Today

Today restituisce la data di una bar N giorni di trading prima di quella corrente come numero intero YYYYMMDD. Today[0] fornisce la data del giorno corrente negli script ProBuilder.

Sintassi

probuilder
Today
Today[N]

Parametri

NomeTipoPredefinitoDescrizione
Nintero0Numero di periodi di contrattazione prima del bar corrente. 0 è il giorno corrente; N deve essere non negativo.

Come funziona

Today espone le date come interi compatti nel formato YYYYMMDD, quindi 1 marzo 2024 diventa 20240301. Senza indice, o con Today[0], la parola chiave restituisce la data del giorno di trading corrente. Con un indice positivo torna indietro nella storia del grafico: Today[10] è la data del bar 10 periodi di contrattazione prima di quello corrente.

L'indice conta solo i giorni di negoziazione. I fine settimana e le festività di mercato non compaiono nei dati, quindi vengono saltati e non conteggiati, e Today[5] il lunedì risale tipicamente a più di cinque giorni di calendario.

Poiché gli interi YYYYMMDD crescono nel tempo, si ordinano correttamente con i normali operatori di confronto. Today >= 20240301 è un modo valido per limitare la logica alle date pari o successive al 1 marzo 2024. Ciò che il formato non supporta è l'aritmetica del calendario: la differenza tra due valori YYYYMMDD non è un numero di giorni, quindi le misurazioni del tempo trascorso dovrebbero usare Timestamp invece.

Esempi

Esempio 1, Leggere una data dieci giorni di trading indietro (Indicatore)

probuilder
// Date of the bar 10 trading days before the current one
previousDate = Today[10]
RETURN previousDate

L'indicatore restituisce la data YYYYMMDD della bar di dieci periodi di trading precedenti, saltando nel frattempo i fine settimana e i giorni festivi.

Esempio 2, Attivare una strategia a partire da una data fissa (ProBacktest)

probuilder
// Ignore all signals before 1 March 2024
IF Today >= 20240301 THEN
  IF close CROSSES OVER Average[20](close) THEN
    BUY 1 SHARES AT MARKET
  ENDIF
ENDIF

Il filtro sulla data limita il backtest alle bar del giorno scelto o successive, anche quando sul grafico è caricato uno storico molto più lungo.

Esempio 3, Rilevare la prima bar di un nuovo giorno (ProScreener)

probuilder
// Match instruments whose current bar starts a new calendar date
newDay = Today > Today[1]
SCREENER[newDay] ("New date")

Poiché i valori YYYYMMDD crescono nel tempo, la data della bar corrente che supera quella precedente isola la prima bar di ogni nuovo giorno.

Errori e insidie comuni

  • La sottrazione di date non è un conteggio di giorni. 20240301 - 20240229 equivale a 72, non 1. Gli interi YYYYMMDD sono composti posizionali, quindi le differenze a cavallo di un mese o di un anno non hanno significato. Le durate richiedono Timestamp.
  • L'indice conta i giorni di trading. I giorni di non negoziazione sono assenti dai dati, quindi Today[5] risale di cinque barre della serie giornaliera, non di cinque giorni di calendario. Intorno ai giorni festivi la distanza di calendario aumenta ulteriormente.
  • Indicizzare oltre lo storico caricato. Quando N supera il numero di bar disponibili sul grafico, la lettura non ha dati da leggere e il risultato è inutilizzabile. Mantieni N entro l'intervallo caricato o proteggiti dalle prime bar.
  • Le abbreviazioni a due cifre non funzionano. Le date devono essere scritte per intero, 20240301, mai 240301. I letterali troncati vengono confrontati con l'ordine di grandezza errato e la condizione si comporta male senza segnalarlo.
  • Yesterday, data del giorno che precede una determinata bar.
  • Day, componente giorno del mese della data della bar.
  • Month, componente mese della data della bar.
  • Year, componente anno della data della bar.
  • DayOfWeek, giorno della settimana della bar come numero.
  • OpenDate, data in cui la bar si è aperta, in formato YYYYMMDD.
  • TIME, orario di chiusura di una bar in formato HHMMSS.
  • Days, numero di giorni trascorsi dal 1900 per il calcolo lineare dei giorni.