screener indicateurs multiples
Forums › ProRealTime forum Français › Support ProScreener › screener indicateurs multiples
- This topic has 18 replies, 2 voices, and was last updated 3 years ago by CamilleRour.
-
-
04/14/2021 at 9:41 AM #167022
Bonjour,
Cela fait plusieurs mois que je me suis lancée dans la création d’un nouveau screener assez précis et j’arrive enfin à un résultat satisfaisant à ceci près que régulièrement plusieurs titres ne sont pas détectés alors qu’ils correspondent en tout points à mes critères et je n’arrive pas à comprendre pourquoi. Est-ce moi qui ne m’en rends pas compte à force de revoir mon code en boucle ou y a t’il réellement un problème ?
Ci-joint un exemple de titres qui selon moi devraient être détectés mais ne l’ont pas été ainsi que le code en question.
Merci d’avance pour votre aide
Camille
multiples indicateurs123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475timeframe(1 hour)c1=close*volume > 50000Ht = DHigh(1)Bs = DLow(1)C = DClose(1)Pivot = (Ht + Bs + C) / 3timeframe(daily)Ht2 = DHigh(1)Bs2 = DLow(1)C2 = DClose(1)Pivot2 = (Ht2 + Bs2 + C2) / 3timeframe(2 hours)Ht3 = DHigh(1)Bs3 = DLow(1)C3 = DClose(1)Pivot3 = (Ht3 + Bs3 + C3) / 3timeframe(5 minutes)Tenkansen1 = (highest[9](high)+lowest[9](low))/2Kijunsen1 = (highest[26](high)+lowest[26](low))/2Stoch = Stochastic[34,3]VariationVol = Volume / indicVariationVol2 = (Volume + Volume[1] + Volume[2]) / indic2c2 = (VariationVol or VariationVol2) > 1c3= close > pivot or close > pivot2 or close > pivot3c4 = cd5 or cd15cd5 =DIplus[14] > DIminus[14]cv= (((highest[3](high)-lowest[3](low))/lowest[3](low)))*100c6=cv>1 and cv<5cond=cvcr= c4 and c10 and c11c7 = close >lowest[3](low)c8 = rsi[21]>rsi[21][1]c9 = crisk1 or crisk2crisk1= ((close-Kijunsen1)/Kijunsen1)<0.03c10= crsi1 or crsi2crsi1= rsi[21] crosses over 50 or rsi[21][1] crosses over 50 or rsi[21][2] crosses over 50c11 = cst5 or cst15 or cst1hcst5= Stoch > Average[3](Stoch) or Stoch >80c12= cc5 or cc15// or cc1hcc5= close crosses over kijunsen1 or close crosses over tenkansen1 or close crosses over kijunsen1[1] or close crosses over tenkansen1[1]timeframe(15 minutes)Stoch2 = Stochastic[34,3]indic = Average[250](Volume)/3indic2 = Average[250](Volume)Kijunsen2 = (highest[26](high)+lowest[26](low))/2Tenkansen2 = (highest[9](high)+lowest[9](low))/2cst15= Stoch2 > Average[3](Stoch2) or Stoch2 >80crsi2= rsi[21]>50crisk2= ((close-Kijunsen2)/Kijunsen2)<0.03cd15 = DIplus[14] > DIminus[14]cc15= close crosses over kijunsen2 or close crosses over tenkansen2 or close crosses over kijunsen2[1] or close crosses over tenkansen2[1]timeframe(1 hour)Stoch3 = Stochastic[34,3]//Tenkansen3 = (highest[9](high)+lowest[9](low))/2//Kijunsen3 = (highest[26](high)+lowest[26](low))/2cst1h= Stoch3 > Average[3](Stoch3) or Stoch3 >80//cc1h= close crosses over kijunsen3 or close crosses over tenkansen3 or close crosses over kijunsen3[1] or close crosses over tenkansen3[1]IF c1 and c2 and c6 and c7 and c8 and c9 and c11 and c12 and cr THENSCREENER [cond] SORT BY cond AS "Var"endif04/14/2021 at 10:12 AM #167029J’ai vague souvenir d’utilisateurs qui avaient fait face à un bug dans certaines conditions avec les commandes de type Dhigh, Dlow etc… Je vérifie avec Nicolas s’il y a eu des nouvelles là-dessus (bug confirmé ou pas, résolution en chemin ou effectuée…)
04/14/2021 at 11:40 AM #16703704/14/2021 at 6:59 PM #167089Je pense avoir compris en partie pourquoi la détection ne fonctionne pas sur certains titres.
J’ai oublier le [1] après les 2 derniers close dans mes conditions :
cc5= close crosses over kijunsen1 or close crosses over tenkansen1 or close crosses over kijunsen1[1] or close crosses over tenkansen1[1]cc15= close crosses over kijunsen2 or close crosses over tenkansen2 or close crosses over kijunsen2[1] or close crosses over tenkansen2[1]J’ai corriger et le screener semble déjà me donner plus de résultats.Cependant même si il s’agissait d’un élément important à corriger cela ne résoudra pas tout.Car cela peut expliquer pourquoi le premier titre que je vous ai joint n’a pas été détecter mais pas le 2e.Voyez-vous une autre erreur que j’aurais pu commettre dans mon code et qui resterait à corriger et pourrait justifier de pourquoi le 2e titre n’est pas sorti dans mes résultats ?04/14/2021 at 8:19 PM #167106Comme il y a beaucoup de conditions, quand on tombe sur un titre qu’on estime valable selon les conditions du screener mais qui ne ressort pas, pour mieux voir il faudrait transformer le screener en indicateur, avec une ligne return qui inclut toutes les conditions, appliquer cet indicateur au titre et visualiser laquelle des conditions manque, afin de soit voir pourquoi le titre effectivement ne correspond pas, soit trouver un bug dans le code si une des conditions est manquante par erreur:
1return cond as "cond", c1 as "c1", c2 as "c2", c6 as "c6", c7 as "c7", c8 as "c8", c9 as "c9", c11 as "c11", c12 as "c12", cr as "cr"1 user thanked author for this post.
04/15/2021 at 9:34 AM #167134Rebonjour,
Merci pour votre conseil, cela a été efficace et m’a permis de voir quelle(s) conditions posaient problème.
Apparemment dans le code ci dessous, c12 et c13 posent régulièrement problème en renvoyant 0 alors qu’ils devraient être positifs.
c12 est des fois valide et des fois non et continue à posé problème sans que je comprenne pourquoi même après avoir essayer de le modifier comme vous pourrez le voir dans le code qui suit.
Mais c’est réellement c13 qui pose problème car il est réellement tout le temps à 0 même après avoir tenter de le modifier en mettant toutes les composantes de la condition sur le même timeframe cela n’a absolument rien changer.
indicateur multiples conds12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273timeframe(1 hour)c1=close*volume > 50000Ht = DHigh(1)Bs = DLow(1)C = DClose(1)Pivot = (Ht + Bs + C) / 3timeframe(daily)Ht2 = DHigh(1)Bs2 = DLow(1)C2 = DClose(1)Pivot2 = (Ht2 + Bs2 + C2) / 3timeframe(2 hours)Ht3 = DHigh(1)Bs3 = DLow(1)C3 = DClose(1)Pivot3 = (Ht3 + Bs3 + C3) / 3timeframe(5 minutes)Tenkansen1 = (highest[9](high)+lowest[9](low))/2Kijunsen1 = (highest[26](high)+lowest[26](low))/2Stoch = Stochastic[34,3]VariationVol = Volume / indicVariationVol2 = (Volume + Volume[1] + Volume[2]) / indic2c13 = (VariationVol or VariationVol2) > 1c14= close > pivot or close > pivot2 or close > pivot3c4 = cd5 or cd15cd5 =DIplus[14] > DIminus[14]cv= (((highest[3](high)-lowest[3](low))/lowest[3](low)))*100c6=cv>1 and cv<5cond=cvcr= c4 and c10 and c11c7 = close >lowest[3](low)c8 = rsi[21]>rsi[21][1]c9 = crisk1 or crisk2crisk1= ((close-Kijunsen1)/Kijunsen1)<0.03c10= crsi1 or crsi2crsi1= rsi[21] crosses over 50 or rsi[21][1] crosses over 50 or rsi[21][2] crosses over 50c11 = cst5 or cst15 or cst1hcst5= Stoch > Average[3](Stoch) or Stoch >80c12= cc5 or cc15// or cc1hcc5= close crosses over kijunsen1 or close crosses over tenkansen1 or close[1] crosses over kijunsen1[1] or close[1] crosses over tenkansen1[1] or kijunsen1 crosses over close or tenkansen1 crosses over close or kijunsen1[1] crosses over close or tenkansen1[1] crosses over closetimeframe(15 minutes)Stoch2 = Stochastic[34,3]Kijunsen2 = (highest[26](high)+lowest[26](low))/2Tenkansen2 = (highest[9](high)+lowest[9](low))/2indic = Average[250](Volume)/3indic2 = Average[250](Volume)cst15= Stoch2 > Average[3](Stoch2) or Stoch2 >80crsi2= rsi[21]>50crisk2= ((close-Kijunsen2)/Kijunsen2)<0.03cd15 = DIplus[14] > DIminus[14]cc15= close crosses over kijunsen2 or close crosses over tenkansen2 or close[1] crosses over kijunsen2[1] or close[1] crosses over tenkansen2[1] or kijunsen2 crosses over close or tenkansen2 crosses over close or kijunsen2[1] crosses over close or tenkansen2[1] crosses over closetimeframe(1 hour)Stoch3 = Stochastic[34,3]//Tenkansen3 = (highest[9](high)+lowest[9](low))/2//Kijunsen3 = (highest[26](high)+lowest[26](low))/2cst1h= Stoch3 > Average[3](Stoch3) or Stoch3 >80//cc1h= close crosses over kijunsen3 or close crosses over tenkansen3 or close crosses over kijunsen3[1] or close crosses over tenkansen3[1]return cond as "cond", c1 as "c1", c13 as "c13", c6 as "c6", c7 as "c7", c8 as "c8", c9 as "c9", c11 as "c11", c12 as "c12", cr as "cr", c14 as "c14"04/15/2021 at 9:58 AM #167135Bonjour effectivement les noms c2 et c3 étaient déjà pris en lignes 14 et 22, et c’est bien de les avoir rebaptisées (c13 et c14)
Maintenant, en ce qui concerne le contenu de c13, écrire (A or B) est une syntaxe réservées aux conditions, pas aux valeurs numériques, du coup A et B (c’est à dire dans votre code VariationVol et VariationVol2) sont considérées comme conditions égales à 0 ou 1 au lieu d’avoir leurs valeurs numériques, et 1 n’étant pas strictement supérieur à 1, cela met forcément c13=0 dans tous les cas.
Il aurait fallu écrire: A>1 or B>1 pour que A et B soient considérées pour leurs valeurs numériques sans être transformées en conditions, et pouvoir les comparer à 1. Autrement dit:
1c13 = (VariationVol > 1) or (VariationVol2 > 1)04/15/2021 at 11:06 AM #167148Apparemment cela semble effectivement avoir résolu le problème sur c13 mais j’ai du également mettre les conditions indic et indic 2 sur le timeframe 5 minutes car ces conditions buguaient des fois sur certains titres sur le timeframe 15 minutes.
Merci pour cette solution, cependant il reste c12 qui pose problème car non validé alors que les prix croissent pourtant la tenkan à la hausse ( ou inversement ) comme dans l’exemple ci-joint.
Avez-vous une idée de ce qui peut poser ce problème ?
04/15/2021 at 12:19 PM #167161Je ne vois pas très bien la bougie qui précède, mais j’ai l’impression que sa close était aussi au-dessus de la tenkan? Auquel cas le cross over n’était pas fait sur ces 2 bougies là, mais plusieurs autres avant. Si la close de la précédente était bien déjà au-delà de la tenkan, bien tenir compte que “close cross over” c’est une syntaxe pour faire ressortir la bougie où la close a basculé de côté par rapport à ce qui suit le terme cross over, mais si ça c’est passé 2 ou 3 bougies avant, ou si depuis la close précédente au-dessus, l’intérieur de la bougie en cours traverse en bas avec low mais remonte au-dessus avec close, alors le cross over n’est pas vrai pour la close.
04/15/2021 at 12:37 PM #167163Effectivement autant pour moi la bougie précédente était bien déjà au-dessus de la tenkan…
Mais dans ce cas est-il possible d’écrire une condition afin de détecter un rebond sur la kijun ou la tenkan svp ?
04/15/2021 at 12:47 PM #167164La définition du rebond de l’un ne sera pas forcément valable pour autrui, tout dépend de combien en arrière on regarde pour définir si on vient d’assez loin, et de combien après on veut attendre pour confirmer l’éloignement, ou si plus pressé on veut juste quelque chose qui se passe sur la bougie en cours par rapport à la précedente quitte à ne détecter qu’une proximité plutôt qu’un rebond… Au plus pressé on pourrait faire la combinaison close[1]>tenkan and low<=tenkan and close>tenkan (en plus du cross over, pas à la place de)
04/15/2021 at 3:26 PM #167173Super cela fonctionne effectivement à merveille.
Encore merci pour votre aide et en vous souhaitant une bonne fin de journée à vous.
Camille
1 user thanked author for this post.
04/28/2021 at 8:46 AM #168247Bonjour,
Il semblerais que la condition c14 du screener pose régulièrement problème, je soupçonne un bug car les résultats sont pour le moins étrange.
Quand je regarde avec l’indicateur la condition est noté une première fois à 0 puis quand je regarde à nouveau le titre quelques secondes après la condition apparait comme étant validée puis de nouveau invalide.
Ci-joint un exemple de titre ou je rencontre le problème.
Cordialement
Camille
04/28/2021 at 9:06 AM #168253Bonjour, je vois que ta c14 est liée à des calculs de pivots partant des variables ht, bs, c (…2 …3) en mtf. Dans le même esprit de debugging qui a mené à visualiser les conditions, il te faut probablement visualiser en indic séparé tes 3 variables pivots, pour trouver si un des 3 pivots change d’abord, puis à laquelle des ht, bs, c variables c’est dû (puis de là, si par exemple c’est dû à celles du plus grand timeframe, vérifier la quantité d’historique dispo)
123456789101112131415161718192021222324252627282930timeframe(1 hour)Ht = DHigh(1)Bs = DLow(1)C = DClose(1)Pivot = (Ht + Bs + C) / 3timeframe(daily)Ht2 = DHigh(1)Bs2 = DLow(1)C2 = DClose(1)Pivot2 = (Ht2 + Bs2 + C2) / 3timeframe(2 hours)Ht3 = DHigh(1)Bs3 = DLow(1)C3 = DClose(1)Pivot3 = (Ht3 + Bs3 + C3) / 3timeframe(5 minutes)c14= close > pivot or close > pivot2 or close > pivot3return pivot, pivot2, pivot3// return Ht, Bs, C, Ht2, Bs2, C2, Ht3, Bs3, C305/04/2021 at 1:12 PM #168771J’ai résolu le problème pour la condition c14 mais les conditions c10, c11 et c 12 posent également problème.
Sur les 2 exemples ci-dessous sur l’un les conditions c10 et c12 renvoient 0 alors qu’elles sont visiblement valides sur le 5 minutes tandis que c11 est comptée comme étant valide alors qu’elle ne l’est pas et sur l’autre la condition c11 est notée comme étant invalide alors qu’elle l’est … C’est vraiment le monde à l’envers, est-ce que mon code est faux à ce point ? Il me semble pourtant correcte.
indicateur mtf screener1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162timeframe(1 hour)c1=close*volume > 50000Pivot = (High[1] + Low[1] + Close[1] + Open[0])/4timeframe(4 hours)Pivot2 = (High[1] + Low[1] + Close[1] + Open[0])/4timeframe(2 hours)Pivot3 = (High[1] + Low[1] + Close[1] + Open[0])/4timeframe(5 minutes)Tenkansen1 = (highest[9](high)+lowest[9](low))/2Kijunsen1 = (highest[26](high)+lowest[26](low))/2Stoch = Stochastic[34,3](close)indic = Average[250](Volume)indic2 = Average[250](Volume)*3VariationVol = Volume / indicVariationVol2 = (Volume + Volume[1] + Volume[2]) / indic2c13 = (VariationVol > 1) or (VariationVol2 > 1)c14= close > pivot or close > pivot2 or close > pivot3c4 = cd5 or cd15cd5 =DIplus[14] > DIminus[14]cv= (((highest[3](high)-lowest[3](low))/lowest[3](low)))*100c6=cv>1 and cv<5cond=cvc7 = close >lowest[3](low)c8 = rsi[21]>rsi[21][1]c9 = crisk1 or crisk2crisk1= ((close-Kijunsen1)/Kijunsen1)<0.03c10= crsi1 or crsi2crsi1= rsi[21] crosses over 50 or rsi[21][1] crosses over 50 or rsi[21][2] crosses over 50c11 = cst5 or cst15 or cst1hcst5= Stoch > Average[3](Stoch) or Stoch >80c12= cc5 or cc15// or cc1hcc5= close crosses over kijunsen1 or close crosses over tenkansen1 or close[1] crosses over kijunsen1[1] or close[1] crosses over tenkansen1[1] or kijunsen1 crosses over close or tenkansen1 crosses over close or kijunsen1[1] crosses over close or tenkansen1[1] crosses over close or (close[1]>kijunsen1 and low<=kijunsen1 and close>kijunsen1) or ( close[1]>tenkansen1 and low<=tenkansen1 and close>tenkansen1 ) or (close[2]>kijunsen1[1] and low[1]<=kijunsen1[1] and close[1]>kijunsen1[1]) or ( close[2]>tenkansen1[1] and low[1]<=tenkansen1[1] and close[1]>tenkansen1[1])timeframe(15 minutes)Stoch2 = Stochastic[34,3](close)Kijunsen2 = (highest[26](high)+lowest[26](low))/2Tenkansen2 = (highest[9](high)+lowest[9](low))/2cst15= Stoch2 > Average[3](Stoch2) or Stoch2 >80crsi2= rsi[21]>50crisk2= ((close-Kijunsen2)/Kijunsen2)<0.03cd15 = DIplus[14] > DIminus[14]cc15= close crosses over kijunsen2 or close crosses over tenkansen2 or close[1] crosses over kijunsen2[1] or close[1] crosses over tenkansen2[1] or kijunsen2 crosses over close or tenkansen2 crosses over close or kijunsen2[1] crosses over close or tenkansen2[1] crosses over close or (close[1]>kijunsen2 and low<=kijunsen2 and close>kijunsen2) or ( close[1]>tenkansen2 and low<=tenkansen2 and close>tenkansen2 ) or (close[2]>kijunsen2[1] and low[1]<=kijunsen2[1] and close[1]>kijunsen2[1]) or ( close[2]>tenkansen2[1] and low[1]<=tenkansen2[1] and close[1]>tenkansen2[1])timeframe(1 hour)Stoch3 = Stochastic[34,3](close)//Tenkansen3 = (highest[9](high)+lowest[9](low))/2//Kijunsen3 = (highest[26](high)+lowest[26](low))/2cst1h= Stoch3 > Average[3](Stoch3) or Stoch3 >80//cc1h= close crosses over kijunsen3 or close crosses over tenkansen3 or close crosses over kijunsen3[1] or close crosses over tenkansen3[1]return cond as "cond", c1 as "c1",c4 as "c4", c13 as "c13", c6 as "c6", c7 as "c7", c8 as "c8", c9 as "c9",c10 as "c10", c11 as "c11", c12 as "c12", c14 as "c14" -
AuthorPosts
Find exclusive trading pro-tools on