Ajout de condition pour indicateur Divergence RSI

Viewing 15 posts - 1 through 15 (of 48 total)
  • Author
    Posts
  • #96562 quote
    Hugues Bontour
    Participant
    New

    Bonjour,
    Bravo pour cette indicateur incroyable à Nicolas déjà 😉

    Est-il possible de rajouter quatre conditions à cette indicateur ?
    1: le nombre de bougie minimum (4) et maximum (16) entre les deux plus haut ou plus bas.
    (si c’est plus simple avec les UT ce sera utilisé en 15min et 1h surtout)

    2: le RSI ne descende pas en dessous de 60 pour une div baissière entre les deux plus haut
    et ne monte pas au dessus de 40 pour une div haussière entre les deux plus bas.

    3: le deuxième plus haut ou plus bas du RSI n’est pas forcément en sur-vente ou sur-achat.

    4: Appeler “Bruit” le plus bas du RSI entre les deux sommets dans une div baissière et le plus haut du RSI entre les deux creux dans une div haussière.

    Si cela est possible ce serait un indicateur incroyablement incroyable :-p
    Merci d’avance pour la réponse
    Bien cordialement

     

    //PRC_AnotherRSIdivergences | indicator
    //25.02.2019
    //Nicolas @ www.prorealcode.com
    //Sharing ProRealTime knowledge
    
    // --- settings
    RSIp=14 //RSI period
    obLevel=70 //overbought level
    osLevel=30 //oversold level
    minimalBars=5 //minimal count of bars where RSI is ob or os
    // --- end of settings
    
    irsi = rsi[RSIp]
    ob = irsi>obLevel
    os = irsi<osLevel
    
    if ob then
     if not ob[1] then
      maxrsi = 0
      maxprice = 0
      firstobbar = barindex
     endif
     maxrsi=max(maxrsi,irsi)
     maxprice=max(maxprice,high)
     if maxrsi<>maxrsi[1] then
      maxrsibar=barindex
     endif
    endif
    
    if os then
     if not os[1] then
      minrsi = 100
      minprice = close*100
      firstosbar = barindex
     endif
     minrsi=min(minrsi,irsi)
     minprice=min(minprice,low)
     if minrsi<>minrsi[1] then
      minrsibar=barindex
     endif
    endif
    
    divsell=0
    if irsi crosses under obLevel then
     //verif divergence
     div = maxprice>oldmaxprice and maxrsi<oldmaxrsi and (barindex-firstobbar)>=minimalBars
     if div then
      drawsegment(oldmaxrsibar,oldmaxrsi,maxrsibar,maxrsi) coloured(200,0,0)
      drawarrowdown(maxrsibar,maxrsi) coloured(200,0,0)
      divsell=osLevel
     endif
     oldmaxrsi = maxrsi
     oldmaxprice = maxprice
     oldmaxrsibar = maxrsibar
    endif
    
    divbuy=0
    if irsi crosses over osLevel then
     //verif divergence
     div = minprice<oldminprice and minrsi>oldminrsi and (barindex-firstosbar)>=minimalBars
     if div then
      drawsegment(oldminrsibar,oldminrsi,minrsibar,minrsi) coloured(0,200,0)
      drawarrowup(minrsibar,minrsi) coloured(0,200,0)
      divbuy=osLevel
     endif
     oldminrsi = minrsi
     oldminprice = minprice
     oldminrsibar = minrsibar
    endif
    
    return irsi style(line,2) as "RSI",obLevel coloured(168,168,168) style(dottedline,1) as "overbought level", osLevel coloured(168,168,168) style(dottedline,1) as "oversold level", divsell coloured(200,0,0) style(histogram) as "sell divergence", divbuy coloured(0,200,0) style(histogram) as "buy divergence"
    #96607 quote
    Nicolas
    Keymaster
    Master

    Voilà un premier jet qui incorpore les points 1 et 2 de ta demande. Pour le point 3, cela revient à repartir de zéro au niveau de la logique de cet indicateur d’origine (qui était spécifique et codé suite à une demande sur le forum), il existe de nombreux autres indicateurs de divergences du RSI sur le site qui devrait répondre à celle-ci. Pour ton point 4, je n’ai pas compris du tout.

    //PRC_AnotherRSIdivergences | indicator
    //25.02.2019
    //Nicolas @ www.prorealcode.com
    //Sharing ProRealTime knowledge
    
    // --- settings
    RSIp=14 //RSI period
    obLevel=70 //overbought level
    osLevel=30 //oversold level
    minimalBars=5 //minimal count of bars where RSI is ob or os
    minBarBetween = 4
    maxBarBetween = 16
    noLowerThan = 60
    noHigherThan = 40
    // --- end of settings
    
    irsi = rsi[RSIp]
    ob = irsi>obLevel
    os = irsi<osLevel
    
    if ob then
    if not ob[1] then
    maxrsi = 0
    maxprice = 0
    firstobbar = barindex
    endif
    maxrsi=max(maxrsi,irsi)
    maxprice=max(maxprice,high)
    if maxrsi<>maxrsi[1] then
    maxrsibar=barindex
    endif
    endif
    
    if os then
    if not os[1] then
    minrsi = 100
    minprice = close*100
    firstosbar = barindex
    endif
    minrsi=min(minrsi,irsi)
    minprice=min(minprice,low)
    if minrsi<>minrsi[1] then
    minrsibar=barindex
    endif
    endif
    
    divsell=0
    if irsi crosses under obLevel then
    //verif divergence
    barcount=maxrsibar-oldmaxrsibar
    div = maxprice>oldmaxprice and maxrsi<oldmaxrsi and (barindex-firstobbar)>=minimalBars and barcount>=minbarbetween and barcount<=maxbarbetween and summation[max(1,barcount)](irsi<noLowerThan)=0
    if div then
    drawsegment(oldmaxrsibar,oldmaxrsi,maxrsibar,maxrsi) coloured(200,0,0)
    drawarrowdown(maxrsibar,maxrsi) coloured(200,0,0)
    divsell=osLevel
    endif
    oldmaxrsi = maxrsi
    oldmaxprice = maxprice
    oldmaxrsibar = maxrsibar
    endif
    
    divbuy=0
    if irsi crosses over osLevel then
    //verif divergence
    barcount=minrsibar-oldminrsibar
    div = minprice<oldminprice and minrsi>oldminrsi and (barindex-firstosbar)>=minimalBars and barcount>=minbarbetween and barcount<=maxbarbetween and summation[max(1,barcount)](irsi>noHigherThan)=0
    if div then
    drawsegment(oldminrsibar,oldminrsi,minrsibar,minrsi) coloured(0,200,0)
    drawarrowup(minrsibar,minrsi) coloured(0,200,0)
    divbuy=osLevel
    endif
    oldminrsi = minrsi
    oldminprice = minprice
    oldminrsibar = minrsibar
    endif
    
    return irsi style(line,2) as "RSI",obLevel coloured(168,168,168) style(dottedline,1) as "overbought level", osLevel coloured(168,168,168) style(dottedline,1) as "oversold level", divsell coloured(200,0,0) style(histogram) as "sell divergence", divbuy coloured(0,200,0) style(histogram) as "buy divergence"
    Hugues Bontour thanked this post
    #96659 quote
    Hugues Bontour
    Participant
    New

    Bonjour Nicolas,
    Merci pour ce travail très rapide 😉

    Cependant je ne comprend pas pourquoi mais l’indicateur ne donne quasiment plus de signal alors que manuellement j’en trouve pas mal(dans les conditions donné bien évidement), même l’ancienne version donne certaines des div dans mes conditions.

    Exemple dans l’image jointe, indicateur du bas l’ancienne version, indicateur du haut nouvelle version et la flèche noir en bas pour expliquer cette “cassure du bruit” expliqué en dessous pour la condition 4.

    Pour la condition 3 j’ai rechercher (je pense) tous les indicateur div rsi du forum mais aucun ne fait cette condition, il faudrait un nouveau sujet pour élaborer un indicateur avec toutes mes conditions ?
    pour la condition 4 c’est pour, par la suite, mettre en place du trading automatique et il faudrait que le contrat soit pris à la cassure de se fameux bruit qui est le plus haut du RSI pour une divergence haussière par exemple.

    Encore merci pour le temps accordé

    essaie-ind-div.png essaie-ind-div.png
    #96667 quote
    Nicolas
    Keymaster
    Master

    L’une des nouvelles conditions n’est pas remplit, au hasard celle sur le niveau 40 à ne pas casser ?

    Pour les screenshots, ce serait sympa d’indiquer à minima l’instrument et la date, j’ai un peu de mal à débugger avec une image .. 😐 Merci.

    Si je devais définir ce que tu appelles le “bruit”, c’est le plus haut du RSI atteint entre les deux points de la divergence ?

    A nouveau, cet indicateur n’utilise pas les pics et creux “réels” du prix, on constate une divergence uniquement quand le RSI croise à la hausse le niveau de survente et vice-versa. Si on devait considérer la divergence alors que l’on est déjà sortit de cette zone (comme tu le stipules dans ton point n°3, il y aurait pleins de divergences à la suite, dans ce cas, quid du signal ?).

    Histoire de désacraliser le phénomène dit de divergence et pour mémoire, ce que l’on constate ici c’est simplement une erreur de calcul ou plutôt une désynchronisation du RSI qui est calculé sur une période donnée alors que le prix est une série continue. C’est pour cette raison qu’on veut voir et constater des divergences sur tous les oscillateurs.

    Hugues Bontour thanked this post
    #96672 quote
    Hugues Bontour
    Participant
    New

    Oui désolé je n’y avait même pas penser.. c’est le Dow en M15 à 17h30 le 11/04/19

    Au début j’ai cru que c’était les 40 du RSI qui était cassé mais non car le RSI au plus haut est à 38.5.

    Pour le “bruit” c’est ça 😉

    Alors je comprend le soucis qu’il y aurait plusieurs signaux sur un seul mais temps que le dernier pique est plus bas que le premier et que le bruit est cassé par la suite c’est à ce moment là que automatisme commencerait
    (Je suis vraiment débutant dans tous ça donc je ne sais pas si c’est possible bien évidement)
    Et je ne sais pas aussi si c’est très claire comme explication..

    Je joint un exemple de divergence avec un seul pique en sur-vente. (lundi 15 avril 2019 à 16:15)

    Pas de soucis pour les divergences, la désynchronisation du RSI par rapport au clôtures des prix est un bon signal pour ma part pour des achats ou ventes, nous sommes à 70% de taux de réussites avec ces conditions(pris manuellement) mais je recherche un indicateur pour “effeuiller” le travail et finir par lancer un proorder pour automatiser les prises de positions.

    exemple-div-1-sommet.png exemple-div-1-sommet.png
    #99442 quote
    hsicanada
    Participant
    New

    Bonjour nicolas,

    Es ce que ce serait possible de transformer de garder les même condition de l indicateur plus haut . Mais le transformer pour utiliser dans le screener . Merci a l avance .

    Voici le code de l indicateur dont je parle :

    //PRC_AnotherRSIdivergences | indicator
    //25.02.2019
    //Nicolas @ www.prorealcode.com
    //Sharing ProRealTime knowledge
    
    
    // --- settings
    RSIp=14 //RSI period
    obLevel=70 //overbought level
    osLevel=30 //oversold level
    minimalBars=5 //minimal count of bars where RSI is ob or os
    minBarBetween = 4
    maxBarBetween = 16
    noLowerThan = 60
    noHigherThan = 40
    // --- end of settings
    
    
    irsi = rsi[RSIp]
    ob = irsi>obLevel
    os = irsi<osLevel
    
    
    if ob then
    if not ob[1] then
    maxrsi = 0
    maxprice = 0
    firstobbar = barindex
    endif
    maxrsi=max(maxrsi,irsi)
    maxprice=max(maxprice,high)
    if maxrsi<>maxrsi[1] then
    maxrsibar=barindex
    endif
    endif
    
    
    if os then
    if not os[1] then
    minrsi = 100
    minprice = close*100
    firstosbar = barindex
    endif
    minrsi=min(minrsi,irsi)
    minprice=min(minprice,low)
    if minrsi<>minrsi[1] then
    minrsibar=barindex
    endif
    endif
    
    
    divsell=0
    if irsi crosses under obLevel then
    //verif divergence
    barcount=minrsibar-oldminrsibar
    div = maxprice>oldmaxprice and maxrsi<oldmaxrsi and (barindex-firstobbar)>=minimalBars and barcount>=minbarbetween and barcount<=maxbarbetween and summation[max(1,barcount)](irsi<noLowerThan)=0
    if div then
    drawsegment(oldmaxrsibar,oldmaxrsi,maxrsibar,maxrsi) coloured(200,0,0)
    drawarrowdown(maxrsibar,maxrsi) coloured(200,0,0)
    divsell=osLevel
    endif
    oldmaxrsi = maxrsi
    oldmaxprice = maxprice
    oldmaxrsibar = maxrsibar
    endif
    
    
    divbuy=0
    if irsi crosses over osLevel then
    //verif divergence
    barcount=minrsibar-oldminrsibar
    div = minprice<oldminprice and minrsi>oldminrsi and (barindex-firstosbar)>=minimalBars and barcount>=minbarbetween and barcount<=maxbarbetween and summation[max(1,barcount)](irsi>noHigherThan)=0
    if div then
    drawsegment(oldminrsibar,oldminrsi,minrsibar,minrsi) coloured(0,200,0)
    drawarrowup(minrsibar,minrsi) coloured(0,200,0)
    divbuy=osLevel
    endif
    oldminrsi = minrsi
    oldminprice = minprice
    oldminrsibar = minrsibar
    endif
    
    
    return irsi style(line,2) as "RSI",obLevel coloured(168,168,168) style(dottedline,1) as "overbought level", osLevel coloured(168,168,168) style(dottedline,1) as "oversold level", divsell coloured(200,0,0) style(histogram) as "sell divergence", divbuy coloured(0,200,0) style(histogram) as "buy divergence"
    #99489 quote
    Nicolas
    Keymaster
    Master

    Voici le screener de cette version. J’ai repéré une erreur de codage en utilisant des noms de variables incorrects pour les divergences baissières, je l’ai donc corrigé également dans le code indicateur ci-dessus.

    //PRC_AnotherRSIdivergences | indicator
    //25.02.2019
    //Nicolas @ www.prorealcode.com
    //Sharing ProRealTime knowledge
    
    
    // --- settings
    RSIp=14 //RSI period
    obLevel=70 //overbought level
    osLevel=30 //oversold level
    minimalBars=5 //minimal count of bars where RSI is ob or os
    minBarBetween = 4
    maxBarBetween = 16
    noLowerThan = 60
    noHigherThan = 40
    // --- end of settings
    
    
    irsi = rsi[RSIp]
    ob = irsi>obLevel
    os = irsi<osLevel
    
    
    if ob then
    if not ob[1] then
    maxrsi = 0
    maxprice = 0
    firstobbar = barindex
    endif
    maxrsi=max(maxrsi,irsi)
    maxprice=max(maxprice,high)
    if maxrsi<>maxrsi[1] then
    maxrsibar=barindex
    endif
    endif
    
    
    if os then
    if not os[1] then
    minrsi = 100
    minprice = close*100
    firstosbar = barindex
    endif
    minrsi=min(minrsi,irsi)
    minprice=min(minprice,low)
    if minrsi<>minrsi[1] then
    minrsibar=barindex
    endif
    endif
    
    
    divsell=0
    if irsi crosses under obLevel then
    //verif divergence
    barcount=maxrsibar-oldmaxrsibar
    div = maxprice>oldmaxprice and maxrsi<oldmaxrsi and (barindex-firstobbar)>=minimalBars and barcount>=minbarbetween and barcount<=maxbarbetween and summation[max(1,barcount)](irsi<noLowerThan)=0
    if div then
    //drawsegment(oldmaxrsibar,oldmaxrsi,maxrsibar,maxrsi) coloured(200,0,0)
    //drawarrowdown(maxrsibar,maxrsi) coloured(200,0,0)
    divsell=osLevel
    endif
    oldmaxrsi = maxrsi
    oldmaxprice = maxprice
    oldmaxrsibar = maxrsibar
    endif
    
    
    divbuy=0
    if irsi crosses over osLevel then
    //verif divergence
    barcount=minrsibar-oldminrsibar
    div = minprice<oldminprice and minrsi>oldminrsi and (barindex-firstosbar)>=minimalBars and barcount>=minbarbetween and barcount<=maxbarbetween and summation[max(1,barcount)](irsi>noHigherThan)=0
    if div then
    //drawsegment(oldminrsibar,oldminrsi,minrsibar,minrsi) coloured(0,200,0)
    //drawarrowup(minrsibar,minrsi) coloured(0,200,0)
    divbuy=osLevel
    endif
    oldminrsi = minrsi
    oldminprice = minprice
    oldminrsibar = minrsibar
    endif
    
    screener[divbuy or divsell](max(divbuy,divsell))
    #116261 quote
    olivierletrader
    Participant
    New

    Bonjour Nicolas,

    Lorsque j’utilise votre screener de divergence, PRT me donne plusieurs dizaines d’actifs dont 90% ne sont pas en train de diverger.
    N’y à t-il pas une erreur ou est-ce moi qui ait mal installé votre screener ?
    PS : l’indicateur de divergence que vous avez codé et mis plus haut dans la page fonctionne très bien.

    #116293 quote
    Nicolas
    Keymaster
    Master

    Le screener ci-dessous détecte les divergences selon cette version modifiée de l’indicateur: https://www.prorealcode.com/topic/ajout-de-condition-pour-indicateur-divergence-rsi/#post-99442

    Chacun y verra les divergences qu’il souhaite, n’est-ce pas ?

    Si tu veux un screener de la version de l’indicateur du premier post, il suffit de me l’indiquer.

    #120314 quote
    Hervs
    Participant
    Average

    Bonjour Nicolas,

    J’ai copié l’indicateur que vous aviez créé le 16/04/19 sur ce topic , j’ai voulu le tester sur une divergence paru sur Genfit (ci joint l’image pour vous aider ) en hebdo entre juillet et octobre 2019 qui remplit les conditions, cela ne fonctionne malheureusement pas, le programme étant trop complexe pour moi, pourriez vous svp m’aider ?

    Si besoin de plus d’informations, n’hésitez pas, merci par avance.

    exemple-DIV.png exemple-DIV.png
    #120325 quote
    Nicolas
    Keymaster
    Master

    Je comprends, mais cet indicateur utilise des conditions “plus élaborées” que celle de l’indicateur de la plateforme. Le code étant strict, si les conditions ne sont pas remplies, il ne donnera pas de signal. Il existe une multitude d’indicateurs de divergences sur le site, voir ces sujets et autres posts dans notre bibliothèque de codes :

    https://www.prorealcode.com/topics-tag/divergences/

    https://www.prorealcode.com/tag/divergences/

    Par ailleurs, on peut désormais récupérer l’information de l’indicateur de la plateforme avec une nouvelle instruction disponible depuis la version 11: DivergenceRSI

    #120329 quote
    Hervs
    Participant
    Average

    Merci Nicolas pour votre réponse, j’avais bien compris que le code était strict mais je cherchais à faire un parallèle avec l’indicateur de la plateforme pour vous montrer la problématique rencontrée.J’avais essayé de changer les valeurs pour donner plus de marge à l’indicateur mais cela ne fonctionne pas, voila pourquoi je vous avais sollicité.

    Je cherchais à vraiment comprendre pourquoi cela ne fonctionne pas alors que le cas Genfit rentre dans les critères établis et demandés dans le haut du topic.

    Le but étant vraiment d’utiliser votre indicateur et pas celui de prorealtime car le votre est plus exigeant. Si vous pouviez m’expliquer pourquoi cela ne fonctionne pas, désolé pour mon insistance.

    Merci par avance.

    #120330 quote
    Nicolas
    Keymaster
    Master

    Ce sont ces paramètres qu’il faut faire varier pour arriver à trouver cette divergence, j’y arrive avec:

    minimalBars=1 //nombres de bars minimum où le RSI se trouve en zone surachat ou survente
    minBarBetween = 1 //nombres de bars minimum entre les 2 points
    maxBarBetween = 100 //nombre de bars maximum entre les 2 points

    Conditions strictes, comme je l’évoquais précédemment.

    Hervs thanked this post
    #120606 quote
    Al
    Participant
    Senior

    Bonjour ,

    Suivant le même exemple , personnellement j’ai bien une divergence affichée avec l’indicateur  ( minimalBars=1 ou 2 , à partir de 3 plus de div. ,normal ) par contre sur la version 11 de la plateforme impossible de mettre l’histogramme ( sur selldiv = ok , mais pas possible sur buydiv ) idem ” oversold level ” pas de choix de mise en forme ,  bug ?

    Merci d’avance

    rsi-div.png rsi-div.png
    #120656 quote
    Nicolas
    Keymaster
    Master

    Si le formatage ou la couleur de la ligne est formaté dans le  code, alors on ne peut pas le changer dans l’interface des paramètres de l’indicateur. Cela n’est pas un bug et ce comportement était déjà présent dans les versions précédentes.

Viewing 15 posts - 1 through 15 (of 48 total)
  • You must be logged in to reply to this topic.

Ajout de condition pour indicateur Divergence RSI


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
Summary

This topic contains 47 replies,
has 5 voices, and was last updated by JC_Bywan
2 years, 10 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 04/16/2019
Status: Active
Attachments: 9 files
Logo Logo
Loading...