Suppression des lignes horizontales

Viewing 9 posts - 1 through 9 (of 9 total)
  • Author
    Posts
  • #111342 quote
    finplus
    Participant
    Master

    Bonjour, dans l’indicateur suivant (que j’ai programmé) apparait une ligne horizontale lorsque la condition définie est remplie. Pour une question de lisibilité, j’aimerai que cette ligne disparaît. Comment faire SVP?

    merci d’avance.

    // KAMA50
    
    Period = 50
    FastPeriod = 2
    SlowPeriod = 30
     
    Fastest = 2 / (FastPeriod + 1)
    Slowest = 2 / (SlowPeriod + 1)
    if barindex < Period+1 then
    Kama=close
    else
    Num = abs(close-close[Period])
    Den = summation[Period](abs(close-close[1]))
    ER = Num / Den
    Alpha = SQUARE(ER *(Fastest - Slowest )+ Slowest)
    KAMA = (Alpha * Close) + ((1 -Alpha)* Kama[1])
    endif
    
    
    avg = kama
    
    
    // KAMA50
    
    Period1 = 200
    FastPeriod1 = 2
    SlowPeriod1 = 30
     
    Fastest1 = 2 / (FastPeriod1 + 1)
    Slowest1 = 2 / (SlowPeriod1 + 1)
    if barindex < Period1+1 then
    Kama200=close
    else
    Num1 = abs(close-close[Period1])
    Den1 = summation[Period1](abs(close-close[1]))
    ER1 = Num1 / Den1
    Alpha1 = SQUARE(ER1 *(Fastest1 - Slowest1 )+ Slowest1)
    KAMA200 = (Alpha1 * Close) + ((1 -Alpha1)* Kama200[1])
    endif
    
    
    avg1 = kama200
    
    
    
    
    if avg > avg1 then
    distanceup = abs(avg- avg1)
    endif
    
    if avg < avg1 then
    distancedown = abs(avg - avg1)
    endif
    
    a = average[50](distanceup)
    b = average[50](distancedown)
    
    bornehaute = avg1 +A
    bornebasse = avg1 - B
    
    actionzone = (kama < bornehaute) and (kama > bornebasse) and (kama200 < bornehaute) and (kama200 > bornebasse)
    
    bornehauteintervention = bornehaute and actionzone
    bornebasseintervention = bornebasse and actionzone
    
    
    
    
    return bornehauteintervention as "borne haute KAMA", bornebasseintervention as "borne basse KAMA"
    #111386 quote
    Nicolas
    Keymaster
    Master

    Désolé je ne vois pas de ligne horizontale, s’agit-il des variables “bornehauteintervention”  et “bornebasseintervention” ?

    #111451 quote
    finplus
    Participant
    Master

    Autant pour moi. Il s’agit de lignes verticales très fines qui se positionnent au début et à la fin de l’indicateur lorsque les conditions sont remplies.

    merci.

    #111497 quote
    Nicolas
    Keymaster
    Master

    Ces lignes verticales sont issues des variables  “bornehauteintervention”  et “bornebasseintervention”, car tu as codé des conditions booléennes (1= vrai ; 0 = faux). Mais ce que je ne comprends pas c’est pourquoi celle-ci retourne des valeurs différentes, c’est à dire celles de ‘borne haute’ et ‘borne basse’ qui sont justement contenues dans ces booléens…

    En fait, si je résume, tu as “mal” codé tes variables, mais en le faisant, tu as découvert un comportement ‘buggé’ de la restitution de leurs valeurs (mais qui apparemment te conviens ?) Je vais reporter ce phénomène, que je trouve vraiment étrange 🙄

    Pour répondre à la question sur l’invisibilité des lignes verticales, je vois 2 solutions possibles, soit jouer avec l’alpha (transparence) de la couleur des lignes, soit restituer les lignes avec des composants graphiques de type DRAWSEGMENT.

    #111503 quote
    Vonasi
    Moderator
    Master

    Essaye ça:

    // KAMA50
    
    Period = 50
    FastPeriod = 2
    SlowPeriod = 30
     
    Fastest = 2 / (FastPeriod + 1)
    Slowest = 2 / (SlowPeriod + 1)
    if barindex < Period+1 then
    Kama=close
    else
    Num = abs(close-close[Period])
    Den = summation[Period](abs(close-close[1]))
    ER = Num / Den
    Alpha = SQUARE(ER *(Fastest - Slowest )+ Slowest)
    KAMA = (Alpha * Close) + ((1 -Alpha)* Kama[1])
    endif
    
    
    avg = kama
    
    
    // KAMA50
    
    Period1 = 200
    FastPeriod1 = 2
    SlowPeriod1 = 30
     
    Fastest1 = 2 / (FastPeriod1 + 1)
    Slowest1 = 2 / (SlowPeriod1 + 1)
    if barindex < Period1+1 then
    Kama200=close
    else
    Num1 = abs(close-close[Period1])
    Den1 = summation[Period1](abs(close-close[1]))
    ER1 = Num1 / Den1
    Alpha1 = SQUARE(ER1 *(Fastest1 - Slowest1 )+ Slowest1)
    KAMA200 = (Alpha1 * Close) + ((1 -Alpha1)* Kama200[1])
    endif
    
    
    avg1 = kama200
    
    
    
    
    if avg > avg1 then
    distanceup = abs(avg- avg1)
    endif
    
    if avg < avg1 then
    distancedown = abs(avg - avg1)
    endif
    
    a = average[50](distanceup)
    b = average[50](distancedown)
    
    bornehaute = avg1 +A
    bornebasse = avg1 - B
    
    actionzone = (kama < bornehaute) and (kama > bornebasse) and (kama200 < bornehaute) and (kama200 > bornebasse)
    
    if actionzone then
    drawsegment(barindex[1],bornehaute[1],barindex,bornehaute)
    drawsegment(barindex[1],bornebasse[1],barindex,bornebasse)
    endif
    
    return
    
    #111511 quote
    robertogozzi
    Moderator
    Master

    Or this one:

    // KAMA50
     
    Period = 50
    FastPeriod = 2
    SlowPeriod = 30
     
    Fastest = 2 / (FastPeriod + 1)
    Slowest = 2 / (SlowPeriod + 1)
    if barindex < Period+1 then
    Kama=close
    else
    Num = abs(close-close[Period])
    Den = summation[Period](abs(close-close[1]))
    ER = Num / Den
    Alpha = SQUARE(ER *(Fastest - Slowest )+ Slowest)
    KAMA = (Alpha * Close) + ((1 -Alpha)* Kama[1])
    endif
     
     
    avg = kama
     
     
    // KAMA50
     
    Period1 = 200
    FastPeriod1 = 2
    SlowPeriod1 = 30
     
    Fastest1 = 2 / (FastPeriod1 + 1)
    Slowest1 = 2 / (SlowPeriod1 + 1)
    if barindex < Period1+1 then
    Kama200=close
    else
    Num1 = abs(close-close[Period1])
    Den1 = summation[Period1](abs(close-close[1]))
    ER1 = Num1 / Den1
    Alpha1 = SQUARE(ER1 *(Fastest1 - Slowest1 )+ Slowest1)
    KAMA200 = (Alpha1 * Close) + ((1 -Alpha1)* Kama200[1])
    endif
     
     
    avg1 = kama200
     
     
     
     
    if avg > avg1 then
    distanceup = abs(avg- avg1)
    endif
     
    if avg < avg1 then
    distancedown = abs(avg - avg1)
    endif
     
    a = average[50](distanceup)
    b = average[50](distancedown)
     
    bornehaute = avg1 +A
    bornebasse = avg1 - B
     
    actionzone = (kama < bornehaute) and (kama > bornebasse) and (kama200 < bornehaute) and (kama200 > bornebasse)
    IF actionzone = 0 then
    bornehaute = bornehaute[1]
    bornebasse = bornebasse[1]
    ENDIF
    
    //bornehauteintervention = bornehaute and actionzone
    //bornebasseintervention = bornebasse and actionzone
     
    return bornehaute AS "High",bornebasse AS "Low"//bornehauteintervention as "borne haute KAMA", bornebasseintervention as "borne basse KAMA"
    x-18.jpg x-18.jpg
    #111570 quote
    finplus
    Participant
    Master

    un grand merci.

    #111605 quote
    Vonasi
    Moderator
    Master

    Or this one:

    Only French in the French speaking forum please Roberto! 🙂

    robertogozzi thanked this post
    #111619 quote
    Nicolas
    Keymaster
    Master

    Pour information, le soucis de variable qui retourne sa vrai valeur dans une condition booléenne est connu et présent depuis toujours dans les versions inférieures à la v11 ! Bref, c’est chose du passé désormais grâce l’update version 11 de la plateforme.

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

Suppression des lignes horizontales


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
finplus @finplus Participant
Summary

This topic contains 8 replies,
has 4 voices, and was last updated by Nicolas
6 years, 4 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 10/27/2019
Status: Active
Attachments: 1 files
Logo Logo
Loading...