Berechnen des exponentiellen gleitenden Durchschnitts in einer Warteschlange in C #

8

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.

    
Joshua 09.12.2011, 18:28
quelle

3 Antworten

14

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.

    
Ani 09.12.2011, 18:34
quelle
3

Sie benötigen keine Warteschlange für einen Exponential Moving Average, da Sie nur den vorherigen EMA verfolgen müssen.

%Vor%     
Matt Wolf 28.10.2016 09:31
quelle
3

Hier ist eine minimale Version von @ MattWolfs Antwort mit einer etwas anderen API und mit C # 7.

%Vor%     
Drew Noakes 19.05.2017 15:15
quelle

Tags und Links