Identification de l’écart le plus petit sur les 50 dernières périodes

Forums ProRealTime forum Français Support ProBuilder Identification de l’écart le plus petit sur les 50 dernières périodes

Viewing 15 posts - 1 through 15 (of 18 total)
  • #212573

    Bonsoir,

    je souhaiterai pouvoir identifier l’écart le plus petit entre les deux moyennes des 5 derniers retournements baissiers et haussiers sur les 50 dernières périodes. j’ai bien tenté une formule dans le code avec “Ecartmin” mais bon j’ai l’impression que le résultat laisse à désirer. Si quelqu’un peut voir où ça coince, merci pour l’aide apportée.

    #212588

    J’ai modifié la dernière ligne du code pour n’avoir que :

    et selon moi le résultat est correct.

    1 user thanked author for this post.
    #212616

    Merci pour ce retour. Je mets dans le graphe joint deux courbes = les traits jaunes verticaux représentent l’écart  abs(retBmoy retHmoy) et la ligne noire est censée représenter le plus bas des 50 derniers écart. Sauf que cette ligne noire augmente en même temps que l’écart. Ce qui n’est pas normal puisque la ligne noire est censée se caler sur le plus petit des écarts (donc si l’écart s’accroit, en toute logique, la ligne noire ne devrait pas bouger.

    #212720

    Bonjour,

    je me permets de remonter mon post.

    merci.

    #212722

    Ce qui n’est pas normal puisque la ligne noire est censée se caler sur le plus petit des écarts (donc si l’écart s’accroit, en toute logique, la ligne noire ne devrait pas bouger.

    Ce que tu décris comme “pas logique” serait le cas si tu avais voulu le plus petit des écarts “de tout l’historique”, or tu l’as toi-même décrit comme un minimum des 50 derniers, donc au contraire si ton écart ne fait qu’augmenter dès que l’ancien minimum passe en 51e position il sort de l’échantillon des 50 derniers et c’est le nouveau plus petit des 50 derniers qui prend la relève tout en étant plus haut que son prédécesseur, donc a priori rien d’anormal dans le graphe histogramme jaune & ligne noire.

    #212723

    D’accord. Donc j’ai mal formulé ma demande. Quelle serait alors la formule pour identifier le plus petit des écarts de tout l’historique ?

    Merci.

    #212727

    Pour commencer à mesurer un ecartmin de tout l’historique dès qu’il y a eu aussi bien 5 retH que 5 ret B (sinon on resterait sur ecartmin=0), on pourrait initialiser puis mettre à jour le minimum ainsi par exemple:

     

    #212728

    Merci. Et pour cadrer le calcul sur un historique (par exemple les 50 dernières périodes) comment faire ?

    #212729

    Et juste une question : comment interpréter la ligne 4 de ce code ? Que cela veut-il dire notamment  ” min(ecart,ecartmin)” ?

    Merci.

    #212730

    Pour faire sur 50, c’est comme tu avais déjà fait en ligne 72 de ton post #212573, c’était ok sans rien changer.

    Pour min(ecart,ecartmin) ça rend la variable ecartmin égale à la plus petite (min comme minimum) des 2 valeurs entre parenthèses, donc entre ecart et ecartmin (sa valeur juste avant cette ligne), autrement dit soit ecart est plus petit qu’ecartmin et ecartmin devient ecart, soit ecart est plus grand qu’ecartmin et ecartmin reste ecartmin

    https://www.prorealcode.com/documentation/min/

    1 user thanked author for this post.
    #212731

    Merci pour ces informations. Je vais tester ce soir.

    Bon après-midi.

    #212752

    /////////////////////////////////////KAMA 150

    Period = 150
    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

    /////////////////////////////////////////////////// Intervention Zone

    ///////////////////////////////////////////////////////////////////: Distance Cours KAMA

    xClose = (Open+High+Low+Close)/4
    Distance = (xclose- kama)

    moy = exponentialaverage[period]((distance))

    if Moy<Moy[1] and Moy[1]>Moy[2] and Moy[1]>0 then
    RetB5=RetB4
    RetB4=RetB3
    RetB3=RetB2
    RetB2=RetB1
    RetB1=Moy[1]
    RetBmoy=(RetB1+RetB2+RetB3+RetB4+RetB5)/5
    endif

    if Moy>Moy[1] and Moy[1]<Moy[2] and Moy[1]<0 then
    RetH5=RetH4
    RetH4=RetH3
    RetH3=RetH2
    RetH2=RetH1
    RetH1=Moy[1]
    RetHmoy=(RetH1+RetH2+RetH3+RetH4+RetH5)/5
    endif

    if abs(retBmoy-0) > abs(retHmoy-0) then
    limitUP = retBmoy
    elsif abs(retBmoy-0) < abs(retHmoy-0) then
    LimitUp = -RetHmoy
    endif

    if abs(RetHmoy-0) > abs(RetBmoy-0) then
    limitDn = RetHmoy
    elsif abs(RetHmoy-0) < abs(RetBmoy-0) then
    LimitDn = – RetBmoy
    endif

    if (xclose – kama > 0) then
    distplus = distance
    else
    distminus =-distance
    endif

    moyplus = average[150](distplus)*1.28
    moyminus = -average[150](distminus)*1.28

    Ecart = abs(retBmoy – retHmoy)

    if RetBmoy<>0 and RetHmoy<>0 then
    once ecartmin=ecart
    endif

    ecartmin = min(ecart,ecartmin)
    Ecartmini = lowest[50](ecartmin)

     

     

    Return distance as “Distance”, moy as “DM Moy”, RetBmoy as “Moyenne 5 derniers retournements baissiers”, RetHmoy as “Moyenne 5 derniers retournements haussiers”,limitUp as “LimitUp”, limitDn as “LimitDn”,moyplus as “moyenne plus”, moyminus as “moyenne minus”, ecart as “ecart”, ecartmini as “ecartmin”

     

    désolé, impossible d’intégrer le code correctement. Donc est-ce que la fin du code est correcte parce que graphiquement ce n’est pas ce que j’attendais. Merci.

    #212761

    Les 2 requêtes précédentes étaient: soit ecartmin sur l’historique (code fourni), soit ecartmin sur 50 périodes (ce que tu avais déjà fait).

    Là tu as créé une 3e chose différente, tu as fait un ecartminI sur 50 périodes de l’ecartmin sur l’historique, ça n’est plus la même chose que ce qui a été proposé à tes requêtes, donc normal que ça ne donne rien d’attendu. Soit la requête change à nouveau, soit tu dois choisir entre les 2 premières requêtes (ecartmin sur 50 périodes ou sur l’historique).

    1 user thanked author for this post.
    #212762

    Merci pour la réponse. Mais comment indique que cette ligne de code  :

    1
    2
    3
    4
    if RetBmoy<>0 and RetHmoy<>0 then
    once ecartmin=ecart
    endif
    ecartmin = min(ecart,ecartmin)

    doit être appliquée sur un historique défini (par exemple les 50 dernières périodes) ? Je ne comprends pas.

    #212766

    D’accord. Donc j’ai mal formulé ma demande. Quelle serait alors la formule pour identifier le plus petit des écarts de tout l’historique ?

    Merci.

    C’est cette question qui a débouché sur ce bout de 4 lignes de code en réponse à la requête modifiée de trouver une solution appliquée sur “tout” l’historique.

    Si tu veux sur 50, tu n’avais rien à changer à ton post de départ “Ecartmin = lowest[50](ecart)”, où tu croyais qu’il y avait une erreur de code mais que le code était bon c’était juste une erreur d’interprétation de la ligne noire sur histo jaune.

    Par extension si tu veux sur une autre valeur que 50, par exemple 100, tu gardes ta façon de faire avec lowest “Ecartmin = lowest[100](ecart)” mais pas besoin d’appliquer mon bout de code qui était fait non pas pour une portion d’historique mais uniquement pour tout l’historique.

Viewing 15 posts - 1 through 15 (of 18 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login