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

CurrentSecond

CurrentSecond renvoie la seconde de l'horloge au moment de l'exécution, de 0 à 59, identique sur chaque bar du graphique. Utilisez Second pour lire la seconde de clôture de chaque bar.

Syntaxe

probuilder
CurrentSecond

Comment ça marche

CurrentSecond lit l'horloge au moment où le code s'exécute et renvoie la seconde dans la minute courante, de 0 à 59. 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:30 renvoie 30 sur chaque bar historique. L'équivalent par bar est Second, qui renvoie la seconde de la clôture de chaque bar traité et change le long de l'axe du temps. Le timing infra-minute sur les données historiques relève de Second ; CurrentSecond décrit l'heure courante.

Dans un système ProOrder en réel, CurrentSecond a du sens, puisque le code s'exécute en temps réel à mesure que les bars arrivent. Dans un backtest, il reflète la seconde à 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 demi-minute (Indicateur)

probuilder
// Set the flag when the script executes at 30 seconds past the minute
mySecond = CurrentSecond
IF mySecond = 30 THEN
    onHalfMinute = 1
ELSE
    onHalfMinute = 0
ENDIF
RETURN onHalfMinute

L'indicateur trace 1 sur tout le graphique lorsqu'il est recalculé exactement à la seconde 30 de la minute courante, et 0 sinon.

Exemple 2, Scan sur les premières secondes (ProScreener)

probuilder
// Return matches only in the first ten seconds of the minute
earlySecond = CurrentSecond < 10
SCREENER[earlySecond AND close > Average[20](close)] (close AS "Close")

Le screener renvoie une liste vide dès que l'horloge dépasse la seconde 10, un moyen de répartir les scans programmés sur une fenêtre étroite.

Exemple 3, Vérification conditionnée à la seconde (ProOrder)

probuilder
// Only evaluate entries during the last seconds of a minute
DEFPARAM CumulateOrders = false
lateSecond = CurrentSecond >= 55
IF lateSecond AND close CROSSES OVER Average[20](close) THEN
    BUY 1 CONTRACT AT MARKET
ENDIF

En réel, le système ne vérifie le signal que dans les dernières secondes de chaque minute. Les backtests ne peuvent pas tester cette branche de manière significative, car CurrentSecond contient la seconde de l'exécution du test sur chaque bar.

Erreurs et pièges courants

  • Même valeur sur chaque bar. CurrentSecond décrit l'horloge, pas le graphique ; une condition telle que CurrentSecond = 30 est vrai ou faux pour tout le calcul d'un coup. Une logique temporelle bar par bar nécessite Second.
  • Angle mort du backtest. Dans un backtest, CurrentSecond renvoie la seconde à laquelle le test s'exécute ; les filtres construits dessus laissent donc tout passer ou bloquent tout, et produisent des résultats qui ne correspondent pas au comportement en réel.
  • Fenêtre de correspondance étroite. Un test exact comme CurrentSecond = 30 n'est vrai que pendant une seule seconde d'horloge, de sorte qu'un recalcul a peu de chances de tomber dessus. Des plages comme CurrentSecond < 10 sont plus fiables.
  • Pas de décalage entre crochets. CurrentSecond[1] ne compile pas. Seules des constantes par bar telles que Second[N] acceptent un index.
  • Second, seconde de la clôture de chaque bar, l'équivalent par bar de cette constante.
  • OpenSecond, seconde à l'ouverture de chaque bar.
  • CurrentMinute, minute 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.
  • Minute, minute de la clôture de chaque bar.
  • TIME, heure de clôture de chaque bar sous forme d'entier HHMMSS.
  • Timestamp, heure UNIX de la clôture de chaque bar.