ProScreener – Code cassure Bollinger haute + fraicheur signal
Forums › ProRealTime forum Français › Support ProScreener › ProScreener – Code cassure Bollinger haute + fraicheur signal
- This topic has 10 replies, 2 voices, and was last updated 6 years ago by Cyssou.
-
-
01/29/2018 at 2:01 PM #60845
Bonjour,
Je suis nouveau sur le forum. A la recherche d’un petit coup de pouce pour savoir ce qui cloche dans mon scrreener…
Je suis en train d’essayer de coder un screener pour me remonter les cassures de la Bollinger supérieure (par le prix) -Bollinger en paramètre 20, 2-.
Pas très difficile jusque ici, mais voilà, j’aimerai avoir une fraîcheur de signal, afin d’avoir un suivi. Je souhaiterai donc initier le comptage à partir du moment où le prix casse la Bollinger supérieure et le terminer quand la valeur de la Bollinger supérieure repasse inférieure à celle de sa période précédente (Voici ce que je recherche sur l’image jointe pour être plus explicite : Entrée sur la première flèche rouge -cassure Bollinger Sup et début comptage-, Sortie sur la deuxième flèche rouge -Bollinger Sup devient baissière et fin comptage-).Voici l’extrait de mon code qui ne fonctionne pas exactement comme il le devrait… :
123456789101112131415161718192021222324252627282930nb = 0periode = 20indicator1 = Volumeindicator2 = BollingerUp[20](close)//Volumesc1 = (indicator1 > 10000)IF close >= indicator2 THENnb = 1ENDIFIF close < indicator2 THENnb = 0ENDIFIF nb = 1 THENFOR i = 0 TO periodeIF close[i+1] >= indicator2[i+1] AND indicator2[i] >= indicator2[i+1] THENnb = nb + 1ENDIFIF indicator2[i] <= indicator2[i+1] THENBREAKENDIFNEXTENDIFcs = nb <> 0SCREENER[cs AND c1] (nb AS "Fraicheur")Voilà, j’espère que quelqu’un pourra m’aider. J’essaie déjà de le mettre au point depuis un certain temps et j’ai déjà parcouru pas mal de sujets sur le forum. Peut être en ai-je raté un similaire d’ailleurs… Merci de me l’indiquer dans ce cas 🙂
J’ai également essayé avec la fonction Barindex mais je n’arrive pas à l’utiliser…
Merci par avance pour vos réponses.
01/29/2018 at 2:31 PM #60851Si je comprends bien le but est de faire une statistique de cette condition en utilisant ProScreener sur une liste d’actions par exemple ?
Cette condition a eu lieu sur les dernières “periode”, selon ta variable. Le soucis je pense c’est que tu démarres ta boucle à partir du moment où tu détectes la sortie par le haut et tu cherches en arrière, alors que tu devrais faire une boucle en avant.
Bref, voilà comment je coderai ta description, si j’ai toutefois bien compris ce que tu cherches à faire :
12345678910111213141516bollup = BollingerUp[20](close)if close crosses over bollup and bollup>bollup[1] and bollup[1]<bollup[2] thenfirst=1count=0endifif first=1 thencount=count+1endifif bollup<bollup[1] and bollup[1]>bollup[2] thenfirst=0endifscreener [count] (count)Dans la colonne de tri, tu retrouveras le nombre de bars qu’a duré la dernière occurrence de la condition complète, soit depuis le breakout de la bollinger supérieure jusqu’à sa déclinaison, comme dans l’exemple ci-joint.
01/29/2018 at 3:03 PM #60856Tout d’abord, merci pour la réponse si réactive.
Le but est d’avoir un historique à partir du croisement de la Boll sup jusqu’à sa déclinaison. Et avoir une colonne de fraicheur de signal avec une fraicheur = 1 à partir de la cassure boll sup. Ceci afin de voir le signal le plus récent en premier mais pouvoir revenir sur les anciens signaux afin de suivre ce qu’il s’est passé ensuite.
Oui en effet mon code cherche en arrière… Comment chercher en avant dans ce cas ?
Concernant votre code, j’ai un grand nombre de résultats avec le prix compris dans les bandes de boll ou en dessous et sans cassure de la boll sup…
Par ailleurs, ce que je cherche à faire est exactement ce que vous avez décrit sur l’image jointe.
Enfin, peut être serait-il judicieux de limiter le nombre d’actions qu’il me sort avec une condition (cassure boll sup) valable par exemple pour les 20 dernières périodes uniquement ?…
01/29/2018 at 3:06 PM #60857Concernant votre code, j’ai un grand nombre de résultats avec le prix compris dans les bandes de boll ou en dessous et sans cassure de la boll sup…
Oui c’est ce que j’expliquai, ProScreener démarre 254 barres dans l’historique avant maintenant et le lit jusqu’à la barre présente. Le screener que j’ai posté donne la dernière occurrence de toutes les conditions, peu importe où elle se situe entre maintenant et 254 périodes en arrière.
EDIT: et c’est ce qui est visible dans l’image, la dernière occurrence a duré 66 bars, mais a eu lieu il y a quelque temps déjà.
01/29/2018 at 3:30 PM #6085901/29/2018 at 3:57 PM #60865En fait, concernant l’affichage, comment exécuter le screener uniquement à partir de cette condition :
1close crosses over bollup and bollup>bollup[1] and bollup[1]<bollup[2]Et ce jusqu’à celle-ci :
1bollup<bollup[1] and bollup[1]>bollup[2]Et ne rien afficher d’autres en dehors de ces conditions.
Ou comment lui dire de compter que sur une certaine période (qu’elle soit clairement définit ou conditionnelle) au lieu de chercher sur les dernières 254 barres d’historique ?…
01/29/2018 at 4:40 PM #60871Ce qui marque la fin de l’occurrence, c’est cette condition:
1bollup<bollup[1] and bollup[1]>bollup[2]Donc on va chercher si celle-ci a eu lieu uniquement sur les 20 dernières barres par exemple:
12345678910111213141516171819bollup = BollingerUp[20](close)if close crosses over bollup and bollup>bollup[1] and bollup[1]<bollup[2] thenfirst=1count=0endifif first=1 thencount=count+1endifreset = bollup<bollup[1] and bollup[1]>bollup[2]if reset and first thenfirst=0endiftest = summation[20](reset and count>0)=1screener [test] (count)01/29/2018 at 4:53 PM #60874J’ai trouvé la réponse, il suffisait de faire appel à first et non compte comme ceci :
1screener [first] (count)Merci beaucoup pour votre aide 🙂
Dernière question… Suis-je bien certain qu’une action dont le prix casse la bollup mais 2-3 périodes ou plus après cette condition s’affiche ? :
1bollup and bollup>bollup[1] and bollup[1]<bollup[2]Car cela signifie bollup actuelle > à bollup période précédente ET bollup précédente < à bollup 2 périodes précédentes.
Mais donc, qu’en est-il si le prix casse la bollup 2-3 périodes ou plus après cette condition ? Je souhaiterai que les résultats remontent peu importe le nombre de périodes après cette condition où la cassure de la bollup arrivent (plus clairement par exemple, je souhaiterai que si le prix casse la bollup 5 périodes après la condition de départ ci-dessus, l’action s’affiche également)…01/29/2018 at 5:18 PM #60879J’ai introduit cette condition d’écartement des bandes pour bien marquer un départ, car un Close seul qui croise au dessus de la bande supérieure, ça arrive constamment et on ne pouvait pas marquer un vrai départ, à mon sens. Donc si peu importe le début de cette phase de bandes de bollinger, il faut supprimer cette condition.
1 user thanked author for this post.
01/29/2018 at 9:02 PM #60893Voici donc le code final qui rempli la fonction demandée :
1234567891011121314151617181920bollup = BollingerUp[20](close)period = 20vol = volume > 10000for i=0 to periodif close crosses over bollup and bollup[i]>bollup[i+1] and bollup[i+1]<bollup[i+2] thenfirst=1count=0endifnextif first=1 thencount=count+1endifif bollup<bollup[1] and bollup[1]>bollup[2] thenfirst=0endifscreener [first and vol] (count)Seul bémol pour avoir exactement ce que j’attendais, je souhaiterai un comptage pour l’exemple ci-dessous à 5 -et non à 2 comme c’est le cas actuellement- (c’est à dire peu importe si le prix repasse au-dessus de la bollup, je souhaite initier le comptage sur la première cassure uniquement). Mais ce code redémarre à zéro à chaque nouvelle cassure et je n’arrive pas à enregistrer comme point de départ la première cassure…
Merci par avance.
01/31/2018 at 2:42 PM #61104 -
AuthorPosts