Rejoignez-nous
Date et heure/probuilder · probacktest · proorder · proscreener

CurrentDayOfWeek

CurrentDayOfWeek renvoie le jour de la semaine lu sur l'horloge au moment de l'exécution, de 0 dimanche à 6 samedi, identique sur chaque bar, contrairement à la valeur DayOfWeek calculée par bar.

Syntaxe

probuilder
CurrentDayOfWeek

Comment ça marche

CurrentDayOfWeek lit l'horloge au moment où le code s'exécute et renvoie le jour de la semaine sous forme d'entier. ProRealTime™ utilise le fuseau horaire du marché de l'instrument comme référence, la valeur peut donc différer du jour de la semaine de la machine qui affiche le graphique. La constante ne prend aucun paramètre et n'accepte aucun décalage entre crochets.

La valeur suit la convention de la plateforme : 0 pour dimanche, 1 pour lundi, 2 pour mardi, et ainsi de suite jusqu'à 6 pour samedi.

Comme le nombre vient de l'horloge et non des données du graphique, chaque bar d'un calcul voit la même valeur. Un indicateur recalculé un mardi renvoie 2 sur chaque bar historique du graphique. C'est la différence fondamentale avec la constante jumelle DayOfWeek, qui renvoie le jour de la semaine de la clôture de chaque bar traité et change donc le long de l'axe du temps. Les conditions qui filtrent les bars historiques par jour de la semaine relèvent de DayOfWeek ; CurrentDayOfWeek répond à la question de savoir quel jour il est en ce moment.

Dans un système ProOrder en réel, les deux valeurs coïncident généralement sur le bar intraday le plus récent, puisque la stratégie traite les bars en temps réel. Dans un backtest, elles divergent complètement : CurrentDayOfWeek reflète le jour où le test est exécuté, et non le jour d'un bar historique.

Exemples

Exemple 1, Signaler un jour de la semaine précis (Indicateur)

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

L'indicateur trace 1 sur tout le graphique lorsqu'il se recalcule un mercredi, et 0 sinon, ce qui illustre que la valeur ne varie pas d'un bar à l'autre.

Exemple 2, Scan uniquement le vendredi (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")

Le screener ne produit de résultats que lorsqu'il est exécuté un vendredi, quelles que soient les dates des bars qu'il analyse.

Exemple 3, Garde-fou week-end sur un marché 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

En direct, le filtre bloque les nouvelles entrées le samedi et le dimanche. Dans un backtest, le même code ne filtre rien d'utile, car chaque bar historique voit le jour où le test est lancé ; une version historique de ce filtre a besoin DayOfWeek.

Erreurs et pièges courants

  • Constante sur tout le graphique. Chaque bar donne le même nombre, le jour de la semaine du moment de l'exécution. Utiliser CurrentDayOfWeek pour filtrer des bars historiques laisse passer ou bloque silencieusement tout le graphique d'un coup. Utilisez DayOfWeek pour les conditions par bar.
  • Numérotation du dimanche. Le manuel de la plateforme définit la plage de 0 pour dimanche à 6 pour samedi. Certaines références numérotent la semaine de 1 à 7 avec dimanche à 7. Du lundi au samedi, les deux conventions concordent ; vérifiez le traitement du dimanche sur un graphique en réel avant d'en dépendre.
  • Des résultats de backtest qui ne peuvent pas reproduire le comportement en réel. Un filtre de jour de la semaine construit sur CurrentDayOfWeek se comporte correctement en exécution réelle mais n'est pas testable sur l'historique ; les statistiques de backtest d'un tel système ne reflètent donc pas le filtre en réel.
  • Pas de décalage entre crochets. CurrentDayOfWeek[1] n'est pas valide. La constante n'a pas d'historique à indexer ; seules les constantes par bar telles que DayOfWeek[N] acceptent un décalage.
  • DayOfWeek, jour de la semaine de la clôture de chaque bar, l'équivalent par bar de cette constante.
  • OpenDayOfWeek, jour de la semaine à l'ouverture de chaque bar.
  • CurrentTime, heure de l'horloge à l'exécution sous forme d'entier HHMMSS.
  • CurrentHour, heure de l'horloge au moment de l'exécution.
  • CurrentMinute, minute de l'horloge au moment de l'exécution.
  • CurrentMonth, mois de l'horloge au moment de l'exécution.
  • CurrentYear, année de l'horloge au moment de l'exécution.
  • Day, jour du mois à la clôture de chaque bar.