CurrentTime
CurrentTime renvoie l'heure de l'horloge à l'exécution sous forme d'entier HHMMSS, identique sur chaque bar du graphique. Utilisez TIME pour lire l'heure de clôture de chaque bar.
Syntaxe
CurrentTimeComment ça marche
CurrentTime lit l'horloge au moment où le code s'exécute et renvoie l'heure de la journée sous forme d'entier à six chiffres HHMMSS, où HH est l'heure, MM la minute et SS la seconde. Une valeur de 073000 correspond à 07:30:00. 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 à 07:30:00 renvoie 073000 sur chaque bar historique. L'équivalent par bar est TIME, qui renvoie l'heure de clôture de chaque bar traité et change le long de l'axe du temps. Les filtres de séance appliqués aux données historiques relèvent de TIME ; CurrentTime décrit l'heure courante.
Comme la valeur est un entier compacté, les comparaisons fonctionnent naturellement : CurrentTime >= 090000 est vrai à partir de 09:00:00. Dans un système ProOrder en direct, CurrentTime 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'heure à laquelle le test est lancé, ce qui le rend inadapté aux conditions d'entrée ou de sortie historiques.
Exemples
Exemple 1, Marqueur de réveil (Indicateur)
// Set the flag when the script executes at exactly 07:30:00
IF (CurrentTime = 073000) THEN
WakeUp = 1
ELSE
WakeUp = 0
ENDIF
RETURN WakeUpL'indicateur trace 1 sur tout le graphique lorsqu'il est recalculé à 07:30:00 heure du marché, et 0 sinon.
Exemple 2, Scan pendant les heures de séance (ProScreener)
// Return matches only during the cash session
inSession = (CurrentTime >= 090000) AND (CurrentTime < 173000)
SCREENER[inSession AND close > Average[20](close)] (close AS "Close")Le screener renvoie une liste vide en dehors de la fenêtre choisie, en utilisant la forme compacte HHMMSS pour un test de plage propre.
Exemple 3, Arrêt en fin de journée (ProOrder)
// Stop the strategy near the close
DEFPARAM CumulateOrders = false
IF CurrentTime >= 173000 THEN
QUIT
ENDIF
IF close CROSSES OVER Average[20](close) THEN
BUY 1 CONTRACT AT MARKET
ENDIFEn réel, le système s'arrête de lui-même à partir de 17:30:00 heure du marché. Les backtests ne peuvent pas tester cette branche de manière significative, car CurrentTime contient l'heure de l'exécution du test sur chaque bar.
Erreurs et pièges courants
- Même valeur sur chaque bar. CurrentTime décrit l'horloge, pas le graphique, donc une condition comme
CurrentTime = 073000est vrai ou faux pour tout le calcul d'un coup. Une logique de session bar par bar nécessiteTIME. - Angle mort du backtest. Dans un backtest, CurrentTime renvoie l'heure à laquelle le test s'exécute ; les filtres horaires construits dessus laissent donc tout passer ou bloquent tout, et produisent des résultats qui ne correspondent pas au comportement en réel.
- L'égalité exacte est fragile.
CurrentTime = 073000n'est vrai que pendant une seule seconde. Les tests de plage commeCurrentTime >= 073000sont plus fiables pour la logique de filtrage. - Pas de décalage entre crochets.
CurrentTime[1]ne compile pas. Seules des constantes par bar telles queTIMEacceptent un indice commeTIME[N].
Instructions liées
TIME, heure de clôture de chaque bar sous forme d'entier HHMMSS, l'équivalent par bar de cette constante.OpenTime, heure d'ouverture de chaque bar sous forme d'entier HHMMSS.OpenTimestamp, heure UNIX de l'ouverture de chaque bar.Timestamp, heure UNIX de la clôture de chaque bar.CurrentHour, heure de l'horloge au moment de l'exécution.CurrentMinute, minute de l'horloge au moment de l'exécution.CurrentSecond, seconde de l'horloge au moment de l'exécution.CurrentYear, année de l'horloge au moment de l'exécution.