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
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
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= … ?
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
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.
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 ?
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
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.
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
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 ?
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é.
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.
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 ?
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) ?
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