/* * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals. * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using QuantConnect.Util; using QuantConnect.Interfaces; using QuantConnect.Configuration; using QuantConnect.Data.Fundamental; namespace QuantConnect.Data.UniverseSelection { /// /// Fundamental data provider service /// public static class FundamentalService { private static IFundamentalDataProvider _fundamentalDataProvider; /// /// Initializes the service /// /// The data provider instance to use /// True if running in live mode public static void Initialize(IDataProvider dataProvider, bool liveMode) { Initialize(dataProvider, Config.Get("fundamental-data-provider", nameof(CoarseFundamentalDataProvider)), liveMode); } /// /// Initializes the service /// /// The data provider instance to use /// The fundamental data provider /// True if running in live mode public static void Initialize(IDataProvider dataProvider, string fundamentalDataProvider, bool liveMode) { Initialize(dataProvider, Composer.Instance.GetExportedValueByTypeName(fundamentalDataProvider), liveMode); } /// /// Initializes the service /// /// The data provider instance to use /// The fundamental data provider /// True if running in live mode public static void Initialize(IDataProvider dataProvider, IFundamentalDataProvider fundamentalDataProvider, bool liveMode) { _fundamentalDataProvider = fundamentalDataProvider; _fundamentalDataProvider.Initialize(dataProvider, liveMode); } /// /// Will fetch the requested fundamental information for the requested time and symbol /// /// The expected data type /// The time to request this data for /// The symbol instance /// The name of the fundamental property /// The fundamental information public static T Get(DateTime time, Symbol symbol, FundamentalProperty name) => Get(time, symbol.ID, name); /// /// Will fetch the requested fundamental information for the requested time and symbol /// /// The expected data type /// The time to request this data for /// The security identifier /// The name of the fundamental property /// The fundamental information public static T Get(DateTime time, SecurityIdentifier securityIdentifier, FundamentalProperty name) { return _fundamentalDataProvider.Get(time.Date, securityIdentifier, name); } } }