Bonjour,
Pour mon screener, je cherche à récupérer le prix le plus haut du jour ainsi que le n° de la barre en question.
Je viens de le tester sur l’action GAUSSIN et il me donne une valeur pour HighestValue (==> 0.49800) que je ne retrouve pas dans les graphiques.
Pourriez-vous m’aider à comprendre d’où vient le problème ?
Merci d’avance,
NbreDeBarres = IntradayBarIndex
c0 = volume > 1000
// Je cherche le prix le + haut depuis l'ouverture de marché
HighestBarIndex = 0
FOR i = NbreDeBarres DOWNTO 0 DO
IF ((high[i] > HighestValue)) THEN
HighestValue = high[i]
ENDIF
HighestBarIndex = HighestBarIndex + 1 // Comme je ne peux pas récupérer la valeur de 'i'
NEXT
screener [c0] SORT BY (HighestValue)
Merci d’avance
Anthony
Pourquoi ne pas utiliser Dhigh(0) ? Ou alors tu voudrais connaître le moment précis ou le High du jour a eu lieu ? Si oui, il faudra faire avec la limitation des 255 barres, tout dépend du timeframe, mais au delà de 255, tu ne pourras pas aller plus loin en arrière.
Tu peux récupérer la valeur de “i” dans ta boucle, mais ta variable “HighestBarIndex”, je ne vois pas à quoi elle sert, puisque tu l’incrémentes même si tu n’as pas trouver que le high de la boucle est bien le plus haut. Tu devrais faire comme ceci :
NbreDeBarres = IntradayBarIndex
c0 = volume > 1000
// Je cherche le prix le + haut depuis l'ouverture de marché
HighestBarIndex = 0
FOR i = NbreDeBarres DOWNTO 0 DO
IF ((high[i] > HighestValue)) THEN
HighestValue = high[i]
HighestBarIndex = i
ENDIF
NEXT
screener [c0] SORT BY (HighestValue)
Mais cette variable n’étant pas utilisé ailleurs (?), tu auras une erreur sur sa “non utilisation”..
Bonjour Nicolas et merci pour te réponse.
En fait, je l’utilise en le matin et en unité de temps “1 minute”. Je me suis donc dit qu’il faut que je l’utilise dans les 254 premières minutes de la journée pour que ça marche. Tu es d’accord ?
Concernant le ‘i’ à récupérer, j’avais déjà essayé ce code ci-desosus pour l’afficher, mais j’ai un ‘0’ (zéro) à l’affichage. J’ai donc conclu que je ne pouvais pas le récupérer. J’ai tort ?
// Unité de temps : 1 minute
NbreDeBarres = IntradayBarIndex
c0 = volume > 1000
// Je cherche le prix le + haut depuis l'ouverture de marché
HighestBarIndex = 0
FOR i = NbreDeBarres DOWNTO 0 DO
IF ((high[i] > HighestValue)) THEN
HighestValue = high[i]
HighestBarIndex = i
ENDIF
NEXT
screener [c0] SORT BY (HighestBarIndex)
Merci de ton aide.
Pour une raison que j’ignore, si on test uniquement en strictement supérieur, le screener retourne systématiquement 0, alors qu’il fonctionnera si on test le High[i] en strictement supérieur ou égal, voir le code:
// Unité de temps : 1 minute
NbreDeBarres = IntradayBarIndex
c0 = volume > 1000
// Je cherche le prix le + haut depuis l'ouverture de marché
HighestBarIndex = 0
FOR i = 0 to NbreDeBarres DO
IF high[i] >= HighestValue THEN
HighestValue = high[i]
HighestBarIndex = i
ENDIF
NEXT
screener [c0] (HighestBarIndex)
En déclarant HighestValue à 0 avant la boucle, le symbole égal n’est pas nécessaire. J’en conclut donc que dans la boucle, à la première itération, ProScreener ne sait pas qu’il vaut 0 puisque jamais renseigné..
// Unité de temps : 1 minute
NbreDeBarres = IntradayBarIndex
c0 = volume > 1000
// Je cherche le prix le + haut depuis l'ouverture de marché
HighestBarIndex = 0
highestvalue=0
FOR i = NbreDeBarres downto 0 DO
IF high[i] > HighestValue THEN
HighestValue = high[i]
HighestBarIndex = i
ENDIF
NEXT
screener [c0] (HighestBarIndex)
Pour info, ce problème va être traité dans un prochain update.