Détection du plus bas et du plus haut

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #187065 quote
    finplus
    Participant
    Master
    // Keltner Channel
     
    periodMA=20
    periodATR=10
    k=2
    
    a = close
     
    MA = ExponentialAverage[periodMA](close)
    // Upper Keltner Band
    UpperBand = MA + k*AverageTrueRange[periodATR](close)
    // Lower Keltner Band
    LowerBand = MA - k*AverageTrueRange[periodATR](close)
    
    rangeKeltner = upperband - lowerband
    
    
    //////////////////////////////// Trend Envelopppes
    
    timePeriod=14
    Deviation=0.1
     
    price=customclose
     
    dsma = WeightedAverage[timePeriod](price)
    
    valuesHigh = (1 + deviation / 100) * dsma
    valuesLow = (1 - deviation / 100) * dsma
     
    inputs=price
    
    if (inputs > valuesHigh)then
    trend = 1
    elsif (inputs < valuesLow) then
    trend = -1
    endif
    
    if (inputs > valuesHigh) then
    ecartup = inputs - lowerband
    elsif (inputs < valuesHigh) then
    ecartup = 0
    endif
    
    if (trend > 0) then
    alpha1 = 0
    if ( valuesLow < valuesLow[1]) then
    valuesLow = valuesLow[1]
    endif
    if trend[1]>0 then
    outputs0 = valuesLow
    outputs1 = valueshigh
    alpha0 = 255
    endif
    else
    alpha0=0
    if (valuesHigh > valuesHigh[1]) then
    valuesHigh = valuesHigh[1]
    endif
    if trend[1]<0 then
    outputs1 = valuesHigh
    outputs0 = valueslow
    alpha1 = 255
    endif
    endif
    
    if trend = 1 then
    posUp = ((outputs0 - lowerband) / rangekeltner)*100
    elsif trend = -1 then
    posUp  = 0
    endif
    
    if trend = -1 then
    posDn = ((outputs1 - upperband) / rangekeltner)*100
    elsif trend = 1 then
    posDn = 0
    endif
    
    
    ll = highest[50] (posdn > -5)
    
    return posUp as "posup", posDn as "posdn", ll as "ll"

    bonjour,

    je reviens sur une demande que j’ai vu à de multiples reprises sur ce forum aves les solutions apportées mais que je n’arrive pas à adapter à mon cas. J’ai joint mon indicateur construit à partir de la formule de Keltner et d’un autre indicateur dont j’avais demandé la traduction pour être adapté à IG.

    Je voudrais pouvoir identifier le plus bas des “posUp” et le plus haut des “PosDn” sur par exemple les 50 dernières périodes. J’ai tenté (pour identifier le plus haut du “posDn”) avec la formule “ll = highest[50] (posdn > -5)” en mettant posdn > -5 pour qu’il ne prenne pas la valeur “0”. Mais l’indicateur me ressort une donnée à 0.

    Quelqu’un peut il m’aider à solutionner ce problème?

    Merci et bon week-end.

    #187114 quote
    JC_Bywan
    Moderator
    Master

    Ok, si j’ai bien compris, tu veux le plus bas de l’un et le plus haut de l’autre sauf quand égal à zéro, c’est ça? Si oui, alors on peut remplacer toute la fin du code ci-dessus à partir de la ligne 66 par:

    if trend = 1 then
     posUp = ((outputs0 - lowerband) / rangekeltner)*100
     posUpfiltre=posUp
    elsif trend = -1 then
     posUp  = 0
     posUpfiltre=close*1000000
    endif
     
    if trend = -1 then
     posDn = ((outputs1 - upperband) / rangekeltner)*100
     posDnfiltre=posDn
    elsif trend = 1 then
     posDn = 0
     posDnfiltre=-close*1000000
    endif
     
    ll = highest[50](posDnfiltre)
    hh = lowest[50](posUpfiltre)
     
    return posUp as "posup", posDn as "posdn", ll as "ll", hh as "hh"

    NB: j’ai repris la notation ll que tu avais commencé, mais même si on nomme les variables comme on veut, juste une remarque en général sur le site on prend ll pour “lower low”, ce qui n’est pas le cas du type de calcul recherché ici puisque même si ça se passe vers le bas, on cherche en fait un plus haut d’une série basse (resp hh et higher high, alors que recherche de plus bas d’une série haute)

    #187171 quote
    finplus
    Participant
    Master

    C’est parfait. Merci pour votre aide. Et je prends bonne note de votre remarque.

    JC_Bywan thanked this post
    #187270 quote
    finplus
    Participant
    Master

    Bonsoir,

    je vous fait un retour sur l’indicateur : les paramètres LL et HH fonctionnent pour les paires cotées contre yen mais pas pour le reste. Il me semble qu’il s’agit d’un problème d’échelle, les LL et HH étant autour (et c’est un exemple) à 1,24 et – 1,24 pour la paire GBP/CHF alors que le PosUp et le PosDn dépassent les 350. Donc les LL et HH sont écrasés.

    Merci.

    #187288 quote
    JC_Bywan
    Moderator
    Master

    Oui mais ça ce serait dû à la formule de ces posDn et PosUp en amont, pas à la recherche de leurs plus haut et plus bas 0 exclu, ou est-ce qu’il y a un doute sur l’identification des plus haut et plus bas?

    #187387 quote
    finplus
    Participant
    Master

    Bonsoir, oui c’est possible. Je reverrai ce week-end les constituants de mon indicateur. Si je n’aboutis pas, je posterai de l’aide dans le forum dédié. Mais dans les faits, il n’est pas très compliqué.

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

Détection du plus bas et du plus haut


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
finplus @finplus Participant
Summary

This topic contains 5 replies,
has 2 voices, and was last updated by finplus
4 years, 1 month ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 01/30/2022
Status: Active
Attachments: No files
Logo Logo
Loading...