Screener de range
Forums › ProRealTime forum Français › Support ProScreener › Screener de range
- This topic has 23 replies, 6 voices, and was last updated 4 years ago by Henchey.
-
-
05/08/2016 at 5:15 PM #6588
Bonjour à tous,
J’utilise la plateforme prorealtime depuis quelques mois. Je trouve cet outil formidable.
Malheureusement, je suis nul en programmation et sollicite votre aide.
Je souhaiterai créer un screener qui permette de détecter des actifs financiers en range.
Une première condition serai que l’actif n’est pas fait de récent plus haut et plus bas depuis n périodes.
Une deuxième condition serai que l’écart entre le plus haut et le plus bas ne dépasse pas x % pendant ces n périodes.
Merci
05/09/2016 at 12:21 PM #6609Bonjour jobilagobe,
Tu trouveras ci-dessous un code de screener pour détecter si une valeur est toujours compris dans un range initié il y a au moins n period.
Par contre, concernant le pourcentage de variation du prix, on testerai quoi exactement ? On compare la hauteur du range vis à vis du prix le plus haut ou du Close actuel ?
123456789101112131415161718n = 50once hh= highonce ll = lowif high>hh thencount = 0hh = highelsif low<ll thencount = 0ll = lowelsecount=count +1endifintherange = count >= nSCREENER [intherange]05/09/2016 at 5:42 PM #6631Bonjour Nicolas,
Merci pour ta réponse rapide et pour ce code.
Pour la deuxième condition, je souhaiterai limiter les résultats du screener et trouver des actions qui se trouvent dans une situation de congestion ou dans un range de + ou – faible amplitude.
Et donc, j’aimerai pouvoir inclure une deuxième variable qui permette de définir la hauteur du range.
Je pensais prendre la différence entre le plus haut et le plus bas et que cette différence ne dépasse pas un certain pourcentage sur les n périodes étudiées.
05/09/2016 at 7:27 PM #6635Ok j’ai bien compris pour la différence du High-Low 🙂
Mais si je dois en tirer un pourcentage, ce serait vis à vis de quoi ? Car cette différence entre high et low est toujours la même sur les n périodes, sinon le range serait cassé (breakout).
Ou alors, ce que tu cherches à me dire c’est plutôt :
Low/High < x/100
(ou x serait le pourcentage du Low vis à vis du High)
ou bien :
(High-Low)/Close < x/100
(ou x serait le pourcentage de la taille du range vis à vis du dernier Close)
05/10/2016 at 10:19 AM #6662Bonjour Nicolas,
Effectivement, ce que je cherchais correspond à ta deuxième solution :
(High-Low)/Close < x/100
Merci encore pour ton aide ….
05/10/2016 at 1:12 PM #6682Ok voici la version modifiée.
ProScreener scan à partir du début de l’historique, j’ai donc ici codé la façon la plus simple à mon sens de retracer le nombre d’occurrence d’une bougie comprise dans le range déterminé par le plus haut et le plus bas trouvait. Donc il peut y avoir une quantité de bougie beaucoup plus importante dans cette version, que celle demandé dans n :
version 1:
12345678910111213141516171819202122n = 10x = 10once hh= highonce ll = lowif high>hh thencount = 0hh = highelsif low<ll thencount = 0ll = lowelsecount=count +1endifintherange = count >= nrangepercent = (hh-ll)/Closevalidpercent = rangepercent<x/100SCREENER [intherange AND validpercent] (count as "count")//(rangepercent as "range percent")version 2: celle-ci devrait être plus efficace, mais je ne trouve pas de résultat.. c’est moi qui doit avoir un bug je ne sais où ! 🙂 Dit moi si tu trouves quelque-chose sinon je m’y pencherai un peu plus que ça.
12345678910111213141516171819202122232425n = 50x = 50once hh= highonce ll = lowhh=highest[n](high)[1]ll=lowest[n](low)[1]count = 0for i = 0 to n doif high[i]<hh and low[i]>ll thencount=count+1elsecount=0endifnextintherange = count >= nrangepercent = (hh-ll)/Closevalidpercent = rangepercent<x/100SCREENER [intherange AND validpercent] (count as "count")//(rangepercent as "range percent")05/10/2016 at 10:40 PM #6741Bonsoir Nicolas,
moi non plus, je ne trouve rien.
Et malheureusement, je ne comprends pas non plus la programmation des versions que tu me proposes.
Et en fait, après réflexion, ce qui est important, dans ma démarche, est de trouver des valeurs qui évoluent dans un range de faible amplitude ou hauteur.
Il me semble avoir compris que les fonctions highest and lowest permettent de récupérer le plus haut et la plus bas sur n périodes.
Donc pour screener un faible range, est-il possible d’utiliser la formule :
x= la taille du range
(highest-lowest)/highest < x /100
Merci
05/11/2016 at 7:51 AM #6752Voilà la version avec la formule que tu soumets :
12345678910n = 20x = 10hh = highest[n](high)ll = lowest[n](low)rangepercent = (hh-ll)/hhvalidpercent = rangepercent<x/100SCREENER [validpercent](rangepercent as "range percent")05/11/2016 at 10:02 AM #678003/12/2018 at 6:47 PM #65128bonjour
je travaille sur la detection de rangemais je n’arrive pas a les calibrer sur deux point haut et un point bas ou inversementj’ai ajouter lela fonction dessins rectangle pour matérialiser le range sur le grafle rectangle rouge je l’es tracer a la mainc’est le resultat que je cherche a avoirmerci de votre aide
détection de range matérialiser sur le graf1234567891011121314151617181920212223// detection de range// n= perioden = 50once hh= highonce ll = lowif high>hh thencount = 0hh = highelsif low<ll thencount = 0ll = lowelsecount=count +1endifintherange = count >= nDRAWRECTANGLE(barindex, high [0], barindex+50,low [0] ) COLOURED(0,0,0)RETURN INTHERANGE03/12/2018 at 7:09 PM #65131DSL je me suis tromper de code c’est sur celui là que je travaille merci de votre aide
detection de range123456789101112131415// DECTECTION DE RANGE//once hh= highonce ll = lowif hh thenendifif ll thenendifDRAWRECTANGLE(barindex, high [0], barindex+50,low [0] ) COLOURED(0,0,0)RETURN03/13/2018 at 9:51 AM #65167Détecter un range visuellement, c’est très simple, le plus dur c’est de le synthétiser en version programmatique et systématique. Qu’est ce qui définit le range que tu as tracé en rouge sur ton graphique ? En terme de temps et de prix ? A partir de cette définition, on pourra le coder !
03/13/2018 at 8:44 PM #65266bonjour nicolas!
alors comment je le définis peut importe l’UT c’est caractéristique sont les mêmes,
deux point haut ou bas minimum , non cassé “mèches comprise”
et le dernier ou deux dernier point bas non cassé ou point haut, “mèches comprise”
j’ai essayer avec highest mais sa na pas fonctionner non plus alors que je pense que c’est le terme qui faut mais rien y fait
ensuite j’ai utiliser defparam onlastbaronly = true pour avoir le dernier range et je n’avait plus aucun tracer
05/09/2018 at 9:19 AM #70051Regardes le code ci dessous cela devrait te convenir. Il suffit d’ajuster les parametres de la hauteur de ta boite de range et de la longueur de detection du debut de range. Lorsqu’un range est detecte le systeme va dessiner un rectangle puis continuer a dessiner les extensions de se rectangle tant que nous ne sommes pas sorti du range. Ensuite plus de dessin si sorti du range jusqu’au prochain range.
12345678910111213141516171819202122232425//Parametre pour la hauteur de la boite de range et la periode initialeperiode=20taille=100*ticksizeonce dessin=0if dessin=0 and (high>PH1 or low<PB1)thenPH=highest[periode](high)//detection du range sur 20 periodesPB=lowest[periode](low)// avec Plus haut PH et Plus bas PBendifif PH-PB <=taille and dessin=0 THEN // taille du range 10 pointsDRAWRECTANGLE(barindex, PB, barindex[periode], PH)dessin=1 // dessin du premier rectangle si il y a un range detecteENDIFIf high <=PH and low>=PB and dessin=1 thenDRAWRECTANGLE(barindex-1, PB, barindex+1,PH) coloured(255,0,0,50)dessin=1 // dessin de la prolongation du rectangle si il y a continuation du rangePH1=PHPB1=PBelsedessin=0 // si sortie du range alors nous arretons le dessinendifreturn1 user thanked author for this post.
05/16/2018 at 8:42 AM #70574 -
AuthorPosts
Find exclusive trading pro-tools on