Ajout de condition pour indicateur Divergence RSI

Viewing 3 posts - 46 through 48 (of 48 total)
  • Author
    Posts
  • #212082 quote
    cerealkilleur
    Participant
    New

    Effectivement, en réactivant “and (lastobbar-firstobbar)>=minimalObBars” ça m’enlève pas mal d’erreurs. merci

    Par contre c’est la seule fonction qui était désactivée dans le code.

    J’ai beau farfouiller, je ne trouve pas d’où provient le reste des erreurs en copie d’écran.

    Je souhaiterais également que les divergences soit affichées pendant 5 clôtures (paramètre modifiable) après validation de la cassure du niveau “noLowerThan” pour une divergence baissière et le niveau “noHigherThan” pour une divergence haussière.

    Je joint le code du screener

    //PRC_AnotherRSIdivergences | indicator
    //25.02.2019
    //Nicolas @ www.prorealcode.com
    //Sharing ProRealTime knowledge
    
    // --- paramètres modifiables
    RSIp=14 //RSI periode
    obLevel=70 //Niveau surachat
    osLevel=30 //Niveau survente
    minimalObBars=1 //Barres minimales zone survente ou surachat
    minBarBetween = 6 //Nbr mini de barres divergence
    maxBarBetween = 26 //Nbr maxi de barres divergence
    noLowerThan = 59 //Bruit div baissière
    noHigherThan = 41 //Bruit div haussière
    // --- end of settings
    
    once maxrsi1 = 0
    once minrsi1 = 100
    
    irsi = rsi[RSIp]
    ob = irsi>=obLevel
    os = irsi<=osLevel
    
    divbuy = 0
    divsell = 0
    
    //--Initialisation de recherche de divergence baissière--
    if irsi < noLowerThan and BearDiv = 0 then
    maxrsi1 = 0
    endif
    
    //Identification conditions de divergence baissière
    if ob then
    if ob[1]=0 then
    firstobbar = barindex-1
    endif
    //recherche 1er sommet
    if irsi > maxrsi1 then
    maxrsi1=irsi
    maxprice1=high
    maxclose1=close
    maxrsibar1=barindex
    minrsi12=maxrsi1
    maxrsi2=0
    endif
    if maxrsi1>0 then
    lastobbar = barindex
    endif
    Endif
    //recherche du creux
    if irsi < maxrsi1 and BearDiv = 0 then
    minrsi12=min(minrsi12,irsi)
    If minrsi12<>minrsi12[1] then
    minprice12=low
    minclose12=close
    minrsibar12=barindex
    maxrsi2=minrsi12
    endif
    endif
    //recheche 2ème sommet
    if irsi > minrsi12 then
    maxrsi2=max(maxrsi2,irsi)
    If maxrsi2<>maxrsi2[1] then
    maxprice2=high
    maxclose2=close
    maxrsibar2=barindex
    endif
    endif
    
    //Validation des conditions divergence baissière
    If maxrsi1 > 0 then
    
    barcount=maxrsibar2-maxrsibar1
    
    BearDiv = (maxprice2>maxprice1 or maxclose2>maxclose1) and maxrsi2<maxrsi1 and barcount>=minbarbetween and barcount<=maxbarbetween and maxrsi2>minrsi12 and (lastobbar-firstobbar)>=minimalObBars
    
    if BearDiv and irsi < maxrsi2 then
    
    RSISellLevel=minrsi12
    if irsi<minrsi12 then
    
    divsell = 20 // Divergence baissière activée
    maxrsi1 = 0 // Reset, les div ne se suivent pas
    BearDiv = 0
    endif
    if (Barindex-maxrsibar2)>12 then //Invalidation divergence si cassure du bruit > 12 bougies
    maxrsi1 = 0 // Reset, les div ne se suivent pas
    BearDiv = 0
    endif
    endif
    Endif
    
    //--Initialisation de recherche de divergence haussière--
    if irsi > noHigherThan and BullDiv = 0 then
    minrsi1 = 100
    endif
    
    //Identification conditions de divergence haussière
    if os then
    if os[1]=0 then
    firstosbar = barindex-1
    endif
    //recherche 1er creux
    if irsi < minrsi1 then
    minrsi1=irsi
    minprice1=low
    minclose1=close
    minrsibar1=barindex
    maxrsi12=minrsi1
    minrsi2=100
    endif
    if minrsi1<100 then
    lastosbar = barindex
    endif
    Endif
    //recherche du sommet
    if irsi > minrsi1 and BullDiv = 0 then
    maxrsi12=max(maxrsi12,irsi)
    If maxrsi12<>maxrsi12[1] then
    maxprice12=high
    maxclose12=close
    maxrsibar12=barindex
    minrsi2=maxrsi12
    endif
    endif
    //recherche 2ème creux
    if irsi < maxrsi12 then
    minrsi2=min(minrsi2,irsi)
    If minrsi2<>minrsi2[1] then
    minprice2=low
    minclose2=close
    minrsibar2=barindex
    endif
    endif
    
    //Validation des conditions divergence haussière
    If minrsi1 < 100 then
    
    barcount=minrsibar2-minrsibar1
    
    BullDiv = (minprice2<minprice1 or minclose2<minclose1) and minrsi2>minrsi1 and barcount>=minbarbetween and barcount<=maxbarbetween and minrsi2 < maxrsi12 and (lastosbar-firstosbar)>=minimalObBars
    
    if BullDiv and irsi > minrsi2 then
    
    RSIBuyLevel=maxrsi12
    if irsi > maxrsi12 then
    
    divbuy = 20 // Divergence baissière activée
    minrsi1 = 100 //Reset, les div ne se suivent pas
    BullDiv = 0
    endif
    if (Barindex - minrsibar2)>12 then //Invalidation divergence si cassure du bruit > 12 bougies
    minrsi1 = 100 //Reset, les div ne se suivent pas
    BullDiv = 0
    endif
    endif
    Endif
    
    screener[divbuy or divsell](max(divbuy,divsell))

     

    à l’heure actuelle

    Capture-1.png Capture-1.png
    #212084 quote
    cerealkilleur
    Participant
    New

    Je ne comprends pas ce que tu veux dire, les valeurs divbuy et divsell sont à 20

    #212240 quote
    JC_Bywan
    Moderator
    Master

    Effectivement, en réactivant “and (lastobbar-firstobbar)>=minimalObBars” ça m’enlève pas mal d’erreurs. merci Par contre c’est la seule fonction qui était désactivée dans le code. J’ai beau farfouiller, je ne trouve pas d’où provient le reste des erreurs en copie d’écran.

    Oui, au lieu de mettre // devant la ligne10 parce que minimalObBars ne servait pas, tu peux réactiver ce morceau (en supposant qu’il fasse qq chose que tu attends du code, pas juste comme ça sans savoir si l’effet de cet ajoût est désiré ou pas) et comme minimalObBars devient utilisé, l’erreur s’en va.

    Mais la suggestion de base de chercher ce qui est défini une fois sans jouer de rôle dans le code reste valable pour les autres erreurs. Donc si on prend la suivante, c’est minprice12, on cherche, on voit que c’est en ligne 54 seulement et pas utilisé ailleurs, donc:

    • soit on le vire avec // en début de ligne pour que l’erreur s’en aille,
    • soit on lui trouve un usage comme tu as fait avec minimalObBars en rajoutant le code qui l’utilise
    • soit on se rend compte que c’est une faute de frappe (par ex minprice1 ou minprice2… a priori ici non, mais c’est juste pour décrire la démarche de façon plus générale) auquel cas au lieu de mettre // devant la ligne 54, l’alternative aurait été de corriger minprice12 pour avoir la bonne orthographe de la variable.

    idem minclose12 en ligne 55, etc…

Viewing 3 posts - 46 through 48 (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...