private void UpdateManagerFrames(DateTime currentDate) { foreach (var manager in managers.Values) { var trimmedDate = currentDate.Trim(manager.Period); while (manager.LastAddedFrame is null || manager.LastAddedFrame.IsExpired(trimmedDate)) { var nextFrameStartDate = manager.LastAddedFrame?.StartTime.GetNextFrameDate(manager.Period) ?? trimmedDate; var closePrice = manager.LastAddedFrame?.Close ?? 0; var nextFrame = new PriceHistoryFrame(nextFrameStartDate, manager.Period, manager.Market, closePrice); manager.RegisterNewFrame(nextFrame); } } }
public static PriceHistoryFrameModel ToFrameModel(this PriceHistoryFrame frame) { if (frame is null) { throw new ArgumentNullException(nameof(frame)); } var id = PriceHistoryExtensions.EncodeId(frame.Market, (int)frame.Period, (int)((DateTimeOffset)frame.StartTime).ToUnixTimeSeconds()); return(new PriceHistoryFrameModel { Id = id, Open = frame.Open, Close = frame.Close, Low = frame.Low, High = frame.High, BaseVolume = frame.BaseVolume, CounterVolume = frame.CounterVolume }); }