Bonjour,
Je constate un comportement inattendu de CurrentTime utilisé dans un ProScreener (unité de temps journalière, code par programmation, flux temps réel activé).
Objectif : calculer une fraction de séance US écoulée pour ajuster un ratio de volume intraday (volume du jour ÷ volume moyen 20 jours × fraction de séance écoulée).
Code simplifié :
HeureActuelle = CurrentTime
HeureH = Round(HeureActuelle / 10000 - 0.5)
ResteMinSec = HeureActuelle - HeureH * 10000
MinuteM = Round(ResteMinSec / 100 - 0.5)
SecondeS = ResteMinSec - MinuteM * 100
SecondesEcoulees = HeureH * 3600 + MinuteM * 60 + SecondeS
Problème : testé à 11h29 heure de Paris (marché US pas encore ouvert), le résultat du calcul indique une valeur cohérente avec environ 16h00 heure de Paris (soit ~30 minutes après l’ouverture théorique du NYSE), et ce résultat reste identique entre deux exécutions à des heures réelles différentes (11h20 puis 11h29).
Question : dans le contexte spécifique du ProScreener (par opposition à un Indicateur classique sur graphique), CurrentTime reflète-t-il bien l’heure système en temps réel, ou est-il figé/rafraîchi seulement à certains moments (fin de scan complet, dernière clôture connue, etc.) ? Existe-t-il une constante plus fiable pour obtenih l’heure réelle “maintenant” dans un ProScreener ?
Merci d’avance !
Les horaires d’un marché encore fermé sont figés à l’heure de fermeture ; sinon, ils changent constamment, même sur le graphique journalier.
Essayez cet indicateur (j’ai légèrement modifié les calculs pour le détail des horaires) :
DEFPARAM DrawOnLastBarOnly = true
HeureActuelle = CurrentTime
HeureH = floor(HeureActuelle / 10000,0) //Round(HeureActuelle / 10000 - 0.5)
ResteMinSec = HeureActuelle - HeureH * 10000
MinuteM = floor(ResteMinSec / 100,0)
SecondeS = floor(ResteMinSec - MinuteM * 100,9)
SecondesEcoulees = floor(HeureH * 3600 + MinuteM * 60 + SecondeS,0)
DrawText("#HeureH#:#MinuteM#:#SecondeS# (#SecondesEcoulees#)",BarIndex + 5,close)
RETURN