Mesurer l’Ecart entre la Moyenne clôtures à la Hausse et celle à la baisse

Viewing 11 posts - 1 through 11 (of 11 total)
  • Author
    Posts
  • #196798 quote
    christophe11560
    Participant
    Senior

    Bonjour à tous,
    Je n’arrive pas à codifier cet indicateur. Merci de bien vouloir m’aider.

    Je souhaiterais mesurer l’écart entre:
    – la valeur absolue de la moyenne des clôtures à la baisse avec la valeur absolue de la moyenne des clôtures à la hausse précédentes ou inversement
    – la valeur absolue de la moyenne des clôtures à la hausse avec la valeur absolue de la moyenne des clôtures à la baisse précédentes
    La mesure se fait entre une baisse et une hausse successive comme le dessin ou inversement entre une hausse et une baisse successive.
    Je vous joins en PJ une image de ce que j’entend par moyenne des clôtures à la hausse ou la baisse.

    Si l’on note:
    MCB = moyenne des clôtures à la baisse
    MCH = moyenne des clôtures à la hausse

    je souhaiterais pouvoir calculer les Ecarts suivant:
    Up et Dn pour identifier l’ordre des enchaînements.

    * ECARTup=100*abs(MCH-MCB)/MCB dans le cas où une baisse précède une hausse
    * ECARTdn=100*abs(MCH-MCB)/MCB dans le cas où une hausse précède une baisse

    merci à vous

    IMG_1449-002.jpg IMG_1449-002.jpg
    #196802 quote
    Nicolas
    Keymaster
    Master

    Sauf erreur de ma part, tu as écrit la même formule pour les deux types d’écart.

    Selon moi, ça va ressembler beaucoup au RSI.

    #196810 quote
    christophe11560
    Participant
    Senior

    Je ne pense pas.

    On doit faire la moyenne d’une avancée puis celle d’un recul ou inversement successif et les comparer.
    C’est l’écriture de cette avancée et de ce recul que l’on doit comparer qui me pose problème.

    L’indicateur se termine comme suit:
    if EcartUp<10% then
    Indicateur =1
    si EcartDn<10% then
    Indicateur =-1
    else
    Indicateur=0
    endif

    #196811 quote
    christophe11560
    Participant
    Senior

    Nicolas,

    Mon code de départ est celui-là mais ne fonctionne pas. J’ai le sentiment que dans les 2 formules EcartUp et Ecartdn, les données A et B ne sont pas reconnu comme étant une avancée complète et un recul complet.

    countup=0
    priceup=0
    
    countdn=0
    pricedn=0
    
    ECARTmaxPercent=5
    
    if close-close[1] >0 then // avancée
    countup=countup[1]+1 //nb bougie
    priceup=priceup[1]+abs(close-close[1]) // gain cumulée sur une avancée de cloture à la hausse
    a=a[1]+priceup/countup // moyenne des clôture de l'avancée
    b=0
    else                       //recul        
    countdn=countdn[1]+1//nb bougie
    pricedn=pricedn[1]+abs(close-close[1])// perte cumulée sur un recul de cloture à la baisse
    a=0
    b=a[1]+pricedn/countdn // moyenne des clôture du recul
    endif
    
    ECARTup=100*abs(A-B[1])/B[1] // (avancée[0] - recul précedent[1] ) / recul précedent[1]
    ECARTdn=100*abs(B-A[1])/A[1] // (recul[0] - avancée précédente[1]) / avancée précédente[1]
    
    if ECARTup<ECARTmaxPercent then
    indicateur=1
    r=0
    g=255
    B=0
    elsif ECARTdn<ECARTmaxPercent then
    indicateur=1
    r=255
    g=0
    B=0
    else
    indicateur=0
    endif
    
    return indicateur coloured(r,g,b) style (histogram,1) 
    #196813 quote
    christophe11560
    Participant
    Senior

    Autant pour moi lire ce code qui ne donne pas les résultats demandés
    ANNULE ET REMPLACE LE PRECEDENT:

    countup=0
    priceup=0
    
    countdn=0
    pricedn=0
    
    ECARTmaxPercent=5
    
    if close-close[1] >0 then // avancée
    countup=countup[1]+1 //nb bougie
    priceup=priceup[1]+abs(close-close[1]) // gain cumulée sur une avancée de cloture à la hausse
    a=+priceup/countup // moyenne des clôture de l'avancée
    b=0
    else                       //recul        
    countdn=countdn[1]+1//nb bougie
    pricedn=pricedn[1]+abs(close-close[1])// perte cumulée sur un recul de cloture à la baisse
    a=0
    b=pricedn/countdn // moyenne des clôture du recul
    endif
    
    ECARTup=100*abs(A-B[1])/B[1] // (avancée[0] - recul précedent[1] ) / recul précedent[1]
    ECARTdn=100*abs(B-A[1])/A[1] // (recul[0] - avancée précédente[1]) / avancée précédente[1]
    
    if ECARTup<ECARTmaxPercent then
    indicateur=1
    r=0
    g=255
    B=0
    elsif ECARTdn<ECARTmaxPercent then
    indicateur=1
    r=255
    g=0
    B=0
    else
    indicateur=0
    endif
    
    return indicateur coloured(r,g,b) style (histogram,1) 
    #196875 quote
    Nicolas
    Keymaster
    Master

    La moyenne s’effectue sur une période non ? Par exemple sur les 20 dernières bougies on observe la moyenne des avancées et des reculs. Hors tu remets à zéro tes compteurs et la somme des variations à chaque bougie, difficile de comprendre 🙂

    #196879 quote
    christophe11560
    Participant
    Senior

    Justement, non ce n’est pas ce que je souhaite. La moyenne ne doit pas s’effectuer sur une période fixe, mais comme suit:
    Dans mon code je comptabilise,
    Lorsque close>close[1] :
    – le nombre de clôture à la hausse consécutive
    – l’écart de prix entre chaque clôture consécutive
    – la moyenne étant la somme de ces écarts / nb de clôtures consécutives

    #196880 quote
    christophe11560
    Participant
    Senior

    Lorsque close est < à close[1]: Même principe mais avec des clôture consécutive plus basse

    #196882 quote
    Nicolas
    Keymaster
    Master

    Ok mais sauf erreur de ma part, countup et countdn seront toujours égal à 1 avec ton code.

    Avec ta nouvelle description, je vais tenter quelque chose.

    #196883 quote
    Nicolas
    Keymaster
    Master

    Voilà pour la variation haussière:

    /*Justement, non ce n’est pas ce que je souhaite. La moyenne ne doit pas s’effectuer sur une période fixe, mais comme suit:
    Dans mon code je comptabilise,
    Lorsque close>close[1] :
    - le nombre de clôture à la hausse consécutive
    - l’écart de prix entre chaque clôture consécutive
    - la moyenne étant la somme de ces écarts / nb de clôtures consécutives
    */
    
    vert = close>close[1]
    
    if vert then 
    countv=countv+1
    sumv=sumv+abs(close-close[1])
    endif 
    
    if not vert then 
    countv=0
    sumv=0
    endif
    
    avgv=sumv/countv
    
    return avgv
    christophe11560 thanked this post
    #196928 quote
    christophe11560
    Participant
    Senior

    merci c’est bon pour moi

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

Mesurer l’Ecart entre la Moyenne clôtures à la Hausse et celle à la baisse


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
Summary

This topic contains 10 replies,
has 2 voices, and was last updated by christophe11560
3 years, 8 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 07/05/2022
Status: Active
Attachments: 1 files
Logo Logo
Loading...