CANAL RSI AVEC BREAKOUT

Viewing 15 posts - 1 through 15 (of 16 total)
  • Author
    Posts
  • #92314 quote
    Martin35
    Participant
    Average

    Bonjour à tous,

    Je souhaiterais une aide sur un indicateur qui avait été proposé par Louis Winthorp III, je l’ai modifié afin de faire un canal avec en son centre la WMA, donc 3 niveaux, 70% RSI, 50% RSI et 30% RSI.

    Voici le code (et en fichier joint):

    //////////////////////////////////////////////////
    //_RSI_LEVELS_

    ONCE RSI70 = UNDEFINED
    ONCE RSI30 = UNDEFINED

    RSIORI = RSI[14](CLOSE)
    UPORI = MAX(0,CLOSE-CLOSE[1])
    DOWNORI = MAX(0,CLOSE[1]-CLOSE)
    UPMAORI = WILDERAVERAGE[14](UPORI)
    DOWNMAORI = WILDERAVERAGE[14](DOWNORI)

    RSREV = (100/((-1*70)+100)) – 1

    IF 70 < RSIORI THEN
    UPMAREV = UPMAORI * (1-(1/14))
    DOWNMAREV = UPMAREV / RSREV
    DOWNREV = (DOWNMAREV-(DOWNMAORI*(1-(1/14))))/(1/14)
    RSI70 = CLOSE – DOWNREV
    ELSIF 70 > RSIORI THEN
    DOWNMAREV = DOWNMAORI * (1-(1/14))
    UPMAREV = DOWNMAREV * RSREV
    UPREV = (UPMAREV-(UPMAORI*(1-(1/14))))/(1/14)
    RSI70 = CLOSE + UPREV
    ENDIF

    RSI50 = WILDERAVERAGE[14](CLOSE)

    RSIORI2 = RSI[14](CLOSE)
    UPORI2 = MAX(0,CLOSE-CLOSE[1])
    DOWNORI2 = MAX(0,CLOSE[1]-CLOSE)
    UPMAORI2 = WILDERAVERAGE[14](UPORI2)
    DOWNMAORI2 = WILDERAVERAGE[14](DOWNORI2)

    RSREV2 = (100/((-1*30)+100)) – 1

    IF 30 < RSIORI2 THEN
    UPMAREV2 = UPMAORI2 * (1-(1/14))
    DOWNMAREV2 = UPMAREV2 / RSREV2
    DOWNREV2 = (DOWNMAREV2-(DOWNMAORI2*(1-(1/14))))/(1/14)
    RSI30 = CLOSE – DOWNREV2
    ELSIF 30 > RSIORI2 THEN
    DOWNMAREV2 = DOWNMAORI2 * (1-(1/14))
    UPMAREV2 = DOWNMAREV2 * RSREV2
    UPREV2 = (UPMAREV2-(UPMAORI2*(1-(1/14))))/(1/14)
    RSI30 = CLOSE + UPREV2
    ENDIF

    RETURN RSI70 COLOURED (0,0,0) STYLE (LINE,3) AS “_DAILY_RSI_70%_”, RSI50 COLOURED (153,0,153) STYLE (LINE,3) AS “_DAILY_RSI_50%_”, RSI30 COLOURED (0,0,0) STYLE (LINE,3) AS “_DAILY_RSI_30%_”

     

    Ce que j’aimerais faire c’est tracer un niveau à chaque contact du prix >= aux niveaux 30% et 70% du canal RSI, ces niveaux resteront durant une période N, 20 par exemple, avant que ce niveau disparaisse et soit en attente du prochain tracage de niveau.

    Je mets une capture d’écran pour illustrer tout ça. 🙂

     

    Merci beaucoup.

    #92329 quote
    swapping
    Participant
    Master

    Je pense que se sera plus visible en employant le bouton adéquat “Insert PRT code

    //////////////////////////////////////////////////
    //_RSI_LEVELS_
    
    ONCE RSI70 = UNDEFINED
    ONCE RSI30 = UNDEFINED
    
    RSIORI = RSI[14](CLOSE)
    UPORI = MAX(0,CLOSE-CLOSE[1])
    DOWNORI = MAX(0,CLOSE[1]-CLOSE)
    UPMAORI = WILDERAVERAGE[14](UPORI)
    DOWNMAORI = WILDERAVERAGE[14](DOWNORI)
    
    RSREV = (100/((-1*70)+100)) – 1
    
    IF 70 < RSIORI THEN
    UPMAREV = UPMAORI * (1-(1/14))
    DOWNMAREV = UPMAREV / RSREV
    DOWNREV = (DOWNMAREV-(DOWNMAORI*(1-(1/14))))/(1/14)
    RSI70 = CLOSE – DOWNREV
    ELSIF 70 > RSIORI THEN
    DOWNMAREV = DOWNMAORI * (1-(1/14))
    UPMAREV = DOWNMAREV * RSREV
    UPREV = (UPMAREV-(UPMAORI*(1-(1/14))))/(1/14)
    RSI70 = CLOSE + UPREV
    ENDIF
    
    RSI50 = WILDERAVERAGE[14](CLOSE)
    
    RSIORI2 = RSI[14](CLOSE)
    UPORI2 = MAX(0,CLOSE-CLOSE[1])
    DOWNORI2 = MAX(0,CLOSE[1]-CLOSE)
    UPMAORI2 = WILDERAVERAGE[14](UPORI2)
    DOWNMAORI2 = WILDERAVERAGE[14](DOWNORI2)
    
    RSREV2 = (100/((-1*30)+100)) – 1
    
    IF 30 < RSIORI2 THEN
    UPMAREV2 = UPMAORI2 * (1-(1/14))
    DOWNMAREV2 = UPMAREV2 / RSREV2
    DOWNREV2 = (DOWNMAREV2-(DOWNMAORI2*(1-(1/14))))/(1/14)
    RSI30 = CLOSE – DOWNREV2
    ELSIF 30 > RSIORI2 THEN
    DOWNMAREV2 = DOWNMAORI2 * (1-(1/14))
    UPMAREV2 = DOWNMAREV2 * RSREV2
    UPREV2 = (UPMAREV2-(UPMAORI2*(1-(1/14))))/(1/14)
    RSI30 = CLOSE + UPREV2
    ENDIF
    
    RETURN RSI70 COLOURED (0,0,0) STYLE (LINE,3) AS “_DAILY_RSI_70%_”, RSI50 COLOURED (153,0,153) STYLE (LINE,3) AS “_DAILY_RSI_50%_”, RSI30 COLOURED (0,0,0) STYLE (LINE,3) AS “_DAILY_RSI_30%_”
    Martin35 and Nicolas thanked this post
    #92330 quote
    Martin35
    Participant
    Average

    Oui merci ! 🙂

    J’y penserai à l’avenir.

    #92334 quote
    Nicolas
    Keymaster
    Master

    Voilà ce que j’ai codé selon la description:

    //////////////////////////////////////////////////
    //_RSI_LEVELS_
    
    ONCE RSI70 = UNDEFINED
    ONCE RSI30 = UNDEFINED
    
    RSIORI = RSI[14](CLOSE)
    UPORI = MAX(0,CLOSE-CLOSE[1])
    DOWNORI = MAX(0,CLOSE[1]-CLOSE)
    UPMAORI = WILDERAVERAGE[14](UPORI)
    DOWNMAORI = WILDERAVERAGE[14](DOWNORI)
    
    RSREV = (100/((-1*70)+100)) - 1
    
    IF 70 < RSIORI THEN
    UPMAREV = UPMAORI * (1-(1/14))
    DOWNMAREV = UPMAREV / RSREV
    DOWNREV = (DOWNMAREV-(DOWNMAORI*(1-(1/14))))/(1/14)
    RSI70 = CLOSE - DOWNREV
    ELSIF 70 > RSIORI THEN
    DOWNMAREV = DOWNMAORI * (1-(1/14))
    UPMAREV = DOWNMAREV * RSREV
    UPREV = (UPMAREV-(UPMAORI*(1-(1/14))))/(1/14)
    RSI70 = CLOSE + UPREV
    ENDIF
    
    RSI50 = WILDERAVERAGE[14](CLOSE)
    
    RSIORI2 = RSI[14](CLOSE)
    UPORI2 = MAX(0,CLOSE-CLOSE[1])
    DOWNORI2 = MAX(0,CLOSE[1]-CLOSE)
    UPMAORI2 = WILDERAVERAGE[14](UPORI2)
    DOWNMAORI2 = WILDERAVERAGE[14](DOWNORI2)
    
    RSREV2 = (100/((-1*30)+100)) - 1
    
    IF 30 < RSIORI2 THEN
    UPMAREV2 = UPMAORI2 * (1-(1/14))
    DOWNMAREV2 = UPMAREV2 / RSREV2
    DOWNREV2 = (DOWNMAREV2-(DOWNMAORI2*(1-(1/14))))/(1/14)
    RSI30 = CLOSE - DOWNREV2
    ELSIF 30 > RSIORI2 THEN
    DOWNMAREV2 = DOWNMAORI2 * (1-(1/14))
    UPMAREV2 = DOWNMAREV2 * RSREV2
    UPREV2 = (UPMAREV2-(UPMAORI2*(1-(1/14))))/(1/14)
    RSI30 = CLOSE + UPREV2
    ENDIF
    
    //low break
    levelperiod=20
    if low crosses under RSI30 then 
    lowstartbar=barindex
    lowstartlevel=rsi30
    endif
    if lowstartbar>0 and barindex-lowstartbar<=levelperiod then 
    drawsegment(lowstartbar,lowstartlevel,barindex,lowstartlevel) coloured(255,0,0)
    drawbarchart(lowstartlevel,lowstartlevel,lowstartlevel,rsi30) coloured(160,160,160,150)
    endif
    if barindex-lowstartbar=levelperiod then 
    drawsegment(barindex,lowstartlevel,barindex,RSI30) coloured(255,0,0)
    endif
    //high break
    if high crosses over RSI70 then
    highstartbar=barindex
    highstartlevel=rsi70
    endif
    if highstartbar>0 and barindex-highstartbar<=levelperiod then
    drawsegment(highstartbar,highstartlevel,barindex,highstartlevel) coloured(0,255,0)
    drawbarchart(highstartlevel,highstartlevel,highstartlevel,rsi70) coloured(160,160,160,200)
    endif
    if barindex-highstartbar=levelperiod then
    drawsegment(barindex,highstartlevel,barindex,RSI70) coloured(0,255,0)
    endif
    
    RETURN RSI70 COLOURED (0,0,0) STYLE (LINE,3) AS "_DAILY_RSI_70%_", RSI50 COLOURED (153,0,153) STYLE (LINE,3) AS "_DAILY_RSI_50%_", RSI30 COLOURED (0,0,0) STYLE (LINE,3) AS "_DAILY_RSI_30%_"

    Ce serait très sympa de nous expliquer comment tu utilises ou compte utiliser cet indicateur ? J’ai bien compris qu’il fallait détecter le retour à la moyenne, mais si tu pouvais nous en dire plus 😉 Merci. (voir images).

    Martin35 thanked this post
    #92337 quote
    Nicolas
    Keymaster
    Master

    C’est la variable “levelperiod=20″ à la ligne 50 qui limite le traçage de la zone à X chandeliers.

    Martin35 thanked this post
    #92347 quote
    Martin35
    Participant
    Average

    Merci Nicolas, toujours rapide dans lӎlaboration des codes.

    Je trouve que ce code est pratique pour déterminer des niveaux de prix sensibles. Cela crée de bons supports et résistances, donc très basiquement en dessous de cette zone on vend, au-dessus on achète.

    Une autre idée plus simple encore :

    Tracer un niveau dés que le RSI30 (ou RSI70) est touché,  quand le prix devient >= à la borne opposée, on affiche le nouveau niveau.

    Si c’est possible de tracer ces niveaux sans drawline mais en dur si cela est faisable.

    Merci ^^

    #92350 quote
    Nicolas
    Keymaster
    Master

    Tracer un niveau dés que le RSI30 (ou RSI70) est touché,  quand le prix devient >= à la borne opposée, on affiche le nouveau niveau.

    Donc c’est la même chose mais avec une ligne continue finalement ? Dommage car j’ai codé telle que sur ta première image ! Bref. 😥

    Martin35 thanked this post
    #92352 quote
    Martin35
    Participant
    Average

    Ah non non c’est super ton code, (avec les niveaux en dur) c’est exactement ce que je recherchais, donc c’est parfait. C’est juste des possibilités de niveaux pertinents, on pourrait aussi, au lieu de tracer des niveaux tous les N périodes, changer le tracé du niveau dés que le prix, une fois touché la borne basse, par exemple, touche la WMA14 du mileu, à partir de là au prochain contact borne haute ou basse, il y aura un nouveau niveau.

    #92353 quote
    Martin35
    Participant
    Average

    Je pense que cette troisième est plus intéressante pour fixer des niveaux de prix RSI.

    #92358 quote
    Martin35
    Participant
    Average

    Sur le même principe de tracés de niveaux avec un canal de Donchian, voire capture.

    1/ – Tracé d’un nouveau plus haut lors d’un breakout haussier, si le prix retouche la WMA14 (qu’on pourra remplacer par un autre indicateur de tendance au choix, etc…), un nouveau plus haut peut être établis, ou un nouveau plus bas.

    2/ – Tracé d’un nouveau plus bas lors d’un breakout baissier, si le prix retouche la WMA14 (qu’on pourra remplacer par un autre indicateur de tendance au choix, etc…), un nouveau plus bas peut être établis, ou un nouveau plus haut.

    Je n’ai pas souvenir d’avoir déjà vu des plus hauts tracés ainsi, ça ressemble un peu au halftrend.

    Voilà ça sera tout ! 😀

    Il faudrait penser à mettre des possibilités de dons ou autre financement afin de remercier le staff de Prorealcode.

    #92362 quote
    swapping
    Participant
    Master

    hello martin35 il me semble que j’ai déjà vue un code à peu près similaire à ta dernière demande ou qui s’en rapproche pas mal !

    #92363 quote
    Martin35
    Participant
    Average

    Salut Swapping, oui en effet, mais la différence étant l’établissement de nouveaux plus hauts ou plus bas avec le filtre de la moyenne mobile.

    #92660 quote
    swapping
    Participant
    Master

    yo martin, ce codage doit avoir du potentiel car l’idée de départ est bonne bref j’ai pris et je vais le triturer à ma sauce 😉

    cordialement, swapping

    #92663 quote
    Martin35
    Participant
    Average

    Salut Swapping, disons que c’est le même principe qu’avec le Canal de Donchian, Bollinger, et autre stochastique, etc.

    La petite différence est que la WMA 14/EMA 27 DAILY sont des moyennes mobiles très suivies étant les 50% du RSI classique 14 périodes, les niveaux tracés lors de ces breakout sont donc pertinents, et ils sont rares. Contrairement aux breakout d’un Donchian 20 périodes daily avec cassures régulières, mais tout aussi efficace. Enfin rien de neuf, mais ça marche bien.

    Sinon si tu arriverais à coder mes idées expliquées plus haut ça serait cool. 😀

    Surtout celui avec le canal de Donchian, mais c’est le même principe qu’avec le Canal RSI.

    Merci !

    #94918 quote
    Ptolemy
    Participant
    Junior

    “I would like help on an indicator that was proposed by Louis Winthorp III”

    I believe credit for this excellent code should go to gabri who presented it in April 2017.

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

CANAL RSI AVEC BREAKOUT


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
Martin35 @martin35 Participant
Summary

This topic contains 15 replies,
has 4 voices, and was last updated by Martin35
6 years, 10 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 02/26/2019
Status: Active
Attachments: 7 files
Logo Logo
Loading...