Bonjour,
J’aimerai savoir sur un intervalle de temps prédéfini comment on peux stocker la valeur des 2 derniers creux (si creux il y a). J’ai commencé à coder quelque chose mais je bloque.
Sachant qu’il peut y avoir plus de 2 creux mais seul les 2 derniers m’intéresse.
// Période en jours
Per = 7
a = close
// Définition du creux
creux = a>a[1] and a[1]<a[2]
For a to per do
if creux then
// On stock sa valeur afin de pouvoir l'utiliser ensuite(??)
end if
NEXT
Merci de votre aide.
Manu
Bonjour, basé sur ta définition d’un creux sur les clôtures, ceci te retournera la valeurs des 2 creux les plus récents, ou 0 s’ils sont en dehors de la période per:
// Période en jours
Per = 7
a = close
// Définition du creux
creux1 = a>a[1] and a[1]<a[2]
if creux1 then
barindex2=barindex1
barindex1=barindex[1]
close2=close1
close1=close[1]
endif
if barindex-per>=barindex1 then
close1=0
barindex1=0
endif
if barindex-per>=barindex2 then
close2=0
barindex2=0
endif
return close1 as "creux le plus récent", close2 as "2ème creux le plus récent"
Je te conseil dans ce cas d’utiliser des variables en tableaux, puis de stocker à la volée les valeurs des deux dernière colonnes du tableau dans des variables standard. On pourrait faire sans les tableaux, mais ce sera plus simple par la suite si tu veux utiliser plus de valeurs stockés que simplement 2.
// Période en jours
a = close
// Définition du creux
creux = a>a[1] and a[1]<a[2]
if creux then //creux détecté
$creux[index]=a[1] //valeur du creux stocké dans le tableau dans la colonne 'index'
index=index+1 //j'incrémente la colonne du tableau pour le prochain creux à stocker
endif
//les 2 derniers $creux se trouvent donc dans les 2 derniers index
if index>=2 then //y-at'il au moins 2 creux?
var1=$creux[index-1] //var1 sera mon premier creux
var2=$creux[index-2] //var2 sera le deuxième
endif
return var1,var2
Merci pour vos réponses rapides. Je testerai cela ce weekend 🙂
Effectivement, peut être que j’utiliserai plusieurs valeurs stockées. Par contre, Nicolas dans ton code, tu n’as pas indiquer l’intervalle de temps prédéfini.
Par exemple, une variable “per = 7” pour stoker sur les 7 derniers jours la valeur des 2 derniers creux si creux il y a.
Merci par avance
Parallèlement, j’utilise ce code dans un screnner par contre, cela m’indique une erreur de syntaxe à la ligne suivante “if creux then //creux détecté” . Je ne vois pas c’est une simple condition si (??)
Je ne comprends pas ce que tu veux dire par “intervalle de temps”. La détection de creux c’est la tienne, je n’ai fait que la reprendre, je pense que tu veux parler de creux type fractal (qui contienne une condition en période dans la détection de points hauts / bas).
L’erreur de syntaxe est normal puisque ProScreener ne supporte pas les variables en tableaux. Ton sujet étant posté dans le forum ProBuilder, je n’ai pas créé de codes compatibles avec ProScreener.
Si je connaissais l’intégralité de ton projet, ce serai bien plus simple et rapide de te guider dans la bonne direction, merci.
Autant pour moi. Je pensais pouvoir me débrouiller seul ensuite mais non visiblement 😉 😉
Dans un screnner et à partir de ma définition du creux, je voudrais savoir lors des 10 derniers jours (par exemple) :
- si il y avait eu un creux
- si il y avait eu un 2ieme creux
- Et si la valeur du creux 1 était supérieur à la valeurs du creux 2
Le screnner retournant les 3 conditions ci dessus réunis.
Bien compris, je pense que le code ci-dessous répond correctement à ces conditions, à tester :
a = close
// Définition du creux
creux = a>a[1] and a[1]<a[2]
plushaut = 0
if creux then
plushaut = a[1]>creuxP and creuxP>0
creuxP = a[1]
endif
test = summation[10](plushaut)>0
screener[test]
Oui, c’est exactement cela. Merci
Bonjour à tous,
Dans le screener, je souhaiterais intégrer une notion de volume.
si l’on considère que le creux 1 est plus récent que le creux 2, Je voudrais voir un volume plus élevé sur le creux 1 qui est plus haut que le creux 2.
Comment pourrait on adapter ce code?
bien à vous
A tester avec cette version qui teste un volume plus élevé sur le creux actuel que sur le creux qui le précède:
a = close
// Définition du creux
creux = a>a[1] and a[1]<a[2]
plushaut = 0
if creux then
plushaut = a[1]>creuxP and creuxP>0 and volume[1]>creuxPV
creuxP = a[1]
creuxPV = volume[1]
endif
test = summation[10](plushaut)>0
screener[test]
Bonjour Nicolas,
j’ai essayé le test. Pour les volumes cela fonctionne. Génial
Par contre, j’ai un soucis avec la fonction sommation.
J’ai fait un test en hebdo et remplacé les chandeliers par une ligne pour vérifier plus clairement la position des creux. J’ai également raccourci la sommation à 6 au lieu de 10, soit 6 semaines de recul.
Je te joints une image du screen réalisé avec un exemple type:
– Point 1: creux à 2 semaines OK
– Point 2: creux à 10 semaines > 6 semaines.
Comment peut modifier le code pour que la sélection des creux se limite bien à la durée choisie?
Dans l’attente de te lire
christophe 😉
a = close
// Définition du creux
creux = a>a[1] and a[1]<a[2]
plushaut = 0
if creux then
plushaut = a[1]>creuxP and creuxP>0 and volume[1]>creuxPV
creuxP = a[1]
creuxPV = volume[1]
endif
test = summation[6](plushaut)>0
screener[test]
Désolé la question n’est pas clair.
Mais, pour mémoire, ton code teste les valeurs de creux à la suite, si il y a x creux entre 2 valeurs, on ne peut pas tester si le creux N est plus haut que le creux N-6
Il faudrait pour cela un code bien plus complexe.
Bonjour Nicolas,
Je me suis mal exprimé.
test = summation[6](plushaut)>0
On utilise la fonction “summation ” et dans ce cas de periode 6, soit 6 semaines dans mon cas.
Sur la photo que je t’ai jointe, le 2ième creux est distant de 10 semaines de la date d’aujourd’hui et de 8 semaines du 1ier creux.
Je ne comprends pas pourquoi le screener me propose cette action qui ne respecte pas la sommation de 6 (max).
bien à toi