formulation EMA (moyenne mobile exponentielle)

Viewing 15 posts - 1 through 15 (of 35 total)
  • Author
    Posts
  • #95959 quote
    Shark
    Participant
    Senior

    Bonjour

    J’ai bien compris la méthode de calcul d’une moyenne mobile simple 10 périodes :

    MMS = ((close) + (close)[1] + (close)[2] + (close)[3] + … +(close)[9]) / 10

    pour l’instant ça va mais je recherche la formule mathématique qui s’applique à une moyenne mobile exponentielle 10 périodes par exemple.

    J’ai bien trouvé une formule dans l’aide Probuilder mais je ne sais pas l’interpréter (CF pièce jointe).

    merci pour les retours

    #95961 quote
    Nicolas
    Keymaster
    Master

    Une moyenne mobile exponentielle utilise une pondération des termes qui décroît exponentiellement. Le poids de chaque valeur participant à la moyenne (souvent désignée par le terme observation en statistiques) est d’un facteur plus grand que la valeur qui le précède dans la série, ce qui donne plus d’importance aux observations les plus récentes, sans toutefois jamais supprimer complètement l’effet des valeurs les plus anciennes. source = https://fr.wikipedia.org/wiki/Moyenne_mobile#Moyenne_mobile_exponentielle

    Version codée, cela donne :

    once customema=close
    EMALength = 10
    alpha = 2/(EMALength+1)
    if barindex>EMALength then 
     CustomEMA = alpha*Close + (1-alpha)*CustomEMA[1]
    endif
    
    return customEMA
    Shark thanked this post
    #95982 quote
    Shark
    Participant
    Senior

    Oula ça me parle pas vu mes connaissances en programmation,

    mais est il possible de déterminer la valeur x de clôture de la bougie en cours à partir de laquelle les EMA de la dernière et l’avant dernière bougies sont égales.

    Quels serait la formule dans ce cas, x= … ?

    #95987 quote
    Nicolas
    Keymaster
    Master

    Désolé mais je ne comprends pas la question, c’est pas lié au premier message du sujet ? Tu ne mélangerai pas avec un autre sujet que tu as ouvert ?

    je recherche la formule mathématique qui s’applique à une moyenne mobile exponentielle 10 périodes par exemple. J’ai bien trouvé une formule dans l’aide Probuilder mais je ne sais pas l’interpréter

    #95993 quote
    Shark
    Participant
    Senior

    Tout à fait et je t’en remercie par ailleurs.

    Comme je l’expliquais dans le topic précédent je voulais appliquer la même chose à une EMA d’où ma question sur la valeur de x mais si tu considères le sujet clos, pas de souci.

    #95997 quote
    Shark
    Participant
    Senior

    Je cherche à comprendre le code et que signifie la fonction ONCE

    Je vois une variable customea mais elle n’est pas utilisée ensuite ?

    A quoi sert le IF par rapport à la period et le barindex ?

    #96004 quote
    Shark
    Participant
    Senior

    Bon j’ai essayé ce code mais sans succès peut être que j’ai faux dans la valeur de x ou bine dans la programmation

    Je poste quand même

    defparam drawonlastbaronly=true
    
    a = 2/(period+1)
    
    if barindex>period then
    x = ((ExponentialAverage[1](close)))*((1/a)+1)
    endif
    
    DRAWTEXT("                                            ----------    #x#  EMA20",barindex,x,dialog,standard,13) coloured(0,0,204)
    
    return
    
    #96019 quote
    Nicolas
    Keymaster
    Master

    C’est sans doute très clair dans ta tête, mais pourrais-tu simplement écrire ce que tu cherches à faire avec une EMA afin que l’on sache le but de ce topic ? Je serai alors en mesure de coder la demande, merci.

    Shark thanked this post
    #96028 quote
    Shark
    Participant
    Senior

    Bonjour Nicolas

    Je vais essayer d’exprimer clairement mon idée de manière générale parce que je souhaiterais l’appliquer à plusieurs indicateurs.

    Ma question est la suivante, pour quelle valeur de x=(close), un indicateur, peu importe lequel, aurait la même valeur sur les bougies 1 et 0 ?

    Je vois ça un peu comme ça mais bon la programmation et moi …

    defparam drawonlastbaronly=true
    
    indicator1 = ....
    indicator2 = ....
    x = (close)
    
    // Pour quelle valeur de x indicator1 = indicator2
    
    c1 = (indicator1[1] = indicator2)
    
    pour quelle valeur de x cette condition est vrai et 
    
    DRAWTEXT("       ----------    #x#",barindex,x,dialog,standard,13) coloured(0,0,204)
    
    return

    Merci de ton attention en tout cas

    #96031 quote
    Shark
    Participant
    Senior

    Une idée comme ça je sais pas si c’est réalisable ?

    Imaginons le prix actuel à 1.5 par exemple, peux t on définir un range à + ou – 5 points et que l’indicateur teste toutes ces valeurs donc dans l’exemple, (1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2) pour trouver la valeur de x pour laquelle l’indicateur[1]=indicateur et retourner cette valeur ?

    #96034 quote
    Nicolas
    Keymaster
    Master

    ok je vois mieux l’idée, donc exemple avec une EMA 10 périodes:

    defparam drawonlastbaronly=true
    
    i1 = exponentialaverage[10]
    x = (close)
    
    // Pour quelle valeur de x indicator1 = indicator2
    
    c1 = (i1[1] = i1)
    
    //pour quelle valeur de x cette condition est vrai et 
    
    if c1 then 
     DRAWTEXT("       ----------    #x#",barindex,x,dialog,standard,13) coloured(0,0,204)
    endif
    
    return

    Non testé.

    Shark thanked this post
    #96038 quote
    Shark
    Participant
    Senior

    Si je comprends bien ton code, je vais avoir sur le graphe le x qui s’affiche quand la condition est réalisée ?

    Ce que je souhaiterais c’est anticiper et avoir la valeur qui apparait sur le graphe avant qu’elle n’arrive pour placer un OC juste au dessus ou en dessous ce prix.

    #96040 quote
    Shark
    Participant
    Senior

    Ton code fonctionne il affiche x à la clôture si la condition est réalisée mais n’anticipe pas comme je le souhaiterais.

    Est il possible en programmation de faire comme je le suggérait de tester plein de valeur de x pour voir celle qui réalise la condition selon un range à définir et retourner de manière anticipée cette valeur ?

    #96046 quote
    Nicolas
    Keymaster
    Master

    Donc tu veux savoir quelle valeur devrait avoir le prix dans le futur (x+1) pour que la EMA à x+1 est la même valeur que celle qui la précède (x-1) ?

    #96049 quote
    Shark
    Participant
    Senior

    Je voudrais connaitre le close de la bougie en cours pour que l’EMA de la bougie en cours soit égal à l’EMA de la précédente ([1]).

    defparam drawonlastbaronly=true
    //rge = averagetruerange[1]
    ope = (open)
    x= ope - 0.0002
    
    
    // Choix des indicateurs
    indicator1 = averagetruerange[10](close)
    indicator2 = averagetruerange[10](x)
    
    // Définition de la condition
    c1 = (indicator1[1] - indicator2)
    
    // Traitement de la boucle
    
    
    i = x
    Increase = (indicator1[1] - indicator2)=0
    while Increase[i] do
    i = i + 0.00001
    
    
    
    
    DRAWTEXT("                                            ----------    #x# ",barindex,x,dialog,standard,13) coloured(0,0,204)
    endif
    
    return
Viewing 15 posts - 1 through 15 (of 35 total)
  • You must be logged in to reply to this topic.

formulation EMA (moyenne mobile exponentielle)


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
Shark @shark Participant
Summary

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

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