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

Day

Day restituisce il giorno del mese, da 1 a 31, di una bar sul grafico. Day accetta un offset tra parentesi quadre come Day[1] per leggere il giorno di una bar precedente.

Sintassi

probuilder
Day[N]

Come funziona

Day restituisce il giorno del mese della bar in elaborazione, come intero da 1 a 31. Legge la data di calendario associata a ogni bar, quindi a differenza della famiglia Current cambia lungo l'asse temporale: le bar successive su un grafico giornaliero scorrono i giorni del mese, e il valore si azzera dopo l'ultimo giorno di ogni mese.

L'indice opzionale N seleziona un bar relativo a quello in elaborazione. Day[0], o semplice Day, è il bar attuale. Un positivo N guarda indietro: Day[1] è il bar precedente, Day[5] è cinque barre indietro. Il grafico deve contenere storico sufficiente per l'offset richiesto, altrimenti il valore è indefinito al bordo sinistro.

Day riporta solo il numero del giorno e non contiene mese o anno. Confrontare Day valori a cavallo del cambio di mese possono ingannare, poiché al giorno 31 di un mese segue il giorno 1 del successivo. Per una data completa usa Day insieme a Month e Year, oppure usa Days e Timestamp quando serve un singolo valore monotono.

Esempi

Esempio 1, Giorno della bar precedente (Indicatore)

probuilder
// Retrieve the day of the month from the previous bar
myDay = Day[1]
RETURN myDay

L'indicatore traccia il numero del giorno del mese della bar immediatamente precedente a ogni bar elaborata, una linea a gradini che sale lungo il mese e scende a ogni cambio di mese.

Esempio 2, Scansione delle bar di inizio mese (ProScreener)

probuilder
// Match instruments whose latest bar falls in the first three days of a month
earlyInMonth = Day <= 3
SCREENER[earlyInMonth AND close > Average[20](close)] (Day AS "Day")

Lo screener restituisce solo gli strumenti la cui bar più recente si trova nei primi giorni di un mese di calendario, con il numero del giorno mostrato accanto.

Esempio 3, Filtro sul primo giorno di contrattazione (ProOrder)

probuilder
// Allow entries only when a new month has just started
DEFPARAM CumulateOrders = false
newMonthStart = Day < Day[1]
IF newMonthStart AND close CROSSES OVER Average[20](close) THEN
    BUY 1 CONTRACT AT MARKET
ENDIF

La condizione Day < Day[1] è vero sulla prima barra di un nuovo mese, perché il numero del giorno scende da un valore alto a 1. La strategia lo usa come filtro di ingresso una volta al mese.

Errori e insidie comuni

  • Giorno del mese, non della settimana. Day restituisce da 1 a 31, il giorno del calendario. Per il giorno della settimana usa DayOfWeek.
  • Nessun mese né anno. Day contiene solo il numero del giorno, quindi il giorno 5 di marzo e il giorno 5 di aprile sono identici. Combinalo con Month e Year per una data completa.
  • Confini di mese. Un test come Day > Day[1] non funziona sulla prima barra del mese perché il numero torna a 1. Gestisci esplicitamente il cambio di mese quando confronti tra barre.
  • Offset oltre lo storico. Day[N] richiede N bar di storico. Vicino al bordo sinistro del grafico il valore non è definito.
  • OpenDay, giorno del mese all'apertura di ogni bar.
  • Month, mese di ogni bar, si abbina a Day per una data completa.
  • Year, anno a quattro cifre di ogni bar.
  • DayOfWeek, giorno della settimana di ogni bar, da 1 per lunedì a 7 per domenica.
  • Days, giorni interi trascorsi dal 1 gennaio 1900 fino a ogni bar.
  • TIME, orario di chiusura di ogni bar come intero HHMMSS.
  • Timestamp, tempo UNIX della chiusura di ogni bar.
  • Yesterday, data del giorno precedente a una bar, in forma YYYYMMDD.