Ich habe eine einfache Klasse, um den gleitenden Durchschnitt der Werte zu berechnen, die ich hinzufüge. Ich benutze es so:
%Vor%Ich möchte diese Klasse erweitern, um auch den ExponentialMovingAverage zurückzugeben. Wie würden Sie den Exponential-Durchschnitt der in Warteschlange eingereihten Elemente in Anführungszeichen zurückgeben?
Mir ist klar, dass Sie der Klasse eine Alpha-Eigenschaft hinzufügen müssen, aber ich bin mir nicht sicher, wie ich die Berechnung berechnen soll.
Wie wäre es mit LINQ:
%Vor%Ich möchte darauf hinweisen, dass dies für Echtzeit-Finanzdaten sehr ineffizient ist. Ein viel besserer Weg wäre es, den vorherigen EMA-Wert zwischenzuspeichern und ihn für ein neues Zitat mit der obigen (Konstanten) -Recurrence-Formel zu aktualisieren.
Hier ist eine minimale Version von @ MattWolfs Antwort mit einer etwas anderen API und mit C # 7.
%Vor%