Exemple #1
0
        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;
        }