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

CurrentDayOfWeek

CurrentDayOfWeek restituisce il giorno della settimana dall'orologio al momento dell'esecuzione, da 0 domenica a 6 sabato, uguale su ogni bar, a differenza del valore DayOfWeek per bar.

Sintassi

probuilder
CurrentDayOfWeek

Come funziona

CurrentDayOfWeek legge l'orologio nel momento in cui il codice viene eseguito e restituisce il giorno della settimana come intero. ProRealTime™ usa il fuso orario del mercato dello strumento come riferimento, quindi il valore può differire dal giorno della settimana della macchina che visualizza il grafico. La costante non accetta parametri né offset tra parentesi quadre.

Il valore segue la convenzione della piattaforma di 0 per domenica, 1 per lunedì, 2 per martedì, e così via fino a 6 per sabato.

Poiché il numero proviene dall'orologio e non dai dati del grafico, ogni bar di un calcolo vede lo stesso valore. Un indicatore ricalcolato un martedì restituisce 2 su ogni bar storico del grafico. Questa è la differenza fondamentale rispetto alla costante affine DayOfWeek, che restituisce il giorno della settimana della chiusura di ogni barra elaborata e che quindi cambia lungo l'asse temporale. Le condizioni che filtrano le barre storiche per giorno della settimana vanno usate con DayOfWeek; CurrentDayOfWeek risponde alla domanda su quale giorno sia in questo momento.

In un sistema ProOrder live i due valori di solito coincidono sulla bar intraday più recente, poiché la strategia elabora le bar in tempo reale. In un backtest divergono completamente: CurrentDayOfWeek riflette il giorno in cui viene eseguito il test, non il giorno di una qualsiasi bar storica.

Esempi

Esempio 1, Segnalare un giorno specifico della settimana (Indicatore)

probuilder
// Set the flag when the script executes on a Wednesday
IF (CurrentDayOfWeek = 3) THEN
    Wednesday = 1
ELSE
    Wednesday = 0
ENDIF
RETURN Wednesday

L'indicatore traccia 1 su tutto il grafico quando viene ricalcolato di mercoledì, e 0 altrimenti, a dimostrazione che il valore non varia per bar.

Esempio 2, Scansione solo il venerdì (ProScreener)

probuilder
// Return matches only when the scan itself runs on a Friday
isFriday = (CurrentDayOfWeek = 5)
SCREENER[isFriday AND close > Average[20](close)] (close AS "Close")

Lo screener produce risultati solo quando viene eseguito di venerdì, indipendentemente dalle date delle bar che analizza.

Esempio 3, Protezione weekend su un mercato 24/7 (ProOrder)

probuilder
// Stand aside at the weekend on a market that trades every day
DEFPARAM CumulateOrders = false
weekend = (CurrentDayOfWeek = 0) OR (CurrentDayOfWeek = 6)
IF NOT weekend AND close > Average[50](close) THEN
    BUY 1 CONTRACT AT MARKET
ENDIF

In live il filtro blocca i nuovi ingressi il sabato e la domenica. In un backtest lo stesso codice non filtra nulla di significativo, perché ogni bar storico vede il giorno in cui il test viene eseguito; una versione storica di questo filtro richiede DayOfWeek.

Errori e insidie comuni

  • Costante su tutto il grafico. Ogni bar restituisce lo stesso numero, il giorno della settimana del momento di esecuzione. Usare CurrentDayOfWeek per filtrare i bars storici fa passare o blocca silenziosamente l'intero grafico in un colpo solo. Usa DayOfWeek per condizioni per singolo bar.
  • Numerazione della domenica. Il manuale della piattaforma definisce l'intervallo da 0 per domenica a 6 per sabato. Alcuni riferimenti numerano la settimana da 1 a 7 con domenica come 7. Da lunedì a sabato i due schemi concordano; verifica la gestione della domenica su un grafico live prima di farci affidamento.
  • Risultati di backtest che non possono riprodurre il comportamento live. Un filtro sul giorno della settimana costruito su CurrentDayOfWeek si comporta correttamente nell'esecuzione live ma non è testabile storicamente, quindi le statistiche di backtest di un sistema del genere non riflettono il filtro live.
  • Nessun offset tra parentesi. CurrentDayOfWeek[1] non è valido. La costante non ha storico da indicizzare; solo le costanti per bar come DayOfWeek[N] accettano un offset.
  • DayOfWeek, giorno della settimana della chiusura di ogni bar, l'equivalente per bar di questa costante.
  • OpenDayOfWeek, giorno della settimana all'apertura di ogni bar.
  • CurrentTime, ora dell'orologio al momento dell'esecuzione come intero HHMMSS.
  • CurrentHour, ora dell'orologio al momento dell'esecuzione.
  • CurrentMinute, minuto dell'orologio al momento dell'esecuzione.
  • CurrentMonth, mese dell'orologio al momento dell'esecuzione.
  • CurrentYear, anno dell'orologio al momento dell'esecuzione.
  • Day, giorno del mese alla chiusura di ogni bar.