У меня есть простой класс для вычисления скользящего среднего значений, которые я добавляю к нему. Я использую его так:
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 к классу, но я не уверен, как выполнить математические вычисления для вычисления.