Расчет экспоненциального скользящего среднего в очереди в C #

У меня есть простой класс для вычисления скользящего среднего значений, которые я добавляю к нему. Я использую его так:

MovingAverage ma = new MovingAverage();
ma.push(value1);
ma.push(value2);
... 
Console.Writeline(average.Average);

//the class
public class MovingAverage
{
    public int Period = 5;
    private Queue<double> Quotes = new Queue<double>();

    public void Push(double quote)
    {
        if (Quotes.Count == Period)
            Quotes.Dequeue();
        Quotes.Enqueue(quote);

    }
    public void Clear()
    {
        Quotes.Clear();
    }
    public double Average { get { if (Quotes.Count == 0) return 0; return Quotes.Average(); } }
    public double ExponentialMovingAverage
    {
        get
        {
            ???
        }
    }
}

Я хотел бы расширить этот класс, чтобы он также возвращал ExponentialMovingAverage. Как бы вы написали return Exponential Average для элементов в очереди в Quotes?

Я понимаю, что вам нужно будет добавить свойство Alpha к классу, но я не уверен, как выполнить математические вычисления для вычисления.

8
задан Joshua 9 December 2011 в 18:28
поделиться