public void Add(FixedIncomeInterDayTimeBarCollection value) { if (value == null) { this._logger.LogInformation("UniverseFixedIncomeInterDayCache was asked to add null. returning"); return; } this._logger.LogInformation( $"UniverseFixedIncomeInterDayCache adding {value.Epoch} - {value.Exchange?.MarketIdentifierCode}"); if (this._latestExchangeFrameBook.ContainsKey(value.Exchange.MarketIdentifierCode)) { this._latestExchangeFrameBook.Remove(value.Exchange.MarketIdentifierCode); this._latestExchangeFrameBook.Add(value.Exchange.MarketIdentifierCode, value); } else { this._latestExchangeFrameBook.Add(value.Exchange.MarketIdentifierCode, value); } if (!this._marketHistory.ContainsKey(value.Exchange.MarketIdentifierCode)) { var history = new FixedIncomeInterDayHistoryStack(); history.Add(value, value.Epoch); this._marketHistory.TryAdd(value.Exchange.MarketIdentifierCode, history); } else { this._marketHistory.TryGetValue(value.Exchange.MarketIdentifierCode, out var history); history?.Add(value, value.Epoch); history?.ArchiveExpiredActiveItems(value.Epoch); } }
public void Add(FixedIncomeInterDayTimeBarCollection frame, DateTime currentTime) { if (frame == null) { return; } lock (this._lock) { // Ensure all contents have the same date (may not work well in pacific zone with the international date line ++ trading hours - should be OK for Japan/Tokyo and USA/SanFran) - RT if (currentTime.Date == frame.Epoch.Date) { this._activeStack.Push(frame); } } }
private async Task <IReadOnlyCollection <FixedIncomeInterDayTimeBarCollection> > GetTestFixedIncomeInterDayData(DateTime startUtc, DateTime endUtc) { var getInterdayTimeBars = await this.refinitivTickPriceHistoryApi.GetInterdayTimeBars(startUtc, endUtc); var markets = new List <Market> { new Market("", "OTC", "OTC", MarketTypes.OTC), new Market("", "RDFI", "RDFI", MarketTypes.OTC) }; var items = new List <FixedIncomeInterDayTimeBarCollection>(); foreach (var market in markets) { var groups = getInterdayTimeBars .GroupBy(x => x.TimeBar.EpochUtc.Date) // grouping by Date for end of day prices .OrderBy(x => x.Key); foreach (var group in groups) { var date = group.Key; var list = group.Select(x => new FixedIncomeInstrumentInterDayTimeBar( new FinancialInstrument { Identifiers = new InstrumentIdentifiers { Ric = x.SecurityIdentifiers.Ric } }, new DailySummaryTimeBar( null, x.TimeBar.CurrencyCode, new IntradayPrices( new Money(Convert.ToDecimal(x.TimeBar.Open), new Currency(x.TimeBar.CurrencyCode)), new Money(Convert.ToDecimal(x.TimeBar.CloseAsk), new Currency(x.TimeBar.CurrencyCode)), // ??? new Money(Convert.ToDecimal(x.TimeBar.High), new Currency(x.TimeBar.CurrencyCode)), new Money(Convert.ToDecimal(x.TimeBar.Low), new Currency(x.TimeBar.CurrencyCode)) ), null, new Volume(), date ), date, market)).ToList(); var fixedIncomeInterDayTimeBarCollection = new FixedIncomeInterDayTimeBarCollection(market, date, list); items.Add(fixedIncomeInterDayTimeBarCollection); } } return(items.AsReadOnly()); //var items = new List<FixedIncomeInterDayTimeBarCollection>(); //var testDate = new DateTime(2018, 04, 10, 00, 00, 00, DateTimeKind.Utc); //if (testDate >= startUtc && testDate <= endUtc) //{ // var market = new Market("", "OTC", "OTC", MarketTypes.OTC); // items.Add(new FixedIncomeInterDayTimeBarCollection( // market, // testDate, // new List<FixedIncomeInstrumentInterDayTimeBar> // { // new FixedIncomeInstrumentInterDayTimeBar( // new FinancialInstrument // { // Identifiers = new InstrumentIdentifiers // { // Ric = "GB10YT=RR", // UnderlyingRic ?? // } // }, // new DailySummaryTimeBar( // 0, // "GBX", // new IntradayPrices( // new Money(200, new Currency("GBX")), // new Money(201, new Currency("GBX")), // new Money(202, new Currency("GBX")), // new Money(203, new Currency("GBX")) // ), // null, // new Volume(), // testDate // ), // testDate, // market) // } // )); //} //return items; }