Tôi có một lớp đơn giản để tính giá trị trung bình di chuyển của các giá trị mà tôi thêm vào. Tôi sử dụng nó như sau:Tính trung bình di chuyển theo hàm mũ trên một hàng đợi trong 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
{
???
}
}
}
Tôi muốn mở rộng lớp này cũng trả lại ExponentialMovingAverage. Làm thế nào bạn có thể viết trả về giá trị trung bình theo hàm mũ của các mục được xếp hàng trong báo giá?
Tôi nhận ra rằng bạn sẽ cần thêm thuộc tính Alpha vào lớp nhưng tôi không chắc chắn cách hoàn thành phép tính cho phép tính.
alpha là undefined. Bạn đã làm gì cho điều đó? – Levitikon
@Levitikon: Xem [Exponential_moving_average] (https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average). "Hệ số α đại diện cho mức độ giảm trọng số, một yếu tố làm trơn không đổi giữa 0 và 1. Một α cao hơn giảm giá các quan sát cũ hơn nhanh hơn." – Ani