Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/10/2016, à 13:03

rooky06

Lazarus : moyenne mobile exponentielle

Bonjour
Je suis debutant et essaye de calculer une moyenne mobile exponentielle
Je parviens à le faire dans le cas de deux valeurs

function EMA(periode: integer; tab: array of double): double;
begin
  Result := ((tab[high(tab)] - tab[high(tab) - 1]) * (2 / (periode + 1))) +
    tab[high(tab) - 1];
end;

Mais je ne sais pas comment faire une boucle avec toutes les valeurs de mon tableau.
J'ai trouvé la définition ici https://fr.wikipedia.org/wiki/Moyenne_g … onentielle mais je debute et ai du mal à developper la boucle

J ai besoin de votre aide

Merci à tous

Hors ligne

#2 Le 21/10/2016, à 13:11

Watael

Re : Lazarus : moyenne mobile exponentielle

salut,

sur le wiki freePascal.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 21/10/2016, à 21:42

rooky06

Re : Lazarus : moyenne mobile exponentielle

Merci

J ai donc fait ça, cela est fonctionnel mais je n ai pas moyen de savoir si le resultat est correct car je n ai pas trouvé d exemple concret

var
  last, EMA: double;
  I: integer;
 
begin
  last := tab[0];
 
  for I := 1 to high(tab) do
  begin
    EMA := ((tab[I] - last) * (2 / (periode + 1))) + last;
    last := EMA;
  end;
 
  Result := EMA;

Dernière modification par rooky06 (Le 21/10/2016, à 21:43)

Hors ligne