screener indicateurs multiples

Viewing 15 posts - 1 through 15 (of 19 total)
  • Author
    Posts
  • #167022 quote
    CamilleRour
    Participant
    Average

    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

    timeframe(1 hour)
    c1=close*volume > 50000
    
    Ht = DHigh(1)
    Bs = DLow(1)
    C = DClose(1)
    
    Pivot = (Ht + Bs + C) / 3
    
    timeframe(daily)
    
    Ht2 = DHigh(1)
    Bs2 = DLow(1)
    C2 = DClose(1)
    
    Pivot2 = (Ht2 + Bs2 + C2) / 3
    
    timeframe(2 hours)
    
    Ht3 = DHigh(1)
    Bs3 = DLow(1)
    C3 = DClose(1)
    
    Pivot3 = (Ht3 + Bs3 + C3) / 3
    
    timeframe(5 minutes)
    Tenkansen1 = (highest[9](high)+lowest[9](low))/2
    Kijunsen1 = (highest[26](high)+lowest[26](low))/2
    Stoch = Stochastic[34,3]
    
    VariationVol = Volume / indic
    VariationVol2 = (Volume + Volume[1] + Volume[2]) / indic2
    c2 = (VariationVol or VariationVol2)  > 1
    c3= close > pivot or close > pivot2 or close > pivot3
    c4 = cd5 or cd15
    cd5 =DIplus[14] > DIminus[14]
    cv= (((highest[3](high)-lowest[3](low))/lowest[3](low)))*100
    c6=cv>1 and cv<5
    cond=cv
    cr= c4 and c10 and c11
    c7 = close >lowest[3](low)
    c8 = rsi[21]>rsi[21][1]
    c9 = crisk1 or crisk2
    crisk1= ((close-Kijunsen1)/Kijunsen1)<0.03
    c10= crsi1 or crsi2
    crsi1= rsi[21] crosses over 50 or rsi[21][1] crosses over 50 or rsi[21][2] crosses over 50
    c11 = cst5 or cst15 or cst1h
    cst5= Stoch > Average[3](Stoch) or Stoch >80
    c12= cc5 or cc15// or cc1h
    cc5= 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)/3
    indic2 = Average[250](Volume)
    Kijunsen2 = (highest[26](high)+lowest[26](low))/2
    Tenkansen2 = (highest[9](high)+lowest[9](low))/2
    
    cst15= Stoch2 > Average[3](Stoch2) or Stoch2 >80
    crsi2= rsi[21]>50
    crisk2= ((close-Kijunsen2)/Kijunsen2)<0.03
    cd15 = 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))/2
    
    cst1h= 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 THEN
    SCREENER [cond] SORT BY cond AS "Var"
    endif
    Capture-decran-2021-04-14-102522.png Capture-decran-2021-04-14-102522.png Capture-decran-2021-04-14-102601.png Capture-decran-2021-04-14-102601.png
    #167029 quote
    JC_Bywan
    Moderator
    Master

    J’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…)

    #167037 quote
    JC_Bywan
    Moderator
    Master

    Désolé, ce n’était pas une bonne piste, il y avait bien eu un problème, mais Nicolas dit que ça a été résolu depuis.

    #167089 quote
    CamilleRour
    Participant
    Average

    Je 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 ?
    #167106 quote
    JC_Bywan
    Moderator
    Master

    Comme 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:

    return 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"
    Nicolas thanked this post
    #167134 quote
    CamilleRour
    Participant
    Average

    Rebonjour,

    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.

    timeframe(1 hour)
    c1=close*volume > 50000
    
    Ht = DHigh(1)
    Bs = DLow(1)
    C = DClose(1)
    
    Pivot = (Ht + Bs + C) / 3
    
    timeframe(daily)
    
    Ht2 = DHigh(1)
    Bs2 = DLow(1)
    C2 = DClose(1)
    
    Pivot2 = (Ht2 + Bs2 + C2) / 3
    
    timeframe(2 hours)
    
    Ht3 = DHigh(1)
    Bs3 = DLow(1)
    C3 = DClose(1)
    
    Pivot3 = (Ht3 + Bs3 + C3) / 3
    
    timeframe(5 minutes)
    Tenkansen1 = (highest[9](high)+lowest[9](low))/2
    Kijunsen1 = (highest[26](high)+lowest[26](low))/2
    Stoch = Stochastic[34,3]
    
    VariationVol = Volume / indic
    VariationVol2 = (Volume + Volume[1] + Volume[2]) / indic2
    c13 = (VariationVol or VariationVol2)  > 1
    c14= close > pivot or close > pivot2 or close > pivot3
    c4 = cd5 or cd15
    cd5 =DIplus[14] > DIminus[14]
    cv= (((highest[3](high)-lowest[3](low))/lowest[3](low)))*100
    c6=cv>1 and cv<5
    cond=cv
    cr= c4 and c10 and c11
    c7 = close >lowest[3](low)
    c8 = rsi[21]>rsi[21][1]
    c9 = crisk1 or crisk2
    crisk1= ((close-Kijunsen1)/Kijunsen1)<0.03
    c10= crsi1 or crsi2
    crsi1= rsi[21] crosses over 50 or rsi[21][1] crosses over 50 or rsi[21][2] crosses over 50
    c11 = cst5 or cst15 or cst1h
    cst5= Stoch > Average[3](Stoch) or Stoch >80
    c12= cc5 or cc15// or cc1h
    cc5= 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
    
    timeframe(15 minutes)
    Stoch2 = Stochastic[34,3]
    Kijunsen2 = (highest[26](high)+lowest[26](low))/2
    Tenkansen2 = (highest[9](high)+lowest[9](low))/2
    indic = Average[250](Volume)/3
    indic2 = Average[250](Volume)
    
    cst15= Stoch2 > Average[3](Stoch2) or Stoch2 >80
    crsi2= rsi[21]>50
    crisk2= ((close-Kijunsen2)/Kijunsen2)<0.03
    cd15 = 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
    
    timeframe(1 hour)
    Stoch3 = Stochastic[34,3]
    //Tenkansen3 = (highest[9](high)+lowest[9](low))/2
    //Kijunsen3 = (highest[26](high)+lowest[26](low))/2
    
    cst1h= 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"
    #167135 quote
    JC_Bywan
    Moderator
    Master

    Bonjour 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:

    c13 = (VariationVol > 1) or (VariationVol2 > 1)

     

     

    #167148 quote
    CamilleRour
    Participant
    Average

    Apparemment 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 ?

    Capture-decran-2021-04-15-120548.png Capture-decran-2021-04-15-120548.png
    #167161 quote
    JC_Bywan
    Moderator
    Master

    Je 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.

    #167163 quote
    CamilleRour
    Participant
    Average

    Effectivement 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 ?

    #167164 quote
    JC_Bywan
    Moderator
    Master

    La 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)

    #167173 quote
    CamilleRour
    Participant
    Average

    Super cela fonctionne effectivement à merveille.

    Encore merci pour votre aide et en vous souhaitant une bonne fin de journée à vous.

    Camille

    JC_Bywan thanked this post
    #168247 quote
    CamilleRour
    Participant
    Average

    Bonjour,

    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

    Capture-decran-2021-04-28-093308.png Capture-decran-2021-04-28-093308.png Capture-decran-2021-04-28-094131.png Capture-decran-2021-04-28-094131.png
    #168253 quote
    JC_Bywan
    Moderator
    Master

    Bonjour, 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)

    timeframe(1 hour)
     
    Ht = DHigh(1)
    Bs = DLow(1)
    C = DClose(1)
     
    Pivot = (Ht + Bs + C) / 3
     
    timeframe(daily)
     
    Ht2 = DHigh(1)
    Bs2 = DLow(1)
    C2 = DClose(1)
     
    Pivot2 = (Ht2 + Bs2 + C2) / 3
     
    timeframe(2 hours)
     
    Ht3 = DHigh(1)
    Bs3 = DLow(1)
    C3 = DClose(1)
     
    Pivot3 = (Ht3 + Bs3 + C3) / 3
     
    timeframe(5 minutes)
    
    c14= close > pivot or close > pivot2 or close > pivot3
    
    return pivot, pivot2, pivot3
    // return Ht, Bs, C, Ht2, Bs2, C2, Ht3, Bs3, C3
    #168771 quote
    CamilleRour
    Participant
    Average

    J’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.

     

    timeframe(1 hour)
     
    c1=close*volume > 50000
    
    Pivot = (High[1] + Low[1] + Close[1] + Open[0])/4
     
    timeframe(4 hours)
     
    Pivot2 = (High[1] + Low[1] + Close[1] + Open[0])/4
     
    timeframe(2 hours)
     
    Pivot3 = (High[1] + Low[1] + Close[1] + Open[0])/4
    
    timeframe(5 minutes)
    Tenkansen1 = (highest[9](high)+lowest[9](low))/2
    Kijunsen1 = (highest[26](high)+lowest[26](low))/2
    Stoch = Stochastic[34,3](close)
    indic = Average[250](Volume)
    indic2 = Average[250](Volume)*3
    
    VariationVol = Volume / indic
    VariationVol2 = (Volume + Volume[1] + Volume[2]) / indic2
    c13 = (VariationVol > 1) or (VariationVol2 > 1)
    c14= close > pivot or close > pivot2 or close > pivot3
    c4 = cd5 or cd15
    cd5 =DIplus[14] > DIminus[14]
    cv= (((highest[3](high)-lowest[3](low))/lowest[3](low)))*100
    c6=cv>1 and cv<5
    cond=cv
    c7 = close >lowest[3](low)
    c8 = rsi[21]>rsi[21][1]
    c9 = crisk1 or crisk2
    crisk1= ((close-Kijunsen1)/Kijunsen1)<0.03
    c10= crsi1 or crsi2
    crsi1= rsi[21] crosses over 50 or rsi[21][1] crosses over 50 or rsi[21][2] crosses over 50
    c11 = cst5 or cst15 or cst1h
    cst5= Stoch > Average[3](Stoch) or Stoch >80
    c12= cc5 or cc15// or cc1h
    cc5= 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))/2
    Tenkansen2 = (highest[9](high)+lowest[9](low))/2
    
    
    cst15= Stoch2 > Average[3](Stoch2) or Stoch2 >80
    crsi2= rsi[21]>50
    crisk2= ((close-Kijunsen2)/Kijunsen2)<0.03
    cd15 = 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))/2
    
    cst1h= 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"
    Capture-decran-2021-05-04-104306.png Capture-decran-2021-05-04-104306.png Capture-decran-2021-05-04-104224.png Capture-decran-2021-05-04-104224.png
Viewing 15 posts - 1 through 15 (of 19 total)
  • You must be logged in to reply to this topic.

screener indicateurs multiples


ProScreener : Scanners de Marché & Détection

New Reply
Author
Summary

This topic contains 18 replies,
has 2 voices, and was last updated by CamilleRour
4 years, 8 months ago.

Topic Details
Forum: ProScreener : Scanners de Marché & Détection
Language: French
Started: 04/14/2021
Status: Active
Attachments: 7 files
Logo Logo
Loading...