Mme moyenne mobile exponentielle

Contenu du snippet

Moyenne Mobile Exponentielle MME
La moyenne mobile pondérée considère que la baisse du poids
de la cote est linéaire au fil des jours alors que certains estiment
qu'elle est plutôt exponentielle. La moyenne mobile exponentielle
va donc répartir le poids de la cote selon une construction différente
sur l'ensemble des jours pris en compte pour le calcul.
Pour y arriver, nous allons effectuer un calcul simple. Il nous faut déterminer
2 variables : alpha et bêta.
Dans le cas de notre moyenne de 5 jours :
Alpha = 2 / (durée + 1) Soit 2 / (5 jours + 1) = 0.33
Bêta = 1 - Alpha Soit 1 - 0.33 = 0.67.
Dans notre exemple nous prenons les 6 dernières journées de cotation :
N° Date Cours Bêta Alpha MME
1 16.08.99 1525
2 17.08.99 1460 ( 1525 * 0.67 ) + ( 1460 * 0.33 ) = 1503,55
3 18.08 99 1256 ( 1504 * 0.67 ) + ( 1256 * 0.33 ) = 1422,16
4 19.08.99 1246 ( 1422 * 0.67 ) + ( 1246 * 0.33 ) = 1363,92
5 20.08.99 1196 ( 1364 * 0.67 ) + ( 1196 * 0.33 ) = 1308,56
6 23.08.99 1254 ( 1309 * 0.67 ) + ( 1254 * 0.33 ) = 1290,85
Comme pour toutes les moyennes mobiles, le résultat obtenu se
place, sous la forme d'un tiret, à la verticale de la dernière cote du
jour sur le graphique linéaire de la cote.
Cette moyenne mobile exponentielle ne deviendra utilisable qu'après
avoir conduit le calcul jusqu'au nombre de jours de la période considérée
(ici 5 jours soit 1291).
Ce code source ne délivre que le résultat final, les opérations intermédiaires
sont visualisables en enlevant l'apostrophe de la ligne suivante
'Debug VMME

Source / Exemple :


Option Explicit

Private Sub Form_Load()
'Exemple d'application pratique
Dim Cours(6), Njours
Cours(1) = 1525
Cours(2) = 1460
Cours(3) = 1256
Cours(4) = 1246
Cours(5) = 1196
Cours(6) = 1254
Njours = 6
Debug.Print Moyenne_Mobile_Exponentielle(Cours(), Njours)
End

End Sub

Public Function Moyenne_Mobile_Exponentielle(TDD(), Njours)
Dim Alpha As Double, Beta As Double, I As Long, VMME As Double, NDC As Long
Dim FormatChiffre As String

'Vérifie le nombre de chiffre dans le nombre
NDC = 1
For I = 1 To Njours
If Len(Str(TDD(I))) > NDC Then
FormatChiffre = String(Len(Str(TDD(I))), "#")
NDC = Len(Str(TDD(I)))
End If
Next

Alpha = CDbl(Format(2 / Njours, "#.##"))
Beta = CDbl(Format(1 - Alpha, "#.##"))
VMME = CDbl(Format((TDD(1) * Beta) + (TDD(2) * Alpha), FormatChiffre))
For I = 3 To Njours
'Debug  VMME
VMME = CDbl(Format(VMME * Beta + (TDD(I) * Alpha), FormatChiffre))
'Debug  VMME
Next
Moyenne_Mobile_Exponentielle = VMME

End Function

Conclusion :


Normalement il n'y a pas de bug. Maintenant si quelqu'un arrive à planté le programme, soyez gentils tous ! Déposez un message ou des messages.

Je remercie Les Echos, Edubourse, et ainsi que Monsieur CHAOUCHE Keltoum pour m'avoir donné l'idée de chercher la moyenne mobile exponentielle grâce à sa thése sur l'Approche multifractale de la modélisation stochastique en hydrologie.
Pour ceux qui s'y intéressent je vous donne son lien
http://pastel.rilk.com/archive/00000097/00/index.html

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.