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

CurrentYear

CurrentYear renvoie l'année à quatre chiffres de l'horloge au moment de l'exécution, identique sur chaque bar du graphique. Utilisez Year pour lire l'année de clôture de chaque bar.

Syntaxe

probuilder
CurrentYear

Comment ça marche

CurrentYear lit l'horloge au moment où le code s'exécute et renvoie l'année du calendrier sous forme d'entier à quatre chiffres, par exemple 2026. La référence est le fuseau horaire du marché de l'instrument, qui peut différer de celui de la machine locale. La constante ne prend aucun paramètre ni décalage entre crochets.

La valeur appartient à la famille Current des constantes de date et d'heure, qui décrivent le moment de l'exécution plutôt qu'un bar du graphique. Chaque bar d'un calcul voit donc le même nombre : un indicateur rafraîchi en 2026 renvoie 2026 sur chaque bar historique. L'équivalent par bar est Year, qui renvoie l'année de la clôture de chaque bar traité et change le long de l'axe du temps. La segmentation année par année des données historiques relève de Year ; CurrentYear décrit le calendrier actuel.

Dans un système ProOrder en réel, CurrentYear a du sens, puisque le code s'exécute en temps réel à mesure que les bars arrivent. Dans un backtest, il reflète l'année au cours de laquelle le test est exécuté, ce qui le rend inadapté à des conditions historiques basées sur l'année.

Exemples

Exemple 1, Étiquette de l'année courante (Indicateur)

probuilder
// Retrieve the year of the clock at execution time
iYear = CurrentYear
RETURN iYear AS "this is the current year"

L'indicateur trace une ligne plate à l'année courante sur tout le graphique, actualisée à l'année de l'horloge à chaque recalcul du script.

Exemple 2, Scan conditionné par l'année (ProScreener)

probuilder
// Return matches only from a chosen year onward
recentEnough = CurrentYear >= 2026
SCREENER[recentEnough AND close > Average[50](close)] (close AS "Close")

Le screener ne signale des résultats qu'une fois que l'horloge atteint 2026 ou au-delà, un simple filtre calendaire sur un scan programmé.

Exemple 3, Arrêt basé sur l'année (ProOrder)

probuilder
// Stop the strategy at the turn of a chosen year
DEFPARAM CumulateOrders = false
IF CurrentYear >= 2027 THEN
    QUIT
ENDIF
IF close CROSSES OVER Average[20](close) THEN
    BUY 1 CONTRACT AT MARKET
ENDIF

En réel, le système s'arrête de lui-même dès que le calendrier bascule en 2027. Les backtests ne peuvent pas tester cette branche de manière significative, car CurrentYear contient l'année de l'exécution du test sur chaque bar.

Erreurs et pièges courants

  • Même valeur sur chaque bar. CurrentYear décrit le calendrier, pas le graphique ; une condition telle que CurrentYear = 2026 est vrai ou faux pour tout le calcul d'un coup. Une logique d'année bar par bar nécessite Year.
  • Angle mort du backtest. Dans un backtest, CurrentYear renvoie l'année au cours de laquelle le test s'exécute ; les filtres d'année construits dessus laissent donc tout passer ou bloquent tout, et produisent des résultats qui ne correspondent pas au comportement en réel.
  • Fuseau horaire du marché, pas l'heure locale. L'année est référencée au marché de l'instrument et ne tient pas compte du décalage local de celui qui consulte le graphique.
  • Pas de décalage entre crochets. CurrentYear[1] ne compile pas. Seules des constantes par bar telles que Year[N] acceptent un index.
  • Year, année à quatre chiffres de la clôture de chaque bar, l'équivalent par bar de cette constante.
  • OpenYear, année à l'ouverture de chaque bar.
  • CurrentMonth, mois de l'horloge au moment de l'exécution.
  • CurrentHour, heure de l'horloge au moment de l'exécution.
  • CurrentTime, heure complète de l'horloge à l'exécution sous forme d'entier HHMMSS.
  • Month, mois de chaque bar.
  • Day, jour du mois de chaque bar.
  • TIME, heure de clôture de chaque bar sous forme d'entier HHMMSS.