CurrentHour
CurrentHour renvoie l'heure de l'horloge au moment de l'exécution, de 0 à 23, identique sur chaque bar du graphique. Utilisez Hour pour lire l'heure de clôture de chaque bar.
Syntaxe
CurrentHourComment ça marche
CurrentHour lit l'horloge au moment où le code s'exécute et renvoie l'heure au format 24 heures, de 0 à 23. 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 à 14:20 renvoie 14 sur chaque bar historique. L'équivalent par bar est Hour, qui renvoie l'heure de la 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 Hour ou TIME ; CurrentHour décrit l'heure courante.
Dans un système ProOrder en réel, CurrentHour 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 exécuté, ce qui le rend inadapté à des conditions d'entrée ou de sortie historiques.
Exemples
Exemple 1, Marqueur de midi (Indicateur)
// Set the flag when the script executes during the 12 o'clock hour
IF (CurrentHour = 12) THEN
GoLunch = 1
ELSE
GoLunch = 0
ENDIF
RETURN GoLunchL'indicateur trace 1 sur tout le graphique lorsqu'il est recalculé entre 12:00:00 et 12:59:59 heure du marché, et 0 à tout autre moment de la journée.
Exemple 2, Scan limité aux heures de séance (ProScreener)
// Return matches only while the cash session is open
inSession = (CurrentHour >= 9) AND (CurrentHour < 17)
SCREENER[inSession AND close > Average[20](close)] (close AS "Close")Le screener renvoie une liste vide en dehors des heures choisies, un moyen de garder un scan programmé silencieux en dehors de la séance.
Exemple 3, Arrêt en soirée (ProOrder)
// Stop the strategy before the evening maintenance window
DEFPARAM CumulateOrders = false
IF CurrentHour >= 22 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 22:00 heure du marché. Les backtests ne peuvent pas tester cette branche de manière significative, car CurrentHour contient l'heure de l'exécution du test sur chaque bar.
Erreurs et pièges courants
- Même valeur sur chaque bar. CurrentHour décrit l'horloge, pas le graphique, donc une condition comme
CurrentHour = 12est vrai ou faux pour tout le calcul d'un coup. Une logique de session bar par bar nécessiteHourouTIME. - Angle mort du backtest. Dans un backtest, CurrentHour 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.
- Fuseau horaire du marché, pas l'heure locale. L'heure est référencée au marché de l'instrument. Un graphique d'une valeur cotée à New York consulté depuis l'Europe renvoie les heures de New York, et non les heures locales de celui qui le consulte.
- Pas de décalage entre crochets.
CurrentHour[1]ne compile pas. Seules des constantes par bar telles queHour[N]acceptent un index.
Instructions liées
Hour, heure de la clôture de chaque bar, l'équivalent par bar de cette constante.OpenHour, heure à l'ouverture de chaque bar.CurrentMinute, minute de l'horloge au moment de l'exécution.CurrentSecond, seconde de l'horloge au moment de l'exécution.CurrentTime, heure complète de l'horloge à l'exécution sous forme d'entier HHMMSS.CurrentDayOfWeek, jour de la semaine de l'horloge au moment de l'exécution.TIME, heure de clôture de chaque bar sous forme d'entier HHMMSS.Timestamp, heure UNIX de la clôture de chaque bar.