Я пытаюсь заполнить очередь скользящих средних, но получаю ту же дату и закрываю все объекты в очереди скользящих средних.Я застрял, как не получить ссылку, указывающую на один и тот же объект, вместо получения текущего значения в объекте и помещения этого значения в очередь.
public class MA
{
public static Queue<DateClose> MAMethod(Queue<DateClose> queue,
Deque<DateClose> firstMASample, int period)
{
Deque<DateClose> sample = new Deque<DateClose>(firstMASample.ToArray());
Queue<DateClose> movingAverageQueue = new Queue<DateClose>(queue.Count() + 1);
// get the last item or initial MA value from the queue
DateClose mA = sample.RemoveFromBack();
DateClose dateClose = null;
decimal sub = 0;
DateClose add = null;
//put the initial Ma value on the movingAverageQueue
movingAverageQueue.Enqueue(mA);
foreach (DateClose d in queue.ToList())
{
dateClose = sample.RemoveFromFront();
sub = dateClose.Close;
// subtract previous closing from new current MA
mA.Close = mA.Close - sub/period;
// add the new closing to new current MA
add = d;
sample.AddToBack(d);
mA.Close = mA.Close + add.Close/period;
mA.Date = add.Date;
movingAverageQueue.Enqueue(mA);
queue.Dequeue();
}
return movingAverageQueue;
}
}
movingAverageQueue имеет все те же значения Date и Close.