私が追加する値の移動平均を計算するためのシンプルなクラスがあります。私はこのようにそれを使用します。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を返すために、このクラスを拡張したいと思います。どのようにしてQuotesのQueued項目のExponential Averageを返しますか?
クラスにAlphaプロパティを追加する必要があることがわかりましたが、計算の計算方法はわかりません。
アルファが定義されていないC#を使用します。あなたはそれのために何を決めましたか? – Levitikon
@Levitikon:[Exponential_moving_average](https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average)を参照してください。係数αは、0と1との間の一定の平滑化係数である重み付けの減少の程度を表す。αが大きいほど、より古い観察がより迅速に行われる。 – Ani